Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package org.jleaf.ukmappsbo.bo.customer;
- import java.math.BigInteger;
- import java.util.List;
- import javax.persistence.Query;
- import org.jleaf.common.bo.combo.ValComboValueByCode;
- import org.jleaf.common.bo.role.FindRoleByName;
- import org.jleaf.common.dao.RoleTaskDao;
- import org.jleaf.core.BusinessTransaction;
- import org.jleaf.core.CoreException;
- import org.jleaf.core.DefaultBusinessTransaction;
- import org.jleaf.core.Dto;
- import org.jleaf.core.GeneralConstants;
- import org.jleaf.core.dao.QueryBuilder;
- import org.jleaf.erp.master.bo.cashbank.IsCashBankExistsByIndex;
- import org.jleaf.erp.master.bo.cashbank.IsCashBankOuExistsById;
- import org.jleaf.erp.master.bo.partner.IsPartnerExistsByIndex;
- import org.jleaf.erp.master.dao.CashBankDao;
- import org.jleaf.erp.master.dao.CashBankOuDao;
- import org.jleaf.erp.master.dao.CoaDao;
- import org.jleaf.erp.master.dao.GroupCoaDao;
- import org.jleaf.erp.master.dao.PartnerAddressDao;
- import org.jleaf.erp.master.dao.PartnerBankDao;
- import org.jleaf.erp.master.dao.PartnerCpDao;
- import org.jleaf.erp.master.dao.PartnerDao;
- import org.jleaf.erp.master.dao.PartnerNpwpDao;
- import org.jleaf.erp.master.dao.PartnerTypeDao;
- import org.jleaf.erp.master.dao.TypePartnerDao;
- import org.jleaf.erp.master.entity.CashBank;
- import org.jleaf.erp.master.entity.CashBankOu;
- import org.jleaf.erp.master.entity.Coa;
- import org.jleaf.erp.master.entity.GroupCoa;
- 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.ukmappsbo.UkmConstants;
- import org.jleaf.ukmappsbo.bo.tenant.IsTenantExistsByIndex;
- import org.jleaf.ukmappsbo.bo.user.IsUserExistByEmail;
- import org.jleaf.ukmappsbo.dao.UserPartnerDao;
- import org.jleaf.util.DtoUtil;
- import org.jleaf.util.GsonUtil;
- 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 Fikri 20 Mei 2020
- */
- @Service
- public class AddCashbank extends DefaultBusinessTransaction implements BusinessTransaction {
- Logger log = LoggerFactory.getLogger(getClass());
- @Autowired
- CashBankDao cashBankDao;
- @Autowired
- CashBankOuDao cashBankOuDao;
- @Autowired
- CoaDao coaDao;
- @Autowired
- GroupCoaDao groupCoaDao;
- @Autowired
- IsCashBankExistsByIndex isCashBankExistsByIndex;
- @Override
- public String getDescription() {
- return "Add Cashbank";
- }
- @Override
- public Dto prepare(Dto dto, Dto originalDto) throws Exception {
- log.info("===Input Dto{}===",dto);
- dto.put("empty", GeneralConstants.EMPTY_VALUE);
- dto.put("yes", GeneralConstants.YES);
- dto.put("no", GeneralConstants.NO);
- dto.put("nullLong", GeneralConstants.NULL_REF_VALUE_LONG);
- dto.put("mainAcc", mainAcc(dto));
- dto.put("cashbankDto", setCashbankDto(dto));
- dto.put("cashbankOuDto", setCashbankOuDto(dto));
- dto.put("coaDto", setCoaDto(dto));
- return null;
- }
- @Override
- public Dto process(Dto dto, Dto originalDto) throws Exception {
- Dto coaDto = dto.getDto("coaDto");
- Coa coa = GsonUtil.fromDto(coaDto, Coa.class);
- this.coaDao.persist(coa);
- Long coaId = coa.getId();
- Dto cashbankDto = dto.getDto("cashbankDto");
- CashBank cashbank = GsonUtil.fromDto(cashbankDto, CashBank.class);
- cashbank.setCoaId(coaId);
- this.cashBankDao.persist(cashbank);
- Long cashbankId = cashbank.getId();
- Dto cashbankOuDto = dto.getDto("cashbankOuDto");
- cashbankOuDto.put("cashBankId", cashbankId);
- CashBankOu cashbankOu = GsonUtil.fromDto(cashbankOuDto, CashBankOu.class);
- this.cashBankOuDao.persist(cashbankOu);
- Dto output = new Dto();
- output.put("cashbankCode", cashbank.getCode());
- output.put("cashbankName", cashbank.getName());
- return output;
- }
- // Generate DTO berdasarkan Entity
- private Dto setCoaDto(Dto dto) {
- String codeName = dto.getString("cashbankCodeName").toUpperCase().trim();
- Dto data = new Dto();
- Long tenantId = dto.getLong("tenantLoginId");
- String flgCb = dto.getString("flgCashbank"); // --> C = Cash , B = Bank
- String subAcc = countSubAcc(dto);
- data.put("tenantId", dto.getLong("tenantLoginId"));
- data.put("mainAcc",dto.getString("mainAcc"));
- data.put("subAcc",subAcc);
- data.put("groupCoaId",getGroupCoaId(tenantId,flgCb));
- data.put("description",codeName.concat(" ").concat(dto.getString("accountNo")));
- data.put("sign",UkmConstants.SIGN_COA_D);
- this.prepareUpdateAudit(data, dto.getLong("userLoginId"), dto.getString("datetime"));
- this.prepareInsertAudit(data, dto.getLong("userLoginId"), dto.getString("datetime"));
- return data;
- }
- private Dto setCashbankDto(Dto dto) throws Exception {
- String codeName =dto.getString("cashbankCodeName").toUpperCase().trim();
- Dto param = new Dto();
- param.put("tenantId", dto.getLong("tenantLoginId"));
- param.put("code", codeName);
- Dto checkCashbank = isCashBankExistsByIndex.execute(param);
- if(checkCashbank.getBoolean("exists")) {
- throw new Exception("Cashbank '"+codeName+"' Already Exists");
- }
- Dto data = new Dto();
- data.put("tenantId", dto.getLong("tenantLoginId"));
- data.put("code", codeName);
- data.put("name", codeName);
- data.put("flagCashBank", dto.getString("flgCashbank"));
- data.put("bankCode", dto.getString("bankCode"));
- data.put("accountNo", dto.getString("accountNo"));
- data.put("accountName1", dto.getString("accountName1"));
- data.put("accountName2", dto.getString("accountName2"));
- data.put("address1", dto.getString("address1"));
- data.put("address2", dto.getString("address2"));
- data.put("address3", dto.getString("address3"));
- data.put("coaId", dto.getLong("nullLong"));
- data.put("currencyCode", dto.getString("currCode"));
- data.put("creditLimit", UkmConstants.ZERO_QTY);
- this.prepareUpdateAudit(data, dto.getLong("userLoginId"), dto.getString("datetime"));
- this.prepareInsertAudit(data, dto.getLong("userLoginId"), dto.getString("datetime"));
- return data;
- }
- private Dto setCashbankOuDto(Dto dto) {
- Dto data = new Dto();
- data.put("ouId", dto.getLong("ouId"));
- data.put("cashBankId", dto.getLong("nullLong"));
- this.prepareUpdateAudit(data, dto.getLong("userLoginId"), dto.getString("datetime"));
- this.prepareInsertAudit(data, dto.getLong("userLoginId"), dto.getString("datetime"));
- return data;
- }
- private Long getGroupCoaId(Long tenantId,String flgCb){
- String code = flgCb.equals(UkmConstants.FLG_CASHBANK_C) ? "Kas" :"Bank";
- Long id = -99l;
- QueryBuilder countryAndProvinceQuery = new QueryBuilder();
- countryAndProvinceQuery.add("SELECT group_coa_id ")
- .add("FROM m_group_coa ")
- .add("WHERE tenant_id = :tenantId AND group_coa_code = :code");
- Query query = cashBankOuDao.createNativeQuery(countryAndProvinceQuery.toString());
- query.setParameter("tenantId", tenantId);
- query.setParameter("code", code);
- List<BigInteger> resultList = query.getResultList();
- if (resultList.size() > 0) {
- id = Long.valueOf(resultList.get(0).toString());
- }
- return id;
- }
- private String countSubAcc(Dto dto){
- QueryBuilder builder = new QueryBuilder();
- builder.add(" SELECT CASE ");
- builder.add(" WHEN COALESCE(MAX(CAST(sub_acc AS BIGINT)), 0) = 0 ");
- builder.add(" THEN LPAD(CAST(COALESCE(MAX(CAST(sub_acc AS BIGINT)), 0) +10 AS CHARACTER VARYING), 3, '0') ");
- builder.add(" WHEN COALESCE(MAX(CAST(sub_acc AS BIGINT)), 0) > 0 ");
- builder.add(" THEN LPAD(CAST(COALESCE(MAX(CAST(sub_acc AS BIGINT)), 0) +1 AS CHARACTER VARYING), 3, '0') ");
- builder.add(" END sub_acc ");
- builder.add(" FROM m_coa ");
- builder.add(" WHERE main_acc = :mainAcc ");
- builder.add(" AND tenant_id = :tenantId ");
- Query query = coaDao.createNativeQuery(builder.toString());
- query.setParameter("mainAcc", dto.getString("mainAcc"));
- query.setParameter("tenantId", dto.getLong("tenantLoginId"));
- Object result = query.getSingleResult();
- String data = result.toString();
- return data;
- }
- private String mainAcc(Dto dto){
- String code = dto.getString("flgCashbank").equals(UkmConstants.FLG_CASHBANK_C) ? UkmConstants.MAIN_ACC_CASH : UkmConstants.MAIN_ACC_BANK;
- QueryBuilder builder = new QueryBuilder();
- builder.add(" SELECT A.parameter_value ");
- builder.add(" FROM t_system_config A ");
- builder.add(" JOIN t_parameter B ON A.parameter_id = B.parameter_id");
- builder.add(" WHERE A.tenant_id = :tenantId ");
- builder.add(" AND B.parameter_code = :code ");
- Query query = coaDao.createNativeQuery(builder.toString());
- query.setParameter("tenantId", GeneralConstants.NULL_REF_VALUE_LONG);
- query.setParameter("code", code);
- String result = query.getSingleResult().toString();
- return result;
- }
- /*
- * Goal :
- * Main Acc diisi dng : 101
- Sub Acc disi dng : cari sub acc terakhir ditambah 1 , misal : 01, 02, 03
- Coa Desc : Nama Cash Bank + No Rek
- */
- }
Advertisement
Add Comment
Please, Sign In to add comment