1DanielLee9

AddCashbankIn

Sep 8th, 2020 (edited)
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 20.39 KB | None | 0 0
  1. package org.jleaf.ukmappsbo.bo.journal;
  2.  
  3. import java.security.SecureRandom;
  4. import java.util.ArrayList;
  5. import java.util.List;
  6.  
  7. import javax.persistence.Query;
  8.  
  9. import org.jleaf.core.BusinessFunction;
  10. import org.jleaf.core.BusinessTransaction;
  11. import org.jleaf.core.CoreException;
  12. import org.jleaf.core.DefaultBusinessTransaction;
  13. import org.jleaf.core.Dto;
  14. import org.jleaf.core.GeneralConstants;
  15. import org.jleaf.core.annotation.Info;
  16. import org.jleaf.core.annotation.InfoIn;
  17. import org.jleaf.core.annotation.InfoOut;
  18. import org.jleaf.core.dao.QueryBuilder;
  19. import org.jleaf.erp.master.bo.partner.IsPartnerExistsByIndex;
  20. import org.jleaf.ukmappsbo.UkmConstants;
  21. import org.jleaf.ukmappsbo.UkmExceptionConstants;
  22. import org.jleaf.ukmappsbo.dao.CashbankBalanceDao;
  23. import org.jleaf.ukmappsbo.dao.JournalTrxDao;
  24. import org.jleaf.ukmappsbo.dao.JournalTrxItemDao;
  25. import org.jleaf.ukmappsbo.entity.CashbankBalance;
  26. import org.jleaf.ukmappsbo.entity.JournalTrx;
  27. import org.jleaf.ukmappsbo.entity.JournalTrxItem;
  28. import org.jleaf.util.DtoUtil;
  29. import org.jleaf.util.GsonUtil;
  30. import org.slf4j.Logger;
  31. import org.slf4j.LoggerFactory;
  32. import org.springframework.beans.factory.annotation.Autowired;
  33. import org.springframework.beans.factory.annotation.Qualifier;
  34. import org.springframework.stereotype.Service;
  35.  
  36. import ch.qos.logback.core.CoreConstants;
  37.  
  38. /**
  39.  * @author Ephraim 5 juni 2020
  40.  */
  41.  
  42. @Service
  43. @InfoIn(value = { @Info(name = "userLoginId", description = "user Login Id", type = Long.class),
  44.         @Info(name = "roleLoginId", description = "roleLoginId", type = Long.class),
  45.         @Info(name = "tenantLoginId", description = "tenantLoginId", type = Long.class),
  46.         @Info(name = "datetime", description = "datetime", type = String.class),
  47.         @Info(name = "docNo", description = "doc No", type = String.class),
  48.         @Info(name = "docDate", description = "doc Date", type = String.class),
  49.         @Info(name = "ouBuId", description = "ouBu Id", type = Long.class),
  50.         @Info(name = "partnerId", description = "partner Id", type = Long.class),
  51.         @Info(name = "partnerCode", description = "partner Code", type = String.class),
  52.         @Info(name = "partnerName", description = "partner Name", type = String.class),
  53.         @Info(name = "cashbankId", description = "cashbank Id", type = Long.class),
  54.         @Info(name = "cashbankCode", description = "cashbank Code", type = String.class),
  55.         @Info(name = "cashbankName", description = "cashbank Name", type = String.class),
  56.         @Info(name = "remark", description = "remark", type = String.class),
  57.         @Info(name = "amount", description = "amount", type = Double.class),
  58.         @Info(name = "arDocNo", description = "ar Doc No", type = String.class),
  59.         @Info(name = "arDocDate", description = "ar Doc Date", type = String.class),
  60.         @Info(name = "currCode", description = "curr Code", type = String.class),
  61.         @Info(name = "arAmount", description = "ar Amount", type = Double.class),
  62.         @Info(name = "activityId", description = "activity Id", type = Long.class),
  63.         @Info(name = "activityCode", description = "activity Code", type = String.class),
  64.         @Info(name = "activityName", description = "activity Name", type = String.class),
  65.         @Info(name = "flgPayment", description = "flg Payment", type = String.class),
  66.  
  67. })
  68. @InfoOut(value = { @Info(name = "summaryCashbankIn", description = "summary Cashbank In", type = Object.class), })
  69. public class AddCashBankIn extends DefaultBusinessTransaction implements BusinessTransaction {
  70.     Logger log = LoggerFactory.getLogger(getClass());
  71.  
  72.     @Autowired
  73.     JournalTrxDao journalTrxDao;
  74.  
  75.     @Autowired
  76.     JournalTrxItemDao journalTrxItemDao;
  77.    
  78.     @Autowired
  79.     CashbankBalanceDao cashbankBalanceDao;
  80.  
  81.     @Autowired
  82.     @Qualifier("findCashBankById")
  83.     private BusinessFunction findCashBankById;
  84.  
  85.     @Autowired
  86.     @Qualifier("findPartnerById")
  87.     private BusinessFunction findPartnerById;
  88.  
  89.     @Autowired
  90.     @Qualifier("findActivityById")
  91.     private BusinessFunction findActivityById;
  92.  
  93.     @Autowired
  94.     @Qualifier("isPartnerExistsByIndex")
  95.     private BusinessFunction isPartnerExistsByIndex;
  96.  
  97.     @Autowired
  98.     @Qualifier("isCashBankExistsByIndex")
  99.     private BusinessFunction isCashbankExistsByIndex;
  100.  
  101.     @Autowired
  102.     @Qualifier("isActivityExistsByIndex")
  103.     private BusinessFunction isActivityExistsByIndex;
  104.    
  105.     @Autowired
  106.     private IsJournalTrxExistsByIndex isJournalTrxExistsByIndex;
  107.    
  108.     private static volatile SecureRandom numberGenerator = null;
  109.     private static final long MSB = 0x8000000000000000L;
  110.  
  111.     @Override
  112.     public String getDescription() {
  113.         return "Add Product";
  114.     }
  115.  
  116.     @Override
  117.     public Dto prepare(Dto dto, Dto originalDto) throws Exception {
  118.         log.info("============Input{}===============", dto);
  119.  
  120.         Long userLoginId = dto.getLong("userLoginId");
  121.         Long roleLoginId = dto.getLong("roleLoginId");
  122.         Long tenantLoginId = dto.getLong("tenantLoginId");
  123.         String datetime = dto.getString("datetime");
  124.         String flgPayment = dto.getString("flgPayment");
  125.  
  126.         String docNo = dto.getString("docNo");
  127.         String docDate = dto.getString("docDate");
  128.         Long ouBuId = dto.getLong("ouBuId");
  129.         Long partnerId = dto.getLong("partnerId");
  130.         String partnerCode = dto.getString("partnerCode");
  131.         String partnerName = dto.getString("partnerName");
  132.         Long cashbankId = dto.getLong("cashbankId");
  133.         String cashbankCode = dto.getString("cashbankCode");
  134.         String cashbankName = dto.getString("cashbankName");
  135.         String remark = dto.getString("remark");
  136.         Double amount = dto.getDouble("amount");
  137.         String arDocNo = dto.getString("arDocNo");
  138.         String arDocDate = dto.getString("arDocDate");
  139.         String currCode = dto.getString("currCode");
  140.         Double arAmount = dto.getDouble("arAmount");
  141.         Long activityId = dto.getLong("activityId");
  142.         String activityCode = dto.getString("activityCode");
  143.         String activityName = dto.getString("activityName");
  144.  
  145.         Dto inputIsPartnerExistsByIndex = new Dto();
  146.         inputIsPartnerExistsByIndex.put("tenantId", tenantLoginId);
  147.         inputIsPartnerExistsByIndex.put("code", partnerCode);
  148.  
  149.         Dto outputIsPartnerExistsByIndex = isPartnerExistsByIndex.execute(inputIsPartnerExistsByIndex);
  150.         log.info("=========outputIsPartnerExistsByIndex{}==================", outputIsPartnerExistsByIndex);
  151.         if (!outputIsPartnerExistsByIndex.getBoolean("exists")) {
  152.             throw new CoreException(UkmExceptionConstants.PARTNER_NOT_EXISTS, partnerCode, partnerName);
  153.         }
  154.  
  155.         Dto inputIsCashBankExistsByIndex = new Dto();
  156.         inputIsCashBankExistsByIndex.put("tenantId", tenantLoginId);
  157.         inputIsCashBankExistsByIndex.put("code", cashbankCode);
  158.  
  159.         Dto outputIsCashBankExistsByIndex = isCashbankExistsByIndex.execute(inputIsCashBankExistsByIndex);
  160.         log.info("=========outputIsCashBankExistsByIndex{}==================", outputIsCashBankExistsByIndex);
  161.         if (!outputIsCashBankExistsByIndex.getBoolean("exists") && cashbankId != -99) {
  162.             throw new CoreException(UkmExceptionConstants.CASHBANK_NOT_EXISTS, cashbankCode, cashbankName);
  163.         }
  164.  
  165.         Dto inputIsActivityExistsByIndex = new Dto();
  166.         inputIsActivityExistsByIndex.put("tenantId", tenantLoginId);
  167.         inputIsActivityExistsByIndex.put("code", activityCode);
  168.  
  169.         Dto outputIsActivityExistsByIndex = isActivityExistsByIndex.execute(inputIsActivityExistsByIndex);
  170.         log.info("=========outputIsActivityExistsByIndex{}==================", outputIsActivityExistsByIndex);
  171.         if (!outputIsActivityExistsByIndex.getBoolean("exists") && activityId != -99) {
  172.             throw new CoreException(UkmExceptionConstants.ACTIVITY_NOT_EXISTS, activityCode, activityName);
  173.         }
  174.  
  175.         Dto inputFindCashbankByIdDebit = new Dto();
  176.         inputFindCashbankByIdDebit.put("id", cashbankId);
  177.  
  178.         Dto outputFindCashbankByIdDebit = findCashBankById.execute(inputFindCashbankByIdDebit);
  179.  
  180.         Long coaIdDebit = outputFindCashbankByIdDebit.getLong("coaId");
  181.         String cashbankCurrCode = outputFindCashbankByIdDebit.getString("currencyCode");
  182.  
  183.         Dto journalTrxDto = new Dto();
  184.         journalTrxDto.put("tenantId", tenantLoginId);
  185.         journalTrxDto.put("journalType", UkmConstants.TYPE_CASHBANK_IN);
  186.         journalTrxDto.put("docTypeId", UkmConstants.DOC_TYPE_CASH_IN);
  187.         journalTrxDto.put("docId", UkmConstants.EMPTY_ID);
  188.         journalTrxDto.put("docNo", docNo);
  189.         journalTrxDto.put("docDate", docDate);
  190.         journalTrxDto.put("ouBuId", ouBuId);
  191.         journalTrxDto.put("ouSubBuId", UkmConstants.EMPTY_ID);
  192.         journalTrxDto.put("ouBranchId", UkmConstants.EMPTY_ID);
  193.         journalTrxDto.put("partnerId", partnerId);
  194.         journalTrxDto.put("cashbankId", cashbankId);
  195.         journalTrxDto.put("warehouseId", UkmConstants.EMPTY_ID);
  196.         journalTrxDto.put("extDocNo", CoreConstants.EMPTY_STRING);
  197.         journalTrxDto.put("extDocDate", CoreConstants.EMPTY_STRING);
  198.         journalTrxDto.put("refDocTypeId", UkmConstants.EMPTY_ID);
  199.         journalTrxDto.put("refId", UkmConstants.EMPTY_ID);
  200.         journalTrxDto.put("refDocNo", CoreConstants.EMPTY_STRING);
  201.         journalTrxDto.put("refDocDate", CoreConstants.EMPTY_STRING);
  202.         journalTrxDto.put("dueDate", CoreConstants.EMPTY_STRING);
  203.         journalTrxDto.put("currCode", currCode);
  204.         journalTrxDto.put("remark", remark);
  205.         journalTrxDto.put("statusDoc", UkmConstants.DRAFT);
  206.         journalTrxDto.put("workflowStatus", CoreConstants.EMPTY_STRING);
  207.         journalTrxDto.put("flgFix", UkmConstants.NO);
  208.         journalTrxDto.put("flgValidate", UkmConstants.YES);
  209.         this.prepareInsertAudit(journalTrxDto, userLoginId, datetime);
  210.         this.prepareUpdateAudit(journalTrxDto, userLoginId, datetime);
  211.  
  212.         Long refDocTypeId = GeneralConstants.NULL_REF_VALUE_LONG;
  213.         Long refId = GeneralConstants.NULL_REF_VALUE_LONG;
  214.        
  215.         Dto journalTrxItemDebit = new Dto();
  216.         journalTrxItemDebit.put("tenantId", tenantLoginId);
  217.         journalTrxItemDebit.put("journalTrxId", UkmConstants.EMPTY_ID);
  218.         journalTrxItemDebit.put("lineNo", 1L);//
  219.         journalTrxItemDebit.put("partnerId", partnerId);
  220.         journalTrxItemDebit.put("productId", UkmConstants.EMPTY_ID);
  221.         journalTrxItemDebit.put("cashbankId", cashbankId);
  222.         journalTrxItemDebit.put("ouRcId", UkmConstants.EMPTY_ID);
  223.         journalTrxItemDebit.put("segmenId", UkmConstants.EMPTY_ID);
  224.         journalTrxItemDebit.put("signJournal", UkmConstants.SIGN_JOURNAL_DEBIT);
  225.         journalTrxItemDebit.put("flgSourceCoa", UkmConstants.FLG_SOURCE_COA_CASHBANK);
  226.         journalTrxItemDebit.put("activityGlId", UkmConstants.EMPTY_ID);
  227.         journalTrxItemDebit.put("coaId", coaIdDebit);
  228.         journalTrxItemDebit.put("glCurrCode", currCode);
  229.         if (flgPayment.equals(UkmConstants.YES)) {
  230.             Dto param = new Dto();
  231.             param.put("docNo", arDocNo);
  232.             param.put("docDate", arDocDate);
  233.             param.put("tenantId", tenantLoginId);
  234.             param.put("docTypeId", UkmConstants.DOC_TYPE_ID_POS);
  235.             param.put("ouSubBuId", UkmConstants.EMPTY_ID);
  236.             param.put("ouBuId", ouBuId);
  237.             param.put("ouBranchId", UkmConstants.EMPTY_ID);
  238.            
  239.             Dto checkRefDto = isJournalTrxExistsByIndex.execute(param);
  240.             log.info("==checkRefDto{}==",checkRefDto);
  241.             if(checkRefDto.getBoolean("exists")) {
  242.                 refDocTypeId = checkRefDto.getDto("journalTrxDto").getLong("docTypeId");
  243.                 refId = checkRefDto.getDto("journalTrxDto").getLong("id");
  244.                        
  245.             }else {
  246.                 throw new Exception("Dokumen Piutang Tidak Ditemukan");
  247.             }
  248.            
  249.             journalTrxItemDebit.put("refDocTypeId", refDocTypeId);
  250.             journalTrxItemDebit.put("refId", refId);
  251.  
  252.         } else {
  253.             journalTrxItemDebit.put("refDocTypeId", UkmConstants.EMPTY_ID);
  254.             journalTrxItemDebit.put("refId", UkmConstants.EMPTY_ID);
  255.         }
  256.         journalTrxItemDebit.put("currCode", currCode);
  257.         journalTrxItemDebit.put("qty", UkmConstants.ZERO_QTY);
  258.         journalTrxItemDebit.put("uomId", UkmConstants.EMPTY_ID);
  259.         journalTrxItemDebit.put("amount", amount);
  260.         journalTrxItemDebit.put("journalDate", docDate);
  261.         journalTrxItemDebit.put("typeRate", UkmConstants.TYPE_RATE_COMMERCIAL);
  262.         journalTrxItemDebit.put("numeratorRate", 1);
  263.         journalTrxItemDebit.put("denominatorRate", 1);
  264.         journalTrxItemDebit.put("glCurrCode", currCode);
  265.         journalTrxItemDebit.put("glAmount", amount);
  266.         journalTrxItemDebit.put("journalDesc", UkmConstants.DESC_CASHBANK_IN);
  267.         journalTrxItemDebit.put("remark", remark);
  268.         journalTrxItemDebit.put("flgChange", UkmConstants.NO);
  269.         journalTrxItemDebit.put("ouBranchId", UkmConstants.EMPTY_ID);
  270.         journalTrxItemDebit.put("ouSubBuId", UkmConstants.EMPTY_ID);
  271.         journalTrxItemDebit.put("price", UkmConstants.ZERO_QTY);
  272.         journalTrxItemDebit.put("discountPrice", UkmConstants.ZERO_QTY);
  273.         this.prepareInsertAudit(journalTrxItemDebit, userLoginId, datetime);
  274.         this.prepareUpdateAudit(journalTrxItemDebit, userLoginId, datetime);
  275.  
  276.         Dto journalTrxItemCredit = new Dto();
  277.         journalTrxItemCredit.put("tenantId", tenantLoginId);
  278.         journalTrxItemCredit.put("journalTrxId", UkmConstants.EMPTY_ID);
  279.         journalTrxItemCredit.put("lineNo", 2L);
  280.         journalTrxItemCredit.put("partnerId", partnerId);
  281.         journalTrxItemCredit.put("productId", UkmConstants.EMPTY_ID);
  282.         journalTrxItemCredit.put("cashbankId", UkmConstants.EMPTY_ID);
  283.         journalTrxItemCredit.put("ouRcId", UkmConstants.EMPTY_ID);
  284.         journalTrxItemCredit.put("segmenId", UkmConstants.EMPTY_ID);
  285.         journalTrxItemCredit.put("signJournal", UkmConstants.SIGN_JOURNAL_CREDIT);
  286.         journalTrxItemCredit.put("currCode", currCode);
  287.         journalTrxItemCredit.put("qty", UkmConstants.ZERO_QTY);
  288.         journalTrxItemCredit.put("uomId", UkmConstants.EMPTY_ID);
  289.         journalTrxItemCredit.put("journalDate", docDate);
  290.         journalTrxItemCredit.put("typeRate", UkmConstants.TYPE_RATE_COMMERCIAL);
  291.         journalTrxItemCredit.put("ouBranchId", UkmConstants.EMPTY_ID);
  292.         journalTrxItemCredit.put("ouSubBuId", UkmConstants.EMPTY_ID);
  293.         journalTrxItemCredit.put("price", UkmConstants.ZERO_QTY);
  294.         journalTrxItemCredit.put("discountPrice", UkmConstants.ZERO_QTY);
  295.         journalTrxItemCredit.put("numeratorRate", 1);
  296.         journalTrxItemCredit.put("denominatorRate", 1);
  297.         journalTrxItemCredit.put("glCurrCode", currCode);
  298.         journalTrxItemCredit.put("remark", remark);
  299.         journalTrxItemCredit.put("flgChange", UkmConstants.NO);
  300.         journalTrxItemCredit.put("amount", arAmount);
  301.         journalTrxItemCredit.put("glAmount", arAmount);
  302.         this.prepareInsertAudit(journalTrxItemCredit, userLoginId, datetime);
  303.         this.prepareUpdateAudit(journalTrxItemCredit, userLoginId, datetime);
  304.  
  305.         if (flgPayment.equals(UkmConstants.YES)) {
  306.             if(amount > arAmount){
  307.                 throw new Exception("Uang Yang Dibayarkan Tidak Boleh Lebih Besar Dari Jumlah Piutang.");
  308.             }          
  309.             journalTrxItemCredit.put("flgSourceCoa", UkmConstants.FLG_SOURCE_COA_SYSTEM);
  310.             journalTrxItemCredit.put("activityGlId", UkmConstants.EMPTY_ID);
  311.             journalTrxItemCredit.put("coaId", getCoaIdByPartner(partnerId, tenantLoginId));
  312.             journalTrxItemCredit.put("journalDesc", UkmConstants.DESC_AR);
  313.             journalTrxItemCredit.put("refDocTypeId", refDocTypeId);
  314.             journalTrxItemCredit.put("refId", refId);
  315.  
  316.         } else {
  317.  
  318.             Dto inputFindActivityByIdCredit = new Dto();
  319.             inputFindActivityByIdCredit.put("id", activityId);
  320.  
  321.             Dto outputFindActivityByIdCredit = findActivityById.execute(inputFindActivityByIdCredit);
  322.             Long coaIdActivity = outputFindActivityByIdCredit.getLong("coaId");
  323.  
  324.             journalTrxItemCredit.put("flgSourceCoa", UkmConstants.FLG_SOURCE_COA_ACTIVITY);
  325.             journalTrxItemCredit.put("activityGlId", activityId);
  326.             journalTrxItemCredit.put("coaId", coaIdActivity);
  327.             journalTrxItemCredit.put("journalDesc", UkmConstants.DESC_AR_OTHER_REVENUE);
  328.             journalTrxItemCredit.put("refDocTypeId", UkmConstants.EMPTY_ID);
  329.             journalTrxItemCredit.put("refId", UkmConstants.EMPTY_ID);
  330.  
  331.         }
  332.  
  333.         Dto summaryCashbankIn = new Dto();
  334.         summaryCashbankIn.put("partnerId", partnerId);
  335.         summaryCashbankIn.put("partnerCode", partnerCode);
  336.         summaryCashbankIn.put("partnerName", partnerName);
  337.         summaryCashbankIn.put("cashbankId", cashbankId);
  338.         summaryCashbankIn.put("cashbankCode", cashbankCode);
  339.         summaryCashbankIn.put("cashbankName", cashbankName);
  340.         summaryCashbankIn.put("amount", amount);       
  341.        
  342.         dto.put("journalTrxDto", journalTrxDto);
  343.         dto.put("journalTrxItemDebitDto", journalTrxItemDebit);
  344.         dto.put("journalTrxItemCreditDto", journalTrxItemCredit);
  345.         dto.put("summaryCashbankInDto", summaryCashbankIn);
  346.  
  347.         return null;
  348.     }
  349.  
  350.     @Override
  351.     public Dto process(Dto dto, Dto originalDto) throws Exception {
  352.  
  353.         Dto journalTrxDto = dto.getDto("journalTrxDto");
  354.         Dto journalTrxItemDebitDto = dto.getDto("journalTrxItemDebitDto");
  355.         Dto journalTrxItemCreditDto = dto.getDto("journalTrxItemCreditDto");
  356.         Dto summaryCashbankInDto = dto.getDto("summaryCashbankInDto");
  357.  
  358.         JournalTrx journalTrx = GsonUtil.fromDto(journalTrxDto, JournalTrx.class);
  359.         journalTrxDao.persist(journalTrx);
  360.  
  361.         Long journalTrxId = journalTrx.getId();
  362.  
  363.         journalTrxItemDebitDto.put("journalTrxId", journalTrxId);
  364.         JournalTrxItem journalTrxItemDebit = GsonUtil.fromDto(journalTrxItemDebitDto, JournalTrxItem.class);
  365.         journalTrxItemDao.persist(journalTrxItemDebit);
  366.  
  367.         journalTrxItemCreditDto.put("journalTrxId", journalTrxId);
  368.         JournalTrxItem journalTrxItemCredit = GsonUtil.fromDto(journalTrxItemCreditDto, JournalTrxItem.class);
  369.         journalTrxItemDao.persist(journalTrxItemCredit);
  370.  
  371.         initCashbankIn(dto);
  372.        
  373.         summaryCashbankInDto.put("docNo", journalTrx.getDocNo());
  374.         summaryCashbankInDto.put("createDatetime", journalTrx.getCreateDateTime());
  375.  
  376.         return new Dto().put("summaryCashbankIn", summaryCashbankInDto);
  377.     }
  378.  
  379.     private Long getCoaIdByPartner(Long partnerId, Long tenantId) {
  380.  
  381.         QueryBuilder builder = new QueryBuilder();
  382.         builder.add("SELECT C.coa_id ").add(" FROM m_partner A")
  383.                 .add(" INNER JOIN m_partner_type B ON A.partner_id = B.partner_id AND B.group_partner='C'")
  384.                 .add(" INNER JOIN m_type_partner C ON B.type_partner_id = C.type_partner_id")
  385.                 .add(" WHERE A.partner_id = :partnerId AND A.tenant_id=:tenantId");
  386.  
  387.         Query q = journalTrxDao.createNativeQuery(builder.toString());
  388.  
  389.         q.setParameter("tenantId", tenantId);
  390.         q.setParameter("partnerId", partnerId);
  391.  
  392.         Long coaId = UkmConstants.EMPTY_ID;
  393.         try {
  394.             Object typeParter = q.getSingleResult();
  395.             coaId = Long.valueOf(typeParter.toString());
  396.         } catch (Exception e) {
  397.             return coaId;
  398.         }
  399.         return coaId;
  400.     }
  401.    
  402.     private Dto checkCashbankBalance(Long tenantId, Long ouId,Long cashbankId,String docDate) {
  403.         Dto output = new Dto();
  404.         List<Object[]> rBalance = new ArrayList<Object[]>();
  405.        
  406.         QueryBuilder builder = new QueryBuilder();
  407.         builder.add("SELECT")
  408.                 .add(" cashbank_balance_id,tenant_id,ou_id,cashbank_id,cash_bank_date,")
  409.                 .add(" rec_type,curr_code,amount,version,create_datetime,create_user_id,")
  410.                 .add(" update_datetime,update_user_id")
  411.                 .add(" FROM ").add(CashbankBalance.TABLE_NAME)
  412.                 .add(" WHERE tenant_id = :tenantId AND ou_id =:ouId")
  413.                 .add(" AND cash_bank_date = :date AND rec_type = :recType")
  414.                 .add(" AND cashbank_id = :cashbankId");
  415.  
  416.         Query q = journalTrxDao.createNativeQuery(builder.toString());
  417.         q.setParameter("tenantId", tenantId);
  418.         q.setParameter("ouId", ouId);
  419.         q.setParameter("date", docDate);
  420.         q.setParameter("recType", UkmConstants.REC_TYPE_DEBIT);
  421.         q.setParameter("cashbankId", cashbankId);
  422.        
  423.         rBalance = q.getResultList();
  424.         List<Dto> cashbankBalance = new ArrayList<Dto>();
  425.         boolean existing = false;
  426.         if(0 < rBalance.size()) {
  427.             existing=true;
  428.             cashbankBalance = DtoUtil.createDtoListFromArray(rBalance,
  429.                     "id","tenantId","ouId","cashbankId","cashBankDate",
  430.                     "recType","currCode","amount","version","createDatetime",
  431.                     "createUserId","updateDatetime","updateUserId");
  432.            
  433.             output.put("cashbankBalanceDto", cashbankBalance.get(0));
  434.         }
  435.        
  436.         output.put("exists", existing);
  437.        
  438.         return output;
  439.     }
  440.    
  441.     private void initCashbankIn(Dto dto){
  442.         QueryBuilder builder = new QueryBuilder();
  443.         builder.add(" SELECT cb_calculate_cashbank_balance( ");
  444.         builder.add(" :tenantId, ");
  445.         builder.add(" :sessionId, ");
  446.         builder.add(" :userId, ");
  447.         builder.add(" :ouId, ");
  448.         builder.add(" :cashbankId, ");
  449.         builder.add(" :flgCashbank, ");
  450.         builder.add(" :amount, ");
  451.         builder.add(" :datetime) ");
  452.        
  453.         Query query = journalTrxDao.createNativeQuery(builder.toString());
  454.         query.setParameter("tenantId", dto.getLong("tenantLoginId"));
  455.         query.setParameter("sessionId", unique());
  456.         query.setParameter("userId", dto.getLong("userLoginId"));
  457.         query.setParameter("ouId", dto.getLong("ouBuId"));
  458.         query.setParameter("cashbankId", dto.getLong("cashbankId"));
  459.         query.setParameter("flgCashbank", UkmConstants.REC_TYPE_DEBIT);
  460.         query.setParameter("amount", dto.getDouble("amount"));
  461.         query.setParameter("datetime", dto.getString("datetime"));
  462.         query.executeUpdate();
  463.        
  464.        
  465.     }
  466.    
  467.     private static String unique() {
  468.         SecureRandom ng = numberGenerator;
  469.         if (ng == null) {
  470.             numberGenerator = ng = new SecureRandom();
  471.         }
  472.  
  473.         return Long.toHexString(MSB | ng.nextLong()) + Long.toHexString(MSB | ng.nextLong());
  474.     }
  475. }
  476.  
Advertisement
Add Comment
Please, Sign In to add comment