Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package org.jleaf.preorderappsbo.bo.customer;
- import java.util.ArrayList;
- import java.util.List;
- import javax.persistence.Query;
- 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.annotation.Info;
- import org.jleaf.core.annotation.InfoIn;
- import org.jleaf.core.annotation.InfoOut;
- import org.jleaf.core.dao.QueryBuilder;
- import org.jleaf.erp.master.dao.PartnerAddressDao;
- import org.jleaf.erp.master.dao.PartnerCpDao;
- import org.jleaf.erp.master.dao.PartnerDao;
- import org.jleaf.erp.master.dao.PartnerTypeDao;
- 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.preorderappsbo.dao.SoDao;
- import org.jleaf.preorderappsbo.dao.SoItemDao;
- import org.jleaf.preorderappsbo.entity.So;
- import org.jleaf.preorderappsbo.entity.SoItem;
- import org.jleaf.preorderappscore.exception.DataNotFoundException;
- import org.jleaf.preorderappscore.util.EmailServiceImpl;
- import org.jleaf.preorderappscore.util.MoneyFormat;
- import org.jleaf.util.DateUtil;
- 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;
- @Service
- @InfoIn(value={
- @Info(name="merchantCode",description="merchant code",type=String.class),
- @Info(name="preOrderDocNo",description="pre order document number",type=String.class),
- @Info(name="customerName",description="customer name",type=String.class),
- @Info(name="customerPhoneNumber",description="customer phone number",type=String.class),
- @Info(name="customerEmail",description="customer email",type=String.class),
- @Info(name="customerAddress",description="customer address",type=String.class),
- @Info(name="itemList",description="List of itemList(productCode, orderQty)",type=List.class)
- })
- @InfoOut(value={})
- public class AddCustomerCheckoutOrder extends DefaultBusinessTransaction implements BusinessTransaction{
- Logger log = LoggerFactory.getLogger(getClass());
- @Autowired
- PartnerDao partnerDao;
- @Autowired
- PartnerCpDao partnerCpDao;
- @Autowired
- PartnerAddressDao partnerAddressDao;
- @Autowired
- PartnerTypeDao partnerTypeDao;
- @Autowired
- SoDao soDao;
- @Autowired
- SoItemDao soItemDao;
- @Autowired
- EmailServiceImpl emailServiceImpl;
- private static final String CUSTOMER_CTGR_PARTNER_CODE = "CUSTOMER";
- private static final Long SALES_ORDER_DOC_TYPE_ID = 301L;
- private static final String OU_TYPE_COMPANY_CODE = "COM";
- private static final String CHECKOUT_REMARK = "Check Out By Microsite";
- private static final String RANK_GOOD = "Good";
- private static final String IDN_CURRENCY_CODE = "IDR";
- private static final String STATUS_DOC_DRAFT = "D";
- private static final String WORKFLOW_STATUS_DRAFT = "DRAFT";
- private static final String CUSTOMER_TYPE_PARTNER_CODE = "CUST";
- @Override
- public String getDescription() {
- return "Add Customer Checkout Order";
- }
- @Override
- public Dto prepare(Dto dto, Dto original) throws Exception {
- log.info("Start Dto : "+dto+"\n");
- validation(dto);
- dto.put("nullLong", GeneralConstants.NULL_REF_VALUE_LONG);
- dto.put("empty", GeneralConstants.EMPTY_VALUE);
- dto.put("yes", GeneralConstants.YES);
- dto.put("no", GeneralConstants.NO);
- dto.put("datetime", DateUtil.dateTimeNow());
- dto.put("today", DateUtil.dateNow());
- dto.put("ctgrPartnerCode", CUSTOMER_CTGR_PARTNER_CODE);
- dto.put("typePartnerCode", CUSTOMER_TYPE_PARTNER_CODE);
- Dto typePartnerDataDto = getTypePartnerData(dto);
- dto.put("typePartnerId",typePartnerDataDto.getLong("typePartnerId"));
- dto.put("groupPartner",typePartnerDataDto.getString("groupPartner"));
- dto.put("tenantId", getTenantId(dto));
- dto.put("userId", dto.getLong("userId") != null ? dto.getLong("userId") : (long) -1);
- dto.put("docTypeId", SALES_ORDER_DOC_TYPE_ID);
- dto.put("ouTypeCode", OU_TYPE_COMPANY_CODE);
- dto.put("ouId", getOuId(dto));
- dto.put("currencyCode", IDN_CURRENCY_CODE);
- dto.put("zeroPoint", 0.0D);
- Dto preOrderDataDto = getPreOrderData(dto);
- dto.put("preOrderId", preOrderDataDto.getLong("preOrderId"));
- dto.put("preOrderDocTypeId", preOrderDataDto.getLong("preOrderDocTypeId"));
- dto.put("preOrderDocDate", preOrderDataDto.getString("preOrderDocDate"));
- dto.put("merchantName", preOrderDataDto.getString("merchantName"));
- dto.put("merchantBank", preOrderDataDto.getString("merchantBank"));
- dto.put("merchantBankAccountNo", preOrderDataDto.getString("merchantBankAccountNo"));
- dto.put("merchantAccountName", preOrderDataDto.getString("merchantAccountName"));
- dto.put("merchantPhoneNumber", preOrderDataDto.getString("merchantPhoneNumber"));
- dto.put("rank", RANK_GOOD);
- dto.put("remark", CHECKOUT_REMARK);
- dto.put("statusDraft", STATUS_DOC_DRAFT);
- dto.put("workflowStatusDraft", WORKFLOW_STATUS_DRAFT);
- dto.put("isNewPartner", true);
- Dto partnerDataDto = getPartnerData(dto);
- if (partnerDataDto != null) {
- dto.put("isNewPartner", false);
- dto.put("partnerId", partnerDataDto.getLong("partnerId"));
- dto.put("partnerCpId", partnerDataDto.getLong("partnerCpId"));
- dto.put("partnerCpName", partnerDataDto.getString("partnerCpName"));
- }
- dto.put("setPartnerDto", setPartnerDto(dto));
- dto.put("setPartnerCpDto", setPartnerCpDto(dto));
- dto.put("setPartnerAddressDto", setPartnerAddressDto(dto));
- dto.put("setPartnerTypeDto", setPartnerTypeDto(dto));
- dto.put("setSoDto", setSoDto(dto));
- dto.put("setSoItemList", setSoItemList(dto));
- log.info("End Dto : "+dto+"\n");
- return null;
- }
- @Override
- public Dto process(Dto dto, Dto original) throws Exception {
- Dto partnerDto = dto.getDto("setPartnerDto");
- Dto partnerCpDto = dto.getDto("setPartnerCpDto");
- Dto partnerAddressDto = dto.getDto("setPartnerAddressDto");
- Dto partnerTypeDto = dto.getDto("setPartnerTypeDto");
- Dto soDto = dto.getDto("setSoDto");
- List<Dto> soItemList = dto.getList("setSoItemList");
- Dto output = new Dto();
- if (dto.getBoolean("isNewPartner") == true) {
- log.info("Partner Dto : "+partnerDto+"\n");
- Partner partner = GsonUtil.fromDto(partnerDto, Partner.class);
- partnerDao.persist(partner);
- Long partnerId = partner.getId();
- log.info("Partner Dto : "+partnerDto+"\n");
- PartnerAddress partnerAddress = GsonUtil.fromDto(partnerAddressDto, PartnerAddress.class);
- partnerAddress.setPartnerId(partnerId);
- partnerAddressDao.persist(partnerAddress);
- Long partnerAddressId = partnerAddress.getId();
- PartnerCp partnerCp = GsonUtil.fromDto(partnerCpDto, PartnerCp.class);
- partnerCp.setPartnerId(partnerId);
- partnerCpDao.persist(partnerCp);
- Long partnerCpId = partnerCp.getId();
- String partnerCpName = partnerCp.getCpName();
- PartnerType partnerType = GsonUtil.fromDto(partnerTypeDto, PartnerType.class);
- partnerType.setPartnerId(partnerId);
- partnerTypeDao.persist(partnerType);
- So so = GsonUtil.fromDto(soDto, So.class);
- so.setPartnerId(partnerId);
- so.setPartnerCpId(partnerCpId);
- so.setPartnerBillToId(partnerId);
- so.setPartnerShipToId(partnerCpId);
- so.setPartnerShipAddressId(partnerAddressId);
- so.setPartnerShipCpId(partnerCpId);
- so.setPartnerShipCpName(partnerCpName);
- soDao.persist(so);
- Long soId = so.getId();
- String soDocNo = so.getDocNo();
- String soDocDate = so.getDocDate();
- for(Dto item : soItemList){
- SoItem soItem = GsonUtil.fromDto(item, SoItem.class);
- soItem.setSoId(soId);
- soItem.setPartnerShipToId(partnerId);
- soItem.setPartnerShipAddressId(partnerAddressId);
- soItemDao.persist(soItem);
- }
- output.put("docNo", soDocNo);
- output.put("docDate", soDocDate);
- } else {
- PartnerAddress partnerAddress = GsonUtil.fromDto(partnerAddressDto, PartnerAddress.class);
- partnerAddressDao.persist(partnerAddress);
- Long partnerAddressId = partnerAddress.getId();
- So so = GsonUtil.fromDto(soDto, So.class);
- so.setPartnerShipAddressId(partnerAddressId);
- soDao.persist(so);
- Long soId = so.getId();
- String soDocNo = so.getDocNo();
- String soDocDate = so.getDocDate();
- for(Dto item : soItemList){
- SoItem soItem = GsonUtil.fromDto(item, SoItem.class);
- soItem.setSoId(soId);
- soItem.setPartnerShipAddressId(partnerAddressId);
- soItemDao.persist(soItem);
- }
- output.put("docNo", soDocNo);
- output.put("docDate", soDocDate);
- }
- try {
- sentEmailToCustomer(dto);
- } catch (Exception e) {
- // TODO: handle exception
- }
- return output;
- }
- private void validation(Dto dto){
- ValidationUtil.valDtoContainsKey(dto, "merchantCode");
- ValidationUtil.valDtoContainsKey(dto, "preOrderDocNo");
- ValidationUtil.valDtoContainsKey(dto, "customerName");
- ValidationUtil.valDtoContainsKey(dto, "customerPhoneNumber");
- ValidationUtil.valDtoContainsKey(dto, "customerEmail");
- ValidationUtil.valDtoContainsKey(dto, "customerAddress");
- ValidationUtil.valDtoContainsKey(dto, "itemList");
- ValidationUtil.valBlankOrNull(dto, "merchantCode");
- ValidationUtil.valBlankOrNull(dto, "preOrderDocNo");
- ValidationUtil.valBlankOrNull(dto, "customerName");
- ValidationUtil.valBlankOrNull(dto, "customerPhoneNumber");
- ValidationUtil.valBlankOrNull(dto, "customerEmail");
- ValidationUtil.valBlankOrNull(dto, "customerAddress");
- ValidationUtil.valBlankOrNull(dto, "itemList");
- }
- private Dto setPartnerDto(Dto dto){
- Dto data = new Dto();
- data.put("tenantId", dto.getLong("tenantId"));
- data.put("code", dto.getString("customerPhoneNumber"));
- data.put("name", dto.getString("customerName"));
- data.put("ctgrPartnerId", dto.getLong("nullLong"));
- data.put("extName", dto.getString("empty"));
- data.put("npwpId", dto.getLong("nullLong"));
- data.put("holdingId", dto.getLong("nullLong"));
- data.put("rank", dto.getString("rank"));
- data.put("lineOfBusiness", dto.getString("empty"));
- data.put("industryType", dto.getString("empty"));
- data.put("priceLevel", dto.getString("empty"));
- data.put("npwpStatus", "01");
- this.prepareInsertAudit(data, dto.getLong("userId"), dto.getString("datetime"));
- this.prepareUpdateAudit(data, dto.getLong("userId"), dto.getString("datetime"));
- return data;
- }
- private Dto setPartnerAddressDto(Dto dto){
- Dto data = new Dto();
- data.put("tenantId", dto.getLong("tenantId"));
- data.put("partnerId", dto.getLong("partnerId"));
- data.put("addressDesc", dto.getString("customerName"));
- data.put("address1", dto.getString("customerAddress"));
- data.put("address2", dto.getString("empty"));
- data.put("address3", dto.getString("empty"));
- data.put("city", dto.getString("empty"));
- data.put("zipCode", dto.getString("empty"));
- data.put("stateOrProvince", dto.getString("empty"));
- data.put("country", dto.getString("empty"));
- data.put("phone1", dto.getString("customerPhoneNumber"));
- data.put("phone2", dto.getString("empty"));
- data.put("fax1", dto.getString("empty"));
- data.put("fax2", dto.getString("empty"));
- data.put("flagDefault", dto.getString("yes"));
- data.put("flgShip", dto.getString("yes"));
- data.put("flgBill", dto.getString("yes"));
- data.put("flgMail", dto.getString("yes"));
- data.put("flgOfficial", dto.getString("yes"));
- data.put("flgOthers", dto.getString("yes"));
- data.put("longitude", dto.getDouble("zeroPoint"));
- data.put("latitude", dto.getDouble("zeroPoint"));
- this.prepareInsertAudit(data, dto.getLong("userId"), dto.getString("datetime"));
- this.prepareUpdateAudit(data, dto.getLong("userId"), dto.getString("datetime"));
- return data;
- }
- private Dto setPartnerCpDto(Dto dto){
- Dto data = new Dto();
- data.put("tenantId", dto.getLong("tenantId"));
- data.put("partnerId", dto.getLong("nullLong"));
- data.put("cpName", dto.getString("customerName"));
- data.put("cpJob", "CUSTOMER");
- data.put("address1", dto.getString("customerAddress"));
- data.put("address2", dto.getString("empty"));
- data.put("address3", dto.getString("empty"));
- data.put("city", dto.getString("cityName"));
- data.put("zipCode", dto.getString("empty"));//--> kosong
- data.put("country", dto.getString("empty"));
- data.put("phone1", dto.getString("customerPhoneNumber"));
- data.put("phone2", dto.getString("empty"));
- data.put("fax1", dto.getString("empty"));
- data.put("fax2", dto.getString("empty"));
- data.put("email", dto.getString("customerEmail"));
- data.put("department", dto.getString("empty"));
- data.put("jobLevel", dto.getString("empty"));
- data.put("phoneExt1", dto.getString("empty"));
- data.put("phoneExt2", dto.getString("empty"));
- data.put("mobilePhone1", dto.getString("empty"));
- data.put("mobilePhone2", dto.getString("empty"));
- data.put("flgResponsibility", dto.getString("yes"));
- data.put("flgEmailNotif", dto.getString("yes"));
- data.put("flgEmailNotifAp", dto.getString("yes"));
- data.put("flgEmailNotifAr", dto.getString("yes"));
- this.prepareInsertAudit(data, dto.getLong("userId"), dto.getString("datetime"));
- this.prepareUpdateAudit(data, dto.getLong("userId"), dto.getString("datetime"));
- return data;
- }
- private Dto setPartnerTypeDto(Dto dto){
- Dto data = new Dto();
- data.put("tenantId",dto.getLong("tenantId"));
- data.put("partnerId",dto.getLong("partnerId"));
- data.put("groupPartner",dto.getString("groupPartner"));
- data.put("typePartnerId",dto.getLong("typePartnerId"));
- data.put("dueDate",0L);
- data.put("currencyCode",dto.getString("currencyCode"));
- data.put("amountLimit",dto.getDouble("zeroPoint"));
- data.put("flagCommision",dto.getString("no"));
- return data;
- }
- private Dto setSoDto(Dto dto){
- Dto data = new Dto();
- data.put("tenantId", dto.getLong("tenantId"));
- data.put("docTypeId", dto.getLong("docTypeId"));
- data.put("docNo", dto.getString("datetime"));
- data.put("docDate", dto.getString("today"));
- data.put("ouId", dto.getLong("ouId"));
- data.put("extDocNo", dto.getString("preOrderDocNo"));
- data.put("extDocDate", dto.getString("preOrderDocDate"));
- data.put("refDocTypeId", dto.getLong("preOrderDocTypeId"));
- data.put("refId", dto.getLong("preOrderId"));
- data.put("partnerId", dto.getLong("partnerId"));
- data.put("partnerCpId", dto.getLong("partnerCpId"));
- data.put("partnerBillToId", dto.getLong("partnerId"));
- data.put("partnerShipToId", dto.getLong("partnerId"));
- data.put("partnerShipAddressId", dto.getLong("nullLong"));
- data.put("dueDate", dto.getString("empty"));
- data.put("salesmanId", dto.getLong("nullLong"));
- data.put("flgDelivery", dto.getString("yes"));
- data.put("currCode", dto.getString("currencyCode"));
- data.put("addDiscountPercentage", dto.getDouble("zeroPoint"));
- data.put("addDiscountAmount", dto.getDouble("zeroPoint"));
- data.put("statusDoc", dto.getString("statusDraft"));
- data.put("workflowStatus", dto.getString("workflowStatusDraft"));
- data.put("partnerShipCpId", dto.getLong("partnerCpId"));
- data.put("partnerShipCpName", dto.getString("partnerCpName"));
- data.put("partnerShipCpPhone1", dto.getString("customerPhoneNumber"));
- data.put("partnerShipCpPhone2", dto.getString("empty"));
- data.put("flgShowInvTax", dto.getString("no"));
- data.put("flgOldStatus", dto.getString("no"));
- data.put("regularDiscountPercentage", dto.getDouble("zeroPoint"));
- data.put("termOfPayment", dto.getDouble("zeroPoint"));
- this.prepareInsertAudit(data, dto.getLong("userId"), dto.getString("datetime"));
- this.prepareUpdateAudit(data, dto.getLong("userId"), dto.getString("datetime"));
- return data;
- }
- private List setSoItemList(Dto dto){
- List<Dto> setSoItemDto = new ArrayList<Dto>();
- List<Dto> itemList = dto.getList("itemList");
- Long lineNo = 0L;
- for(Dto item : itemList){
- Dto productParamDto = new Dto();
- productParamDto.put("productCode", item.getString("productCode"));
- productParamDto.put("preOrderDocNo", dto.getString("preOrderDocNo"));
- productParamDto.put("tenantId", dto.getLong("tenantId"));
- Dto productDataDto = getProductData(productParamDto);
- log.info("Item List Content : "+item+"\n");
- if(item.getLong("orderQty") < productDataDto.getLong("minQty")) {
- throw new CoreException(" order qty can't less than "+productDataDto.getLong("minQty"));
- }
- Dto data = new Dto();
- data.put("tenantId", dto.getLong("tenantId"));
- data.put("soId", dto.getLong("nullLong"));
- data.put("lineNo", lineNo =+ 1L);
- data.put("refDocTypeId", dto.getLong("nullLong"));
- data.put("refId", dto.getLong("nullLong"));
- data.put("partnerShipToId", dto.getLong("partnerId"));
- data.put("partnerShipAddressId", dto.getLong("nullLong"));
- data.put("productId", productDataDto.getLong("productId"));
- data.put("qtySo", item.getLong("orderQty"));
- data.put("soUomId", productDataDto.getLong("uomId"));
- data.put("qtyInt", 0L);
- data.put("baseUomId", productDataDto.getLong("uomId"));
- data.put("currCode", dto.getString("currencyCode"));
- data.put("grossSellPrice", productDataDto.getDouble("sellPrice"));
- data.put("flgTaxAmount", dto.getString("no"));
- data.put("taxId", dto.getLong("nullLong"));
- data.put("taxPercentage", dto.getDouble("zeroPoint"));
- data.put("taxPrice", dto.getDouble("zeroPoint"));
- data.put("promoCode", dto.getString("empty"));
- data.put("discountAmount", dto.getDouble("zeroPoint"));
- data.put("nettSellPrice", productDataDto.getDouble("sellPrice"));
- data.put("taxAmount", dto.getDouble("zeroPoint"));
- data.put("nettItemAmount", item.getLong("orderQty")*productDataDto.getDouble("sellPrice")+data.getDouble("taxAmount")-data.getDouble("discountAmount"));
- data.put("eta", productDataDto.getString("deliveryDate"));
- data.put("etaDay", dto.getString("empty"));
- data.put("flgDisc", dto.getString("no"));
- this.prepareInsertAudit(data, dto.getLong("userId"), dto.getString("datetime"));
- this.prepareUpdateAudit(data, dto.getLong("userId"), dto.getString("datetime"));
- data.put("uomName", productDataDto.getString("uomName"));
- data.put("productName", productDataDto.getString("productName"));
- setSoItemDto.add(data);
- }
- return setSoItemDto;
- }
- private Long getTenantId(Dto dto){
- QueryBuilder builder = new QueryBuilder();
- builder.add(" SELECT tenant_id ");
- builder.add(" FROM t_tenant ");
- builder.add(" WHERE tenant_code = :merchantCode ");
- Query query = soDao.createNativeQuery(builder.toString());
- query.setParameter("merchantCode", dto.getString("merchantCode"));
- return Long.valueOf(query.getSingleResult().toString());
- }
- private Long getOuId(Dto dto){
- QueryBuilder builder = new QueryBuilder();
- builder.add(" SELECT A.ou_id ");
- builder.add(" FROM t_ou A ");
- builder.add(" JOIN t_ou_type B ON A.ou_type_id = B.ou_type_id ");
- builder.add(" WHERE B.ou_type_code = :ouTypeCode ");
- builder.add(" AND A.tenant_id = :tenantId ");
- Query query = soDao.createNativeQuery(builder.toString());
- query.setParameter("ouTypeCode", dto.getString("ouTypeCode"));
- query.setParameter("tenantId", dto.getLong("tenantId"));
- return Long.valueOf(query.getSingleResult().toString());
- }
- private Dto getPreOrderData(Dto dto){
- QueryBuilder builder = new QueryBuilder();
- builder.add(" SELECT A.quotation_id, A.doc_type_id, A.doc_date, ");
- builder.add(" A.partner_name, B.bank_code, B.account_no, ");
- builder.add(" B.account_name1, C.phone1 ");
- builder.add(" FROM sl_quotation A ");
- builder.add(" JOIN m_partner_bank B ON A.partner_id = B.partner_id ");
- builder.add(" JOIN m_partner_cp C ON A.partner_id = C.partner_id ");
- builder.add(" WHERE A.doc_no = :preOrderDocNo ");
- builder.add(" AND A.tenant_id = :tenantId ");
- Query query = soDao.createNativeQuery(builder.toString());
- query.setParameter("preOrderDocNo", dto.getString("preOrderDocNo"));
- query.setParameter("tenantId", dto.getLong("tenantId"));
- List<Object[]> resultList = query.getResultList();
- List<Dto> finalResultList = DtoUtil.createDtoListFromArray(resultList,
- "preOrderId", "preOrderDocTypeId", "preOrderDocDate",
- "merchantName", "merchantBank", "merchantBankAccountNo",
- "merchantAccountName", "merchantPhoneNumber");
- if (finalResultList.size() > 0) {
- return new Dto(finalResultList.get(0));
- }
- throw new DataNotFoundException("Pre Order not found");
- }
- private Dto getPartnerData(Dto dto){
- QueryBuilder builder = new QueryBuilder();
- builder.add(" SELECT A.partner_id, B.partner_cp_id, B.cp_name ");
- builder.add(" FROM m_partner A ");
- builder.add(" JOIN m_partner_cp B ON A.partner_id = B.partner_id ");
- builder.add(" JOIN m_partner_type C ON A.partner_id = C.partner_id "); //--> m_partner_type
- builder.add(" WHERE A.partner_code = :customerPhoneNumber ");
- builder.add(" AND A.tenant_id = :tenantId ");
- Query query = partnerDao.createNativeQuery(builder.toString());
- query.setParameter("customerPhoneNumber", dto.getString("customerPhoneNumber"));
- query.setParameter("tenantId", dto.getLong("tenantId"));
- List<Object[]> resultList = query.getResultList();
- if (resultList.size() > 0) {
- List<Dto> finalResultList = DtoUtil.createDtoListFromArray(resultList, "partnerId", "partnerCpId", "partnerCpName" );
- return new Dto(finalResultList.get(0));
- }
- return null;
- }
- private Dto getProductData(Dto dto){
- log.info("Dto in Product Data : "+dto+"\n");
- QueryBuilder builder = new QueryBuilder();
- builder.add(" SELECT D.product_id, D.base_uom_id, D.product_name, ");
- builder.add(" B.sell_price, F.uom_name, C.delivery_date,A.min_qty ");
- builder.add(" FROM sl_quotation A ");
- builder.add(" JOIN sl_quotation_item B ON A.quotation_id = B.quotation_id ");
- builder.add(" JOIN sl_quotation_item_preorder C ON B.quotation_item_id = C.quotation_item_id ");
- builder.add(" JOIN m_product D ON D.product_id = B.product_id ");
- builder.add(" JOIN m_uom F ON B.uom_id = F.uom_id ");
- builder.add(" WHERE D.product_code = :productCode ");
- builder.add(" AND A.doc_no = :preOrderDocNo ");
- builder.add(" AND D.tenant_id = :tenantId ");
- Query query = partnerDao.createNativeQuery(builder.toString());
- query.setParameter("productCode", dto.getString("productCode"));
- query.setParameter("preOrderDocNo", dto.getString("preOrderDocNo"));
- query.setParameter("tenantId", dto.getLong("tenantId"));
- List<Object[]> resultList = query.getResultList();
- List<Dto> finalResultList = DtoUtil.createDtoListFromArray(resultList,
- "productId", "uomId", "productName",
- "sellPrice", "uomName", "deliveryDate","minQty" );
- // for(Dto item : finalResultList){
- // productDto.put("productId", item.getLong("productId"));
- // productDto.put("uomId", item.getLong("uomId"));
- // productDto.put("sellPrice", item.getDouble("sellPrice"));
- // productDto.put("deliveryDate", item.getString("deliveryDate"));
- // }
- if(finalResultList.size() > 0){
- return new Dto(finalResultList.get(0));
- }
- throw new DataNotFoundException("Pre Order not found");
- }
- private Dto getTypePartnerData(Dto dto){
- Dto typePartnerDto = new Dto();
- QueryBuilder builder = new QueryBuilder();
- builder.add(" SELECT type_partner_id, group_partner ");
- builder.add(" FROM m_type_partner ");
- builder.add(" WHERE type_partner_code = :typePartnerCode ");
- Query query = partnerDao.createNativeQuery(builder.toString());
- query.setParameter("typePartnerCode", dto.getString("typePartnerCode"));
- List<Object[]> resultList = query.getResultList();
- List<Dto> finalResultList = DtoUtil.createDtoListFromArray(resultList, "typePartnerId", "groupPartner");
- for(Dto item : finalResultList){
- typePartnerDto.put("typePartnerId", item.getLong("typePartnerId"));
- typePartnerDto.put("groupPartner", item.getString("groupPartner"));
- }
- return typePartnerDto;
- }
- private void sentEmailToCustomer(Dto dto) throws Exception{
- String currency = "Rp";
- String year = dto.getString("datetime").substring(0, 4);
- String month = dto.getString("datetime").substring(4, 6);
- String date = dto.getString("datetime").substring(6, 8);
- String hour = dto.getString("datetime").substring(8, 10);
- String minute = dto.getString("datetime").substring(10, 12);
- Dto soItemDto = new Dto(setSoItemList(dto).get(0));
- log.info("nettItemAmount : "+soItemDto.getDouble("nettItemAmount")+"\n");
- String strUang = MoneyFormat.separator(soItemDto.getDouble("nettItemAmount"));
- log.info("strUang : "+strUang+"\n");
- String trxDate = date.concat("-").concat(month).concat("-").concat(year).concat(" ").concat(hour).concat(":").concat(minute);
- String totalOrder = soItemDto.getLong("qtySo").toString().concat(" ").concat(soItemDto.getString("uomName"));
- Dto templateDto = new Dto();
- templateDto.put("namaPemesan", dto.getString("customerName"));
- templateDto.put("namaToko", dto.getString("merchantName"));
- templateDto.put("waktuTransaksi", trxDate);
- templateDto.put("noTelpPemesan", dto.getString("customerPhoneNumber"));
- templateDto.put("namaMenu", soItemDto.getString("productName"));
- templateDto.put("jumlahPemesan", totalOrder);
- templateDto.put("totalPembayaran", currency+" "+strUang);
- templateDto.put("namaRekening", dto.getString("merchantBank"));
- templateDto.put("noRekening", dto.getString("merchantBankAccountNo"));
- templateDto.put("namaPenerima", dto.getString("merchantAccountName"));
- templateDto.put("noTelpPenerima", dto.getString("merchantPhoneNumber"));
- log.info("Template Email Dto : "+templateDto+"\n");
- emailServiceImpl.sendMessageWithTemplate(dto.getString("customerEmail"), "Bukti Pembayaran", "Invoice.html", templateDto);
- }
- }
Add Comment
Please, Sign In to add comment