1DanielLee9

AddNewTenant

Oct 5th, 2020 (edited)
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 32.60 KB | None | 0 0
  1. package org.jleaf.ukmappsbo.bo.tenant;
  2.  
  3. import org.jleaf.common.bo.combo.ValComboValueByCode;
  4. import org.jleaf.common.bo.role.FindRoleByName;
  5. import org.jleaf.common.bo.user.IsUserExistsByIndex;
  6. import org.jleaf.common.dao.*;
  7. import org.jleaf.common.entity.*;
  8. import org.jleaf.core.*;
  9. import org.jleaf.core.dao.QueryBuilder;
  10. import org.jleaf.erp.master.dao.AdminProcessLedgerDao;
  11. import org.jleaf.erp.master.dao.CashBankDao;
  12. import org.jleaf.erp.master.dao.CashBankOuDao;
  13. import org.jleaf.erp.master.dao.CoaDao;
  14. import org.jleaf.erp.master.dao.OutletRegistrationDao;
  15. import org.jleaf.erp.master.dao.WarehouseDao;
  16. import org.jleaf.erp.master.dao.WarehouseOuDao;
  17. import org.jleaf.erp.master.entity.CashBank;
  18. import org.jleaf.erp.master.entity.CashBankOu;
  19. import org.jleaf.erp.master.entity.Coa;
  20. import org.jleaf.erp.master.entity.OutletRegistration;
  21. import org.jleaf.erp.master.entity.Warehouse;
  22. import org.jleaf.erp.master.entity.WarehouseOu;
  23. import org.jleaf.ukmappsbo.UkmConstants;
  24. import org.jleaf.ukmappsbo.bo.user.IsUserExistByEmail;
  25. import org.jleaf.ukmappsbo.dao.OutletDao;
  26. import org.jleaf.ukmappsbo.entity.Outlet;
  27. import org.jleaf.util.DateUtil;
  28. import org.jleaf.util.GsonUtil;
  29. import org.jleaf.util.ValidationUtil;
  30. import org.json.simple.parser.Yytoken;
  31. import org.slf4j.Logger;
  32. import org.slf4j.LoggerFactory;
  33. import org.springframework.beans.factory.annotation.Autowired;
  34. import org.springframework.stereotype.Service;
  35.  
  36. import javax.persistence.Query;
  37.  
  38. import java.io.UnsupportedEncodingException;
  39. import java.math.BigInteger;
  40. import java.security.MessageDigest;
  41. import java.security.NoSuchAlgorithmException;
  42. import java.util.List;
  43.  
  44. /**
  45.  * @author Fikri 20 Mei 2020
  46.  */
  47.  
  48. @Service
  49. public class AddNewTenant extends DefaultBusinessTransaction implements BusinessTransaction {
  50.     Logger log = LoggerFactory.getLogger(getClass());
  51.  
  52.     @Autowired
  53.     TenantDao tenantDao;
  54.  
  55.     @Autowired
  56.     PolicyDao policyDao;
  57.  
  58.     @Autowired
  59.     OUTypeDao ouTypeDao;
  60.    
  61.     @Autowired
  62.     OULegalDao ouLegalDao;
  63.  
  64.     @Autowired
  65.     OutletDao outletDao;
  66.    
  67.     @Autowired
  68.     OutletRegistrationDao outletRegistrationDao;
  69.    
  70.     @Autowired
  71.     OUDao ouDao;
  72.  
  73.     @Autowired
  74.     PolicyOUDao policyOUDao;
  75.  
  76.     @Autowired
  77.     RoleDao roleDao;
  78.    
  79.     @Autowired
  80.     SystemConfigDao systemConfigDao;
  81.    
  82.     @Autowired
  83.     CashBankDao cashBankDao;
  84.    
  85.     @Autowired
  86.     CashBankOuDao cashBankOuDao;
  87.  
  88.     @Autowired
  89.     UserDao userDao;
  90.  
  91.     @Autowired
  92.     UserRoleDao userRoleDao;
  93.    
  94.     @Autowired
  95.     RoleTaskDao roleTaskDao;
  96.    
  97.     @Autowired
  98.     AdminProcessLedgerDao adminProcessLedgerDao;
  99.    
  100.     @Autowired
  101.     WarehouseOuDao WarehouseOuDao;
  102.    
  103.     @Autowired
  104.     WarehouseDao WarehouseDao;
  105.  
  106.     @Autowired
  107.     IsUserExistsByIndex isUserExistsByIndex;
  108.  
  109.     @Autowired
  110.     IsTenantExistsByIndex isTenantExistsByIndex;
  111.  
  112.     @Autowired
  113.     IsUserExistByEmail isUserExistByEmail;
  114.  
  115.     @Autowired
  116.     FindRoleByName findRoleByName;
  117.  
  118.     @Autowired
  119.     ValComboValueByCode valComboValueByCode;
  120.    
  121.     @Autowired
  122.     CoaDao coaDao;
  123.  
  124.     @Override
  125.     public String getDescription() {
  126.         return "Add/Register Merchant/seller";
  127.     }
  128.  
  129.     @Override
  130.     public Dto prepare(Dto dto, Dto originalDto) throws Exception {
  131.         valDtoContainsKey(dto);
  132.         valBlank(dto);
  133.         valSpecificType(dto);
  134.         valOnlyNumber(dto);
  135.         valPassword(dto);
  136.         valData(dto);
  137.  
  138.         dto.put("empty", GeneralConstants.EMPTY_VALUE);
  139.         dto.put("yes", GeneralConstants.YES);
  140.         dto.put("no", GeneralConstants.NO);
  141.         dto.put("nullLong", GeneralConstants.NULL_REF_VALUE_LONG);
  142.         dto.put("kas", UkmConstants.KAS);
  143.         dto.put("flgCashbank", UkmConstants.FLG_CASHBANK_C);
  144.         dto.put("mainAcc", mainAcc(dto));
  145.  
  146.         dto.put("userId", dto.getLong("userId") != null ? dto.getLong("userId") : (long) -1);        
  147.        
  148.         dto.put("tenantCode", dto.getString("ownerMobilePhoneNumber"));
  149.         dto.put("ouTypeCode", "COM");
  150.         dto.put("ouTypeName", "Company");
  151.         dto.put("role", "OWNER");
  152.         dto.put("roleType", "USER");
  153.         dto.put("rank", "Good");
  154.         dto.put("npwpStatus", "01");
  155.         dto.put("addressDesc", "default");
  156.         dto.put("groupPartner", "S");
  157.         dto.put("typePartnerId", -99);// cari ke m_type_partner
  158.         dto.put("dueDate", 0);
  159.         dto.put("currencyCode", "IDR");
  160.         dto.put("amountLimit", "1");
  161.         dto.put("typePartnerCode", "SUPP");
  162.         dto.put("typePartnerName", "Supplier");
  163.         dto.put("typePartnerGroup","S");
  164.  
  165.         dto.put("tenantDto", setTenantDto(dto));
  166.         dto.put("policyDto", setPolicyDto(dto));
  167.         dto.put("ouTypeDto", setOuTypeDto(dto));
  168.         dto.put("ouDto", setOuDto(dto));
  169.         dto.put("ouLegalDto", setOuLegalDto(dto));
  170.         dto.put("policyOuDto", setPolicyOuDto(dto));
  171.         dto.put("roleDto", setRoleDto(dto));
  172.         dto.put("userDto", setUserDto(dto));
  173.         dto.put("userRoleDto", setUserRoleDto(dto));
  174.         dto.put("cashbankDto", setCashbankDto(dto));
  175.         dto.put("cashbankOuDto", setCashbankOuDto(dto));
  176.         dto.put("warehouseDto", setWarehouseDto(dto));
  177.         dto.put("warehouseOuDto", setWarehouseOuDto(dto));        
  178.         dto.put("outletDto", setOutletDto(dto));
  179.         dto.put("outletRegistrationDto", setOutletRegistrationDto(dto));
  180.         dto.put("systemConfigDto", setSystemConfigDto(dto));
  181.         dto.put("coaDto", setCoaDto(dto));
  182.  
  183.         return null;
  184.     }
  185.  
  186.     @Override
  187.     public Dto process(Dto dto, Dto originalDto) throws Exception {
  188.  
  189.         String yearMonth = DateUtil.dateNow().substring(0,6);
  190.         String datetime = dto.getString("datetime");
  191.        
  192.         Dto tenantDto = dto.getDto("tenantDto");
  193.         tenantDto.put("key", hashString(dto.getString("tenantCode")));
  194.         Tenant tenant = GsonUtil.fromDto(tenantDto, Tenant.class);
  195.         this.tenantDao.persist(tenant);
  196.  
  197.         Long tenantId = tenant.getId();
  198.  
  199.         Dto policyDto = dto.getDto("policyDto");
  200.         policyDto.put("tenantId", tenantId);
  201.         Policy policy = GsonUtil.fromDto(policyDto, Policy.class);
  202.         this.policyDao.persist(policy);
  203.  
  204.         Long policyId = policy.getId();
  205.  
  206.         Dto ouTypeDto = dto.getDto("ouTypeDto");
  207.         ouTypeDto.put("tenantId", tenantId);
  208.         OUType ouType = GsonUtil.fromDto(ouTypeDto, OUType.class);
  209.         this.ouTypeDao.persist(ouType);
  210.  
  211.         Long ouTypeId = ouType.getId();
  212.  
  213.         Dto ouDto = dto.getDto("ouDto");
  214.         ouDto.put("tenantId", tenantId);
  215.         ouDto.put("typeId", ouTypeId);
  216.         OU ou = GsonUtil.fromDto(ouDto, OU.class);
  217.         this.ouDao.persist(ou);
  218.  
  219.         Long ouId = ou.getId();
  220.  
  221.         Dto ouLegalDto = dto.getDto("ouLegalDto");
  222.         OULegal ouLegal = GsonUtil.fromDto(ouLegalDto, OULegal.class);
  223.         ouLegal.setTenantId(tenantId);
  224.         ouLegal.setOuId(ouId);
  225.         this.ouLegalDao.persist(ouLegal);
  226.        
  227.         Dto policyOuDto = dto.getDto("policyOuDto");
  228.         policyOuDto.put("policyId", policyId);
  229.         policyOuDto.put("ouId", ouId);
  230.         PolicyOU policyOU = GsonUtil.fromDto(policyOuDto, PolicyOU.class);
  231.         this.policyOUDao.persist(policyOU);
  232.  
  233.         Dto roleDto = dto.getDto("roleDto");
  234.         roleDto.put("tenantId", tenantId);
  235.         Role role = GsonUtil.fromDto(roleDto, Role.class);
  236.         this.roleDao.persist(role);
  237.  
  238.         Long roleId = role.getId();
  239.  
  240.         Dto userDto = dto.getDto("userDto");
  241.         userDto.put("tenantId", tenantId);
  242.         userDto.put("password", hashString(userDto.getString("password")));
  243.         userDto.put("roleDefaultId", roleId);
  244.         userDto.put("ouDefaultId", ouId);
  245.         userDto.put("policyDefaultId", policyId);
  246.         userDto.put("privateKey", hashString(tenantId.toString().concat(userDto.getString("name"))));
  247.         User user = GsonUtil.fromDto(userDto, User.class);
  248.         this.userDao.persist(user);
  249.  
  250.         Long userId = user.getId();
  251.  
  252.         Dto userRoleDto = dto.getDto("userRoleDto");
  253.         userRoleDto.put("userId", userId);
  254.         userRoleDto.put("roleId", roleId);
  255.         userRoleDto.put("policyId", policyId);
  256.         UserRole userRole = GsonUtil.fromDto(userRoleDto, UserRole.class);
  257.         this.userRoleDao.persist(userRole);
  258.  
  259.         dto.put("roleId", roleId);                
  260.  
  261.         initRoleTask(dto);          
  262.         initMasterForUkm(userId, tenantId, datetime);
  263.        
  264.         Dto coaDto = dto.getDto("coaDto");
  265.         Coa coa = GsonUtil.fromDto(coaDto, Coa.class);
  266.         coa.setTenantId(tenantId);
  267.         coa.setGroupCoaId(getGroupCoaId(tenantId, dto.getString("flgCashbank")));
  268.         coa.setSubAcc(countSubAcc(dto.getString("mainAcc"), tenantId));
  269.         this.coaDao.persist(coa);
  270.        
  271.         Long coaId = coa.getId();
  272.        
  273.         Dto cashbankDto = dto.getDto("cashbankDto");
  274.         cashbankDto.put("tenantId", tenantId);
  275.         CashBank cashbank = GsonUtil.fromDto(cashbankDto, CashBank.class);
  276.         cashbank.setCoaId(coaId);
  277.         this.cashBankDao.persist(cashbank);
  278.        
  279.         Long cashbankId = cashbank.getId();
  280.  
  281.         Dto cashbankOuDto = dto.getDto("cashbankOuDto");   
  282.         CashBankOu cashbankOu = GsonUtil.fromDto(cashbankOuDto, CashBankOu.class);
  283.         cashbankOu.setCashBankId(cashbankId);
  284.         cashbankOu.setOuId(ouId);        
  285.         this.cashBankOuDao.persist(cashbankOu);
  286.        
  287.        
  288.         Dto warehouseDto = dto.getDto("warehouseDto"); 
  289.         Warehouse warehouse = GsonUtil.fromDto(warehouseDto, Warehouse.class);
  290.         warehouse.setTenantId(tenantId);
  291.         warehouse.setOuId(ouId);
  292.         this.WarehouseDao.persist(warehouse);
  293.        
  294.         Long warehouseId = warehouse.getId();
  295.        
  296.         Dto warehouseOuDto = dto.getDto("warehouseOuDto"); 
  297.         WarehouseOu warehouseOu = GsonUtil.fromDto(warehouseOuDto, WarehouseOu.class);
  298.         warehouseOu.setWarehouseId(warehouseId);
  299.         warehouseOu.setOuId(ouId);
  300.         this.WarehouseOuDao.persist(warehouseOu);
  301.        
  302.         Dto outletDto = dto.getDto("outletDto");   
  303.         Outlet outlet = GsonUtil.fromDto(outletDto, Outlet.class);
  304.         outlet.setTenantId(tenantId);
  305.         outlet.setOuId(ouId);
  306.         outlet.setWarehouseId(warehouseId);
  307.         this.outletDao.persist(outlet);
  308.        
  309.         Dto systemConfigDto = dto.getDto("systemConfigDto");   
  310.         SystemConfig systemConfig = GsonUtil.fromDto(systemConfigDto, SystemConfig.class);
  311.         systemConfig.setTenantId(tenantId);
  312.         this.systemConfigDao.persist(systemConfig);
  313.        
  314.         Dto outletRegistrationDto = dto.getDto("outletRegistrationDto");
  315.         log.info("Output outletRegistrationDto: " +outletRegistrationDto.toString());
  316.         if(outletRegistrationDto.containsKey("id")) {
  317.             outletRegistrationDto.remove("id");
  318.         }
  319.         OutletRegistration outletRegistration = GsonUtil.fromDto(outletRegistrationDto, OutletRegistration.class);
  320.         outletRegistration.setTenantId(tenantId);
  321.         outletRegistration.setOuId(ouId);
  322.         outletRegistrationDao.persist(outletRegistration);
  323.        
  324.         Dto output = new Dto();
  325.         output.put("tenantId", tenantId);
  326.         output.put("tenantCode", tenant.getCode());
  327.         output.put("username", user.getName());                
  328.        
  329.         initAdminProcessLedger(userId, tenantId, ouId, yearMonth, datetime);
  330.        
  331.        
  332.         return output;
  333.     }
  334.    
  335.     private void initAdminProcessLedger(Long userId, Long tenantId, Long ouId, String yearMonth, String datetime) {
  336.  
  337.         QueryBuilder builder = new QueryBuilder();
  338.         builder.add("SELECT f_init_admin_process_ledger_code(:userId,:tenantId,:ouId,:yearMonth,:datetime)");
  339.  
  340.         Query query = cashBankDao.createNativeQuery(builder.toString());
  341.         query.setParameter("userId", userId);
  342.         query.setParameter("tenantId", tenantId);
  343.         query.setParameter("ouId", ouId);
  344.         query.setParameter("yearMonth", yearMonth);
  345.         query.setParameter("datetime", datetime);
  346.  
  347.         query.getResultList();
  348.     }
  349.    
  350.     private void initMasterForUkm(Long userId, Long tenantId, String datetime){
  351.         QueryBuilder builder = new QueryBuilder();
  352.         builder.add("SELECT fs_create_master_for_ukm(:userId,:tenantId,:datetime)");
  353.  
  354.         Query query = cashBankDao.createNativeQuery(builder.toString());
  355.         query.setParameter("userId", userId);
  356.         query.setParameter("tenantId", tenantId);
  357.         query.setParameter("datetime", datetime);
  358.  
  359.         query.getResultList();
  360.     }    
  361.  
  362.     private void valDtoContainsKey(Dto dto) {
  363.         String[] requiredKey = {"businessName", "ownerMobilePhoneNumber", "ownerEmail", "ownerName", "password", "passwordConfirmation"};
  364.         for (String key : requiredKey) {
  365.             ValidationUtil.valDtoContainsKey(dto, key);
  366.         }
  367.     }
  368.  
  369.     private void valBlank(Dto dto) {
  370.         String[] cannotBlankKey = {"businessName", "ownerMobilePhoneNumber", "ownerEmail", "ownerName", "password", "passwordConfirmation"};
  371.         for (String key : cannotBlankKey) {
  372.             if(dto.getString(key).equals(GeneralConstants.EMPTY_VALUE)) {
  373.                 throw new CoreException(key+" Can't Empty");
  374.             }
  375.         }
  376.     }
  377.  
  378.     private void valSpecificType(Dto dto) {
  379.         ValidationUtil.valEmail(dto, "ownerEmail");
  380.         ValidationUtil.valDatetime(dto, "datetime");
  381.     }
  382.  
  383.     private void valOnlyNumber(Dto dto) {
  384.         String[] numberKey = {"ownerMobilePhoneNumber"};
  385.         for (String key : numberKey) {
  386.             String value = dto.getString(key);
  387.             if (value != null && value != GeneralConstants.EMPTY_VALUE && !value.matches("[0-9.-]+")) {
  388.                 throw new CoreException("Invalid Format for " + key);
  389.             }
  390.         }
  391.     }
  392.  
  393.     private void valPassword(Dto dto) {
  394.         String password = dto.getString("password");
  395.         String passwordConfirmation = dto.getString("passwordConfirmation");
  396.         Integer passwordMinimumLength = 6;
  397.  
  398.         if (!password.equals(passwordConfirmation)) {
  399.             throw new CoreException("Password & Confirmation password is not equals");
  400.         }
  401.         if (password.length() < passwordMinimumLength) {
  402.             throw new CoreException("Password is too short, minimum 6 character");
  403.         }
  404.     }
  405.  
  406.     private void valData(Dto dto) throws Exception {
  407.         // validasi tenant
  408.         Dto isTenantExistsByIndexParam = new Dto();
  409.         isTenantExistsByIndexParam.put("tenantCode", dto.getString("ownerMobilePhoneNumber"));
  410.         Dto tenant = isTenantExistsByIndex.execute(isTenantExistsByIndexParam);
  411.         if (tenant.getBoolean("exists")) {
  412.             throw new CoreException("Phone number already registered as tenant");
  413.         }
  414.  
  415.         // validasi username / mobile phone number
  416.         Dto isUserExistsByIndexParam = new Dto();
  417.         isUserExistsByIndexParam.put("name", dto.getString("ownerMobilePhoneNumber"));
  418.         Dto user = isUserExistsByIndex.execute(isUserExistsByIndexParam);
  419.         if (user.getBoolean("exists")) {
  420.             throw new CoreException("Phone number already registered as user");
  421.         }
  422.  
  423.         // validasi email
  424.         Dto isUserExistByEmailParam = new Dto();
  425.         isUserExistByEmailParam.put("email", dto.getString("ownerEmail"));
  426.         Dto userByEmail = isUserExistByEmail.execute(isUserExistByEmailParam);
  427.         if (userByEmail.getBoolean("exists")) {
  428.             throw new CoreException("Email already registered as user");
  429.         }
  430.     }
  431.  
  432.     private String hashString(String string) throws NoSuchAlgorithmException {
  433.         String digest = null;
  434.         try {
  435.             MessageDigest md = MessageDigest.getInstance("MD5");
  436.             byte[] hash = md.digest(string.getBytes("UTF-8"));
  437.             //converting byte array to Hexadecimal String
  438.             StringBuilder sb = new StringBuilder(2 * hash.length);
  439.             for (byte b : hash) {
  440.                 sb.append(String.format("%02x", b & 0xff));
  441.             }
  442.             digest = sb.toString();
  443.         } catch (UnsupportedEncodingException ex) {
  444.             log.info(ex.getMessage());
  445.         } catch (NoSuchAlgorithmException ex) {
  446.             log.info(ex.getMessage());
  447.         }
  448.         return digest;
  449.  
  450.     }
  451.  
  452.     // Generate DTO berdasarkan Entity
  453.    
  454.     private Dto setSystemConfigDto(Dto dto) {
  455.         Dto data = new Dto();
  456.         data.put("tenantId", dto.getLong("nullLong"));
  457.         data.put("parameterId", getParameterValutaId());
  458.         data.put("value", UkmConstants.CURR_CODE_IDR);
  459.         this.prepareUpdateAudit(data, dto.getLong("userId"), dto.getString("datetime"));
  460.         this.prepareInsertAudit(data, dto.getLong("userId"), dto.getString("datetime"));
  461.         return data;
  462.     }
  463.    
  464.     private Long getParameterValutaId() {
  465.         Long id = -99l;
  466.        
  467.         QueryBuilder countryAndProvinceQuery = new QueryBuilder();
  468.         countryAndProvinceQuery.add("SELECT parameter_id ")
  469.                             .add("FROM t_parameter ")
  470.                             .add("WHERE parameter_code = :currCode");
  471.        
  472.         Query query = tenantDao.createNativeQuery(countryAndProvinceQuery.toString());
  473.         query.setParameter("currCode", UkmConstants.CURR_CODE);
  474.        
  475.         List<BigInteger> resultList = query.getResultList();       
  476.         if (resultList.size() > 0) {
  477.             id = Long.valueOf(resultList.get(0).toString());
  478.         }
  479.        
  480.         return id;
  481.     }
  482.  
  483.     private Dto setTenantDto(Dto dto) {
  484.         Dto data = new Dto();
  485.         data.put("code", dto.getString("tenantCode"));
  486.         data.put("name", dto.getString("businessName"));
  487.         data.put("key", dto.getString("empty"));
  488.         data.put("description", dto.getString("empty"));
  489.         data.put("email", dto.getString("ownerEmail"));
  490.         data.put("host", dto.getString("empty"));
  491.         this.prepareUpdateAudit(data, dto.getLong("userId"), dto.getString("datetime"));
  492.         this.prepareInsertAudit(data, dto.getLong("userId"), dto.getString("datetime"));
  493.         return data;
  494.     }
  495.    
  496.     private Dto setCoaDto(Dto dto) {
  497.         String codeName = dto.getString("kas").toUpperCase().trim();
  498.         Dto data = new Dto();
  499.        
  500.         data.put("tenantId", dto.getLong("nullLong"));
  501.         data.put("mainAcc",dto.getString("mainAcc"));
  502.         data.put("subAcc",dto.getString("empty"));
  503.         data.put("groupCoaId",dto.getLong("nullLong"));
  504.         data.put("description",codeName);
  505.         data.put("sign",UkmConstants.SIGN_COA_D);        
  506.         log.info("Data Set Coa : " + data);
  507.         this.prepareUpdateAudit(data, dto.getLong("userLoginId"), dto.getString("datetime"));
  508.         this.prepareInsertAudit(data, dto.getLong("userLoginId"), dto.getString("datetime"));
  509.         return data;
  510.     }
  511.    
  512.     private Dto setCashbankDto(Dto dto) {
  513.         Dto data = new Dto();
  514.         data.put("tenantId", dto.getLong("nullLong"));
  515.         data.put("code", dto.getString("kas"));
  516.         data.put("name", dto.getString("kas"));
  517.         data.put("flagCashBank", dto.getString("flgCashbank"));
  518.         data.put("bankCode", dto.getString("empty"));
  519.         data.put("accountNo", dto.getString("empty"));
  520.         data.put("currencyCode", UkmConstants.CURR_CODE_IDR);
  521.         data.put("accountName1", dto.getString("empty"));
  522.         data.put("accountName2", dto.getString("empty"));
  523.         data.put("address1", dto.getString("addressDesc"));
  524.         data.put("address2", dto.getString("empty"));
  525.         data.put("address3", dto.getString("empty"));
  526.         data.put("coaId", dto.getString("nullLong"));
  527.         data.put("creditLimit", UkmConstants.ZERO_QTY);
  528.         this.prepareUpdateAudit(data, dto.getLong("userId"), dto.getString("datetime"));
  529.         this.prepareInsertAudit(data, dto.getLong("userId"), dto.getString("datetime"));
  530.         return data;
  531.     }    
  532.    
  533.     private Dto setCashbankOuDto(Dto dto) {
  534.         Dto data = new Dto();
  535.         data.put("cashbankId", dto.getLong("nullLong"));
  536.         data.put("ouId", dto.getLong("nullLong"));
  537.         this.prepareUpdateAudit(data, dto.getLong("userId"), dto.getString("datetime"));
  538.         this.prepareInsertAudit(data, dto.getLong("userId"), dto.getString("datetime"));
  539.         return data;
  540.     }
  541.    
  542.     private Dto setWarehouseDto(Dto dto) {
  543.         Dto data = new Dto();
  544.         data.put("tenantId", dto.getLong("nullLong"));
  545.         data.put("code", dto.getString("businessName"));
  546.         data.put("name", dto.getString("businessName"));
  547.         data.put("ouId", dto.getLong("nullLong"));
  548.         data.put("flagWarehouse", dto.getString("yes"));
  549.         data.put("address1", dto.getString("addressDesc"));
  550.         data.put("address2", dto.getString("empty"));
  551.         data.put("address3", dto.getString("empty"));
  552.         data.put("city", dto.getString("empty"));
  553.         data.put("zipCode", dto.getString("empty"));
  554.         data.put("country", dto.getString("empty"));
  555.         data.put("phone1", dto.getString("ownerMobilePhoneNumber"));
  556.         data.put("phone2", dto.getString("empty"));
  557.         data.put("fax1", dto.getString("empty"));
  558.         data.put("fax2", dto.getString("empty"));
  559.         data.put("email", dto.getString("ownerEmail"));
  560.         this.prepareUpdateAudit(data, dto.getLong("userId"), dto.getString("datetime"));
  561.         this.prepareInsertAudit(data, dto.getLong("userId"), dto.getString("datetime"));
  562.         return data;
  563.     }
  564.    
  565.     private Dto setWarehouseOuDto(Dto dto) {
  566.         Dto data = new Dto();
  567.         data.put("warehouseId", dto.getLong("nullLong"));
  568.         data.put("ouId", dto.getLong("nullLong"));
  569.         this.prepareUpdateAudit(data, dto.getLong("userId"), dto.getString("datetime"));
  570.         this.prepareInsertAudit(data, dto.getLong("userId"), dto.getString("datetime"));
  571.         return data;
  572.     }
  573.  
  574.     private Dto setPolicyDto(Dto dto) {
  575.         Dto data = new Dto();
  576.         data.put("tenantId", dto.getLong("nullLong"));
  577.         data.put("name", dto.getString("businessName"));
  578.         data.put("code", dto.getString("ownerMobilePhoneNumber"));
  579.         this.prepareUpdateAudit(data, dto.getLong("userId"), dto.getString("datetime"));
  580.         this.prepareInsertAudit(data, dto.getLong("userId"), dto.getString("datetime"));
  581.         return data;
  582.     }
  583.    
  584.     private Dto setOutletDto(Dto dto) {
  585.         Dto data = new Dto();
  586.         data.put("tenantId", dto.getLong("nullLong"));
  587.         data.put("outletName", dto.getString("businessName"));
  588.         data.put("ouId", dto.getLong("nullLong"));
  589.         data.put("flgInternal", dto.getString("yes"));
  590.         data.put("partnerId", dto.getLong("nullLong"));
  591.         data.put("warehouseId", dto.getLong("nullLong"));
  592.         data.put("flgCreateFile", dto.getString("no"));
  593.         data.put("openDatetime", dto.getString("datetime"));   
  594.         data.put("startDateTrx", dto.getString("startDate"));  
  595.         data.put("closeDatetime", dto.getString("empty")); 
  596.         data.put("flgEmbedded", dto.getString("no"));  
  597.         data.put("flgStockMinus", dto.getString("no"));
  598.         data.put("flgCommission", dto.getString("no"));
  599.         data.put("flgAccountsReceivable", dto.getString("no"));
  600.         this.prepareUpdateAudit(data, dto.getLong("userId"), dto.getString("datetime"));
  601.         this.prepareInsertAudit(data, dto.getLong("userId"), dto.getString("datetime"));
  602.         return data;
  603.     }
  604.  
  605.     private Dto setOuTypeDto(Dto dto) {
  606.         Dto data = new Dto();
  607.         data.put("tenantId", dto.getLong("nullLong"));
  608.         data.put("code", dto.getString("ouTypeCode"));
  609.         data.put("name", dto.getString("ouTypeName"));
  610.         data.put("flagBusinessUnit", dto.getString("yes"));
  611.         data.put("flagAccounting", dto.getString("no"));
  612.         data.put("flagLegal", dto.getString("no"));
  613.         data.put("flagSubBusinessUnit", dto.getString("no"));
  614.         data.put("flagBranch", dto.getString("no"));
  615.         this.prepareUpdateAudit(data, dto.getLong("userId"), dto.getString("datetime"));
  616.         this.prepareInsertAudit(data, dto.getLong("userId"), dto.getString("datetime"));
  617.         return data;
  618.     }
  619.  
  620.     private Dto setOuDto(Dto dto) {
  621.         Dto data = new Dto();
  622.         data.put("tenantId", dto.getLong("nullLong"));
  623.         data.put("code", dto.getString("ownerMobilePhoneNumber"));
  624.         data.put("name", dto.getString("businessName"));
  625.         data.put("parentId", dto.getLong("nullLong"));
  626.         data.put("typeId", dto.getLong("nullLong"));
  627.         this.prepareUpdateAudit(data, dto.getLong("userId"), dto.getString("datetime"));
  628.         this.prepareInsertAudit(data, dto.getLong("userId"), dto.getString("datetime"));
  629.         return data;
  630.     }
  631.    
  632.     private Dto setOuLegalDto(Dto dto) {
  633.         Dto data = new Dto();
  634.         data.put("tenantId", dto.getLong("nullLong"));
  635.         data.put("ouId", dto.getLong("nullLong"));
  636.         data.put("name", dto.getString("businessName"));
  637.         data.put("address1", dto.getString("address1"));
  638.         data.put("address2", dto.getString("empty"));
  639.         data.put("address3", dto.getString("empty"));
  640.         data.put("city", dto.getString("city"));
  641.         data.put("zipCode", dto.getString("empty"));
  642.         data.put("stateOrProvince", dto.getString("empty"));
  643.         data.put("country", dto.getString("empty"));
  644.         data.put("phone1", dto.getString("ownerMobilePhoneNumber"));
  645.         data.put("phone2", dto.getString("empty"));
  646.         data.put("fax1", dto.getString("empty"));
  647.         data.put("fax2", dto.getString("empty"));
  648.         data.put("npwpNo", dto.getString("empty"));
  649.         data.put("npwpDate", dto.getString("empty"));
  650.         data.put("npwpName", dto.getString("empty"));
  651.         data.put("npwpAddress", dto.getString("empty"));
  652.         data.put("npwpFax", dto.getString("empty"));
  653.         data.put("npwpPhone", dto.getString("empty"));
  654.         data.put("flgPkp", UkmConstants.YES);
  655.         this.prepareUpdateAudit(data, dto.getLong("userId"), dto.getString("datetime"));
  656.         this.prepareInsertAudit(data, dto.getLong("userId"), dto.getString("datetime"));
  657.         return data;
  658.     }
  659.  
  660.     private Dto setPolicyOuDto(Dto dto) {
  661.         Dto data = new Dto();
  662.         data.put("policyId", dto.getLong("nullLong"));
  663.         data.put("ouId", dto.getLong("nullLong"));
  664.         this.prepareUpdateAudit(data, dto.getLong("userId"), dto.getString("datetime"));
  665.         this.prepareInsertAudit(data, dto.getLong("userId"), dto.getString("datetime"));
  666.         return data;
  667.     }
  668.  
  669.     private Dto setRoleDto(Dto dto) {
  670.         Dto data = new Dto();
  671.         data.put("tenantId", dto.getLong("nullLong"));
  672.         data.put("name", dto.getString("role"));
  673.         data.put("roleType", dto.getString("roleType"));
  674.         this.prepareUpdateAudit(data, dto.getLong("userId"), dto.getString("datetime"));
  675.         this.prepareInsertAudit(data, dto.getLong("userId"), dto.getString("datetime"));
  676.         return data;
  677.     }
  678.  
  679.     private Dto setUserDto(Dto dto) {
  680.         Dto data = new Dto();
  681.         data.put("tenantId", dto.getLong("nullLong"));
  682.         data.put("name", dto.getString("ownerMobilePhoneNumber"));
  683.         data.put("fullName", dto.getString("ownerName"));
  684.         data.put("password", dto.getString("password"));
  685.         data.put("email", dto.getString("ownerEmail"));
  686.         data.put("phone", dto.getString("ownerMobilePhoneNumber"));
  687.         data.put("roleDefaultId", dto.getLong("nullLong"));
  688.         data.put("ouDefaultId", dto.getLong("nullLong"));
  689.         data.put("policyDefaultId", dto.getLong("nullLong"));
  690.         data.put("privateKey", dto.getString("empty"));
  691.         this.prepareUpdateAudit(data, dto.getLong("userId"), dto.getString("datetime"));
  692.         this.prepareInsertAudit(data, dto.getLong("userId"), dto.getString("datetime"));
  693.         return data;
  694.     }
  695.  
  696.     private Dto setUserRoleDto(Dto dto) {
  697.         Dto data = new Dto();
  698.         data.put("userId", dto.getLong("nullLong"));
  699.         data.put("roleId", dto.getLong("nullLong"));
  700.         data.put("policyId", dto.getLong("nullLong"));
  701.         this.prepareUpdateAudit(data, dto.getLong("userId"), dto.getString("datetime"));
  702.         this.prepareInsertAudit(data, dto.getLong("userId"), dto.getString("datetime"));
  703.         return data;
  704.     }    
  705.    
  706.     private Dto setOutletRegistrationDto(Dto dto){
  707.         Dto data = new Dto();
  708.         data.put("tenantId", dto.getLong("nullLong"));
  709.         data.put("ouId", dto.getLong("nullLong"));
  710.         data.put("outletName", dto.getString("businessName"));
  711.         data.put("ownerName", dto.getString("ownerName"));
  712.         data.put("phoneNumber", dto.getString("ownerMobilePhoneNumber"));
  713.         data.put("stateOrProvince", dto.getString("city"));
  714.         data.put("email", dto.getString("ownerEmail"));
  715.         data.put("address", dto.getString("address1"));
  716.         data.put("startDateTrx", GeneralConstants.EMPTY_VALUE);
  717.         data.put("statusDoc", "D");
  718.         data.put("approvedUser", dto.getString("empty"));
  719.         data.put("approvedDatetime", dto.getString("empty"));
  720.         this.prepareUpdateAudit(data, dto.getLong("userId"), dto.getString("datetime"));
  721.         this.prepareInsertAudit(data, dto.getLong("userId"), dto.getString("datetime"));
  722.         return data;
  723.     }
  724.    
  725.     // INIT ROLE TASK
  726.  
  727.     private void initRoleTask(Dto dto) {
  728.         QueryBuilder roleTaskQuery = new QueryBuilder();
  729.  
  730.         roleTaskQuery.add("INSERT INTO ")
  731.                 .add(RoleTask.TABLE_NAME)
  732.                 .add(" (role_id, task_id, create_datetime, create_user_id, update_datetime, update_user_id, version, active, active_datetime, non_active_datetime) ")
  733.                 .add(" SELECT ")
  734.                 .add(" :roleId, task_id, :createDatetime, :createUserId, :updateDatetime, :updateUserId, :version, :active, :activeDatetime, :nonActiveDatetime ")
  735.                 .add(" FROM ")
  736.                 .add(Task.TABLE_NAME)
  737.                 .add(" WHERE active = :active ");
  738.  
  739.         Query roleTask = roleTaskDao.createNativeQuery(roleTaskQuery.toString());
  740.         roleTask.setParameter("roleId", dto.getLong("roleId"));
  741.         roleTask.setParameter("createDatetime", dto.getString("datetime"));
  742.         roleTask.setParameter("createUserId", dto.getLong("userId"));
  743.         roleTask.setParameter("updateDatetime", dto.getString("datetime"));
  744.         roleTask.setParameter("updateUserId", dto.getLong("userId"));
  745.         roleTask.setParameter("version", 0);
  746.         roleTask.setParameter("active", dto.getString("yes"));
  747.         roleTask.setParameter("activeDatetime", dto.getString("datetime"));
  748.         roleTask.setParameter("nonActiveDatetime", GeneralConstants.SPACE_VALUE);
  749.         roleTask.executeUpdate();
  750.     }      
  751.    
  752.     private Long getGroupCoaId(Long tenantId,String flgCb){
  753.        
  754.         String code = flgCb.equals(UkmConstants.FLG_CASHBANK_C) ? "Kas" :"Bank";
  755.        
  756.         Long id = -99l;
  757.         QueryBuilder builder = new QueryBuilder();
  758.         builder.add("SELECT group_coa_id ")
  759.                             .add("FROM m_group_coa ")
  760.                             .add("WHERE tenant_id = :tenantId AND group_coa_code = :code");
  761.         Query query = cashBankOuDao.createNativeQuery(builder.toString());
  762.         query.setParameter("tenantId", tenantId);
  763.         query.setParameter("code", code);
  764.        
  765.         List<BigInteger> resultList = query.getResultList();
  766.         if (resultList.size() > 0) {
  767.             id = Long.valueOf(resultList.get(0).toString());
  768.         }
  769.         return id;
  770.     }
  771.    
  772.     private String countSubAcc(String mainAcc, Long tenantId){     
  773.         QueryBuilder builder = new QueryBuilder();
  774.         builder.add(" SELECT LPAD(CAST(COALESCE(MAX(CAST(sub_acc AS BIGINT)), 0) +1 AS CHARACTER VARYING), 3, '0') ");
  775.         builder.add(" FROM m_coa ");
  776.         builder.add(" WHERE main_acc = :mainAcc ");
  777.         builder.add(" AND tenant_id = :tenantId ");
  778.        
  779.         Query query = coaDao.createNativeQuery(builder.toString());
  780.         query.setParameter("mainAcc", mainAcc);
  781.         query.setParameter("tenantId", tenantId);
  782.         Object result = query.getSingleResult();
  783.         String data = result.toString();           
  784.        
  785.         log.info("Count Sub Acc : " + data);
  786.        
  787.         return data;
  788.     }
  789.    
  790.     private String mainAcc(Dto dto){
  791.         String code = dto.getString("flgCashbank").equals(UkmConstants.FLG_CASHBANK_C) ? UkmConstants.MAIN_ACC_CASH : UkmConstants.MAIN_ACC_BANK;
  792.        
  793.         QueryBuilder builder = new QueryBuilder();
  794.         builder.add(" SELECT A.parameter_value ");
  795.         builder.add(" FROM t_system_config A ");
  796.         builder.add(" JOIN t_parameter B ON A.parameter_id = B.parameter_id");
  797.         builder.add(" WHERE A.tenant_id = :tenantId ");
  798.         builder.add(" AND B.parameter_code = :code ");
  799.        
  800.         Query query = coaDao.createNativeQuery(builder.toString());
  801.         query.setParameter("tenantId", dto.getLong("nullLong"));
  802.         query.setParameter("code", code);
  803.        
  804.         String result = query.getSingleResult().toString();
  805.        
  806.         log.info("Main Acc : " + result);
  807.        
  808.         return result;
  809.     }
  810.    
  811. }
  812.  
Advertisement
Add Comment
Please, Sign In to add comment