|
|
@@ -135,265 +135,271 @@ public class TsaOcmService {
|
|
|
* TscOrderService.createPreOrder 참조
|
|
|
* 샵링커 주문수집으로 외부몰주문등록된 건 중 '대기'상태인 것들에 대해 주문등록처리를 한다.
|
|
|
*/
|
|
|
- @Transactional("shopTxnManager")
|
|
|
public void createShoplinkerOrder(String uploadGb) {
|
|
|
-
|
|
|
Collection<ExtmallOrder> orderList = this.sortOrderList(uploadGb);
|
|
|
|
|
|
if (orderList != null && !orderList.isEmpty()) {
|
|
|
for( ExtmallOrder order : orderList ) {
|
|
|
+ createShoplinkerOrderSub(order);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- GagaMap result = this.orderValidationCheck(order);
|
|
|
-
|
|
|
- if ("SUCCESS".equals(result.get("message").toString())) {
|
|
|
- // 1. 주문기본정보등록
|
|
|
- ocmDao.createOrder(order);
|
|
|
-
|
|
|
- // 2. 주문배송정보등록
|
|
|
- ocmDao.createDeliveryAddr(order);
|
|
|
-
|
|
|
- // 3. 주문배송비정보등록
|
|
|
- ocmDao.createDeliveryFee(order);
|
|
|
-
|
|
|
- // 4. 주문상세정보등록
|
|
|
- String dtlNos = ""; // 주문상세번호
|
|
|
- String cancelGoodsNms = ""; // 콤마로 구분
|
|
|
- int cancelAmt = 0;
|
|
|
- int payAmt = 0;
|
|
|
- GagaMap vdMap;
|
|
|
- for( ExtmallOrder orderDetail : order.getOrderDetailList()) {
|
|
|
-
|
|
|
- vdMap = this.checkGoodsInfo(orderDetail);
|
|
|
-
|
|
|
- orderDetail.setOrdNo(order.getOrdNo());
|
|
|
- orderDetail.setDelvAddrSq(order.getDelvAddrSq());
|
|
|
-
|
|
|
-
|
|
|
- if (!"SUCCESS".equals(vdMap.get("message").toString())) {
|
|
|
- cancelGoodsNms += orderDetail.getGoodsNm()+",";
|
|
|
- cancelAmt += orderDetail.getOrdAmt();
|
|
|
-
|
|
|
- orderDetail.setUploadStat(TsaConstants.ExtmallUploadStat.FAIL.value()); // 실패
|
|
|
- orderDetail.setOrdNo(null);
|
|
|
- orderDetail.setUploadFailCd(vdMap.getString("uploadFailCd"));
|
|
|
- orderDetail.setUploadFailReason(vdMap.getString("message"));
|
|
|
- ocmDao.updateExtmallOrder(orderDetail);
|
|
|
-
|
|
|
- }else {
|
|
|
-
|
|
|
- orderDetail.setOrdNo(order.getOrdNo());
|
|
|
- orderDetail.setDelvAddrSq(order.getDelvAddrSq());
|
|
|
-
|
|
|
- // TODO 총알배송, 구매대행상품여부 체크
|
|
|
- ocmDao.createOrderDetail(orderDetail); // 주문상세정보등록
|
|
|
-
|
|
|
- ocmDao.createOrderDetailHst(orderDetail); // 주문상세이력정보등록
|
|
|
-
|
|
|
- Collection<ExtmallOrder> orderDetailItemList = ocmDao.getOrderDetailItem(orderDetail); // 주문상세단품정보조회
|
|
|
-
|
|
|
- // 주문상세단품단위 금액 등록
|
|
|
- int length = orderDetailItemList.size();
|
|
|
- int index = 1;
|
|
|
- int leftOrdAmt = orderDetail.getOrdAmt();
|
|
|
- int leftCpn1DcAmt = orderDetail.getCpn1DcAmt();
|
|
|
- int leftTmtb1DcAmt = orderDetail.getTmtb1DcAmt();
|
|
|
- int leftTmtb2DcAmt = orderDetail.getTmtb2DcAmt();
|
|
|
- int leftGoodsCpnDcAmt = orderDetail.getGoodsCpnDcAmt();
|
|
|
- int leftCartCpnDcAmt = orderDetail.getCartCpnDcAmt();
|
|
|
- int leftPntDcAmt = orderDetail.getPntDcAmt();
|
|
|
- int leftPrePntDcAmt = orderDetail.getPrePntDcAmt();
|
|
|
- int leftSavePntAmt = orderDetail.getSavePntAmt();
|
|
|
- int leftRealOrdAmt = orderDetail.getRealOrdAmt();
|
|
|
- int leftGfcdUseAmt = orderDetail.getGfcdUseAmt();
|
|
|
-
|
|
|
- for (ExtmallOrder orderDetailItem : orderDetailItemList) {
|
|
|
- int itemPrice = orderDetailItem.getItemPrice();
|
|
|
- int optAddPrice = orderDetailItem.getOptAddPrice();
|
|
|
- int itemQty = orderDetailItem.getItemQty();
|
|
|
- double currPrice = orderDetailItem.getCurrPrice();
|
|
|
- double itemOrdAmt = (itemPrice + optAddPrice) * itemQty;
|
|
|
- double tempDivD = (itemOrdAmt / currPrice) * 100;
|
|
|
- int tempDiv = Integer.parseInt(String.valueOf(Math.round(tempDivD)));
|
|
|
-
|
|
|
- if (index == length) {
|
|
|
- orderDetailItem.setOrdAmt(leftOrdAmt);
|
|
|
- orderDetailItem.setCpn1DcAmt(leftCpn1DcAmt);
|
|
|
- orderDetailItem.setTmtb1DcAmt(leftTmtb1DcAmt);
|
|
|
- orderDetailItem.setTmtb2DcAmt(leftTmtb2DcAmt);
|
|
|
- orderDetailItem.setGoodsCpnDcAmt(leftGoodsCpnDcAmt);
|
|
|
- orderDetailItem.setCartCpnDcAmt(leftCartCpnDcAmt);
|
|
|
- orderDetailItem.setPntDcAmt(leftPntDcAmt);
|
|
|
- orderDetailItem.setPrePntDcAmt(leftPrePntDcAmt);
|
|
|
- orderDetailItem.setSavePntAmt(leftSavePntAmt);
|
|
|
- orderDetailItem.setRealOrdAmt(leftRealOrdAmt);
|
|
|
- orderDetailItem.setGfcdUseAmt(leftGfcdUseAmt);
|
|
|
- } else {
|
|
|
- orderDetailItem.setOrdAmt((orderDetail.getOrdAmt() * tempDiv) / 100);
|
|
|
- orderDetailItem.setCpn1DcAmt((orderDetail.getCpn1DcAmt() * tempDiv) / 100);
|
|
|
- orderDetailItem.setTmtb1DcAmt((orderDetail.getTmtb1DcAmt() * tempDiv) / 100);
|
|
|
- orderDetailItem.setTmtb2DcAmt((orderDetail.getTmtb2DcAmt() * tempDiv) / 100);
|
|
|
- orderDetailItem.setGoodsCpnDcAmt((orderDetail.getGoodsCpnDcAmt() * tempDiv) / 100);
|
|
|
- orderDetailItem.setCartCpnDcAmt((orderDetail.getCartCpnDcAmt() * tempDiv) / 100);
|
|
|
- orderDetailItem.setPntDcAmt((orderDetail.getPntDcAmt() * tempDiv) / 100);
|
|
|
- orderDetailItem.setPrePntDcAmt((orderDetail.getPrePntDcAmt() * tempDiv) / 100);
|
|
|
- orderDetailItem.setSavePntAmt((orderDetail.getSavePntAmt() * tempDiv) / 100);
|
|
|
- orderDetailItem.setRealOrdAmt((orderDetail.getRealOrdAmt() * tempDiv) / 100);
|
|
|
- orderDetailItem.setGfcdUseAmt((orderDetail.getGfcdUseAmt() * tempDiv) / 100);
|
|
|
-
|
|
|
- leftOrdAmt = leftOrdAmt - ((orderDetail.getOrdAmt() * tempDiv) / 100);
|
|
|
- leftCpn1DcAmt = leftCpn1DcAmt - ((orderDetail.getCpn1DcAmt() * tempDiv) / 100);
|
|
|
- leftTmtb1DcAmt = leftTmtb1DcAmt - ((orderDetail.getTmtb1DcAmt() * tempDiv) / 100);
|
|
|
- leftTmtb2DcAmt = leftTmtb2DcAmt - ((orderDetail.getTmtb2DcAmt() * tempDiv) / 100);
|
|
|
- leftGoodsCpnDcAmt = leftGoodsCpnDcAmt - ((orderDetail.getGoodsCpnDcAmt() * tempDiv) / 100);
|
|
|
- leftCartCpnDcAmt = leftCartCpnDcAmt - ((orderDetail.getCartCpnDcAmt() * tempDiv) / 100);
|
|
|
- leftPntDcAmt = leftPntDcAmt - ((orderDetail.getPntDcAmt() * tempDiv) / 100);
|
|
|
- leftPrePntDcAmt = leftPrePntDcAmt - ((orderDetail.getPrePntDcAmt() * tempDiv) / 100);
|
|
|
- leftSavePntAmt = leftSavePntAmt - ((orderDetail.getSavePntAmt() * tempDiv) / 100);
|
|
|
- leftRealOrdAmt = leftRealOrdAmt - ((orderDetail.getRealOrdAmt() * tempDiv) / 100);
|
|
|
- leftGfcdUseAmt = leftGfcdUseAmt - ((orderDetail.getGfcdUseAmt() * tempDiv) / 100);
|
|
|
- }
|
|
|
-
|
|
|
- // 2021.05.06 옵션금액 단품 추가
|
|
|
- orderDetailItem.setOptAddPrice(optAddPrice);
|
|
|
- orderDetailItem.setCustNo(order.getCustNo());
|
|
|
-
|
|
|
- ocmDao.createOrderDetailItem(orderDetailItem); // 주문상세단품정보등록
|
|
|
-
|
|
|
- ocmDao.createOrderDetailItemHst(orderDetailItem); // 주문상세단품이력정보등록
|
|
|
-
|
|
|
- index++;
|
|
|
-
|
|
|
-
|
|
|
- // 5. 재고등록(샵링커 주문목록을 보면 동일한 몰 주문번호에 동일한 상품(sku)이 수량이 아닌 개별로 있는 데이터가 존재하므로 > 주문번호로 한번에 처리가 아닌 개별로 처리 함)
|
|
|
- orderDetail.setSellGb(TscConstants.SellGb.ORDER.value()); // 판매구분(10:주문(-),
|
|
|
- ocmDao.createSellQty(orderDetail);
|
|
|
-
|
|
|
- // 외부몰 정보 업데이트
|
|
|
- orderDetail.setUploadStat(TsaConstants.ExtmallUploadStat.SUCC.value()); // 성공
|
|
|
- ocmDao.updateExtmallOrder(orderDetail);
|
|
|
-
|
|
|
- dtlNos += orderDetail.getOrdDtlNo()+",";
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- // 6. 주문사은품정보등록
|
|
|
- dtlNos = dtlNos.substring(0, dtlNos.length()-1);
|
|
|
- String [] dtlNdsArr = dtlNos.split(","); // 주문상세번호
|
|
|
- order.setItemCdArr(dtlNdsArr);
|
|
|
- order.setOrdDtlStat(TscConstants.OrderDetailStat.PAYMENT_COMPLETE.value()); //주문상세상태 - 결제완료처리
|
|
|
- GagaMap giftMap = this.getOrderFreegift(order);
|
|
|
-
|
|
|
- if( null != giftMap) {
|
|
|
- if( null != giftMap.get("freegiftList")) {
|
|
|
- if( !"".equals(giftMap.get("freegiftList"))) {
|
|
|
-
|
|
|
- // 상품코드
|
|
|
- String dtlGoodsCds = ""; // 사은품관련 상품코드. 콤마로구분
|
|
|
- String[] dtlGoodsCdsArr;
|
|
|
- Collection<ExtmallOrder> freegiftApplyAmtList = (Collection<ExtmallOrder>) giftMap.get("freegiftApplyAmtList");
|
|
|
-
|
|
|
- for(ExtmallOrder ftMap : freegiftApplyAmtList ) {
|
|
|
- dtlGoodsCds += ftMap.getGoodsCd() +",";
|
|
|
- }
|
|
|
-
|
|
|
- dtlGoodsCds = dtlGoodsCds.substring(0, dtlGoodsCds.length()-1);
|
|
|
- dtlGoodsCdsArr = dtlGoodsCds.split(",");
|
|
|
- order.setFreegiftGoodsArr(dtlGoodsCdsArr);
|
|
|
-
|
|
|
- Collection<ExtmallOrder> freegiftList = (Collection<ExtmallOrder>) giftMap.get("freegiftList");
|
|
|
- ArrayList<Integer> fitValSqArr = new ArrayList<Integer>();
|
|
|
- for(ExtmallOrder ftMap : freegiftList ) {
|
|
|
- fitValSqArr.add(ftMap.getFreegiftValSq());
|
|
|
- }
|
|
|
- int[] freegiftValArr = new int[fitValSqArr.size()];
|
|
|
- for( int i=0; i<fitValSqArr.size(); i++) {
|
|
|
- freegiftValArr[i] = fitValSqArr.get(i);
|
|
|
- }
|
|
|
-
|
|
|
- order.setFreegiftValArr(freegiftValArr);
|
|
|
- order.setCustNo(0);
|
|
|
- if(order.getFreegiftValArr() != null && order.getFreegiftValArr().length > 0) {
|
|
|
- ocmDao.createOrdFreegift(order);
|
|
|
-
|
|
|
- // 6. 주문사은품 상품 정보 등록
|
|
|
- ocmDao.createOrdFreegiftVal(order);
|
|
|
-
|
|
|
- // 7. 주문사은품 주문상세정보 등록
|
|
|
- for(ExtmallOrder ftMap : freegiftApplyAmtList ) {
|
|
|
- order.setFreegiftSq(ftMap.getFreegiftSq());
|
|
|
- order.setGoodsCd(ftMap.getGoodsCd());
|
|
|
- ocmDao.createOrdFreegiftDtl(order);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // 14. 사은품 수량 차감 로직 TB_FREEGIFT_VAL LEFT_QTY
|
|
|
- ocmDao.updateFreegiftValLeftQty(order);
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // 7. 결제 TB_PAYMENT
|
|
|
- Payment payment = new Payment();
|
|
|
- payment.setOrdNo(order.getOrdNo());
|
|
|
- payment.setPayMeans(TscConstants.PayMeans.EXTMALL.value()); // 결제수단
|
|
|
- payAmt = order.getRealOrdSumAmt() + order.getDelvFee() - cancelAmt; // 결제금액 = 실결제금액 + 배송비 - 취소금액
|
|
|
- payment.setPayAmt(payAmt);
|
|
|
- payment.setPgCpnAmt(0); // PG쿠폰금액
|
|
|
- payment.setNpayPntAmt(0); // 네이버페이포인트금액
|
|
|
- payment.setPayGb("O"); // 결제구분(O:주문시결제, D:배송시결제, E:에러(강제 결제 태울 때 또는 에러일 때)
|
|
|
- payment.setPayStat(TscConstants.PaymentStat.PAYMENT_COMPLETE.value()); // 결제상태 - 결제완료
|
|
|
- payment.setRegNo(0);
|
|
|
- payment.setUpdNo(0);
|
|
|
-
|
|
|
- ocmDao.insertPayment(payment);
|
|
|
-
|
|
|
- }else {
|
|
|
-
|
|
|
- // 주문등록 전체실패시 상태 업데이트
|
|
|
- GagaMap vdMap;
|
|
|
- for( ExtmallOrder orderDetail : order.getOrderDetailList()) {
|
|
|
- vdMap = this.checkGoodsInfo(orderDetail);
|
|
|
- orderDetail.setUploadStat(TsaConstants.ExtmallUploadStat.FAIL.value()); // 실패
|
|
|
- orderDetail.setOrdNo(vdMap.getInt("ordNo")); // 실패
|
|
|
- orderDetail.setUploadFailCd(vdMap.getString("uploadFailCd"));
|
|
|
- orderDetail.setUploadFailReason(vdMap.getString("message"));
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
+ @Transactional("shopTxnManager")
|
|
|
+ public void createShoplinkerOrderSub(ExtmallOrder order) {
|
|
|
+
|
|
|
+ GagaMap result = this.orderValidationCheck(order);
|
|
|
+
|
|
|
+ // validation 체크 값
|
|
|
+ Collection<ExtmallOrder> newOrderDetailList = (Collection<ExtmallOrder>) result.get("orderDetailList");
|
|
|
+
|
|
|
+ if ("SUCCESS".equals(result.get("message").toString())) {
|
|
|
+ // 1. 주문기본정보등록
|
|
|
+ ocmDao.createOrder(order);
|
|
|
+
|
|
|
+ // 2. 주문배송정보등록
|
|
|
+ ocmDao.createDeliveryAddr(order);
|
|
|
+
|
|
|
+ // 3. 주문배송비정보등록
|
|
|
+ ocmDao.createDeliveryFee(order);
|
|
|
+
|
|
|
+ // 4. 주문상세정보등록
|
|
|
+ String dtlNos = ""; // 주문상세번호
|
|
|
+ String cancelGoodsNms = ""; // 콤마로 구분
|
|
|
+ int cancelAmt = 0;
|
|
|
+ int payAmt = 0;
|
|
|
+ GagaMap vdMap;
|
|
|
+ for( ExtmallOrder orderDetail : newOrderDetailList) {
|
|
|
+
|
|
|
+ //vdMap = this.checkGoodsInfo(orderDetail);
|
|
|
+ orderDetail.setOrdNo(order.getOrdNo());
|
|
|
+ orderDetail.setDelvAddrSq(order.getDelvAddrSq());
|
|
|
+
|
|
|
+
|
|
|
+ if (!"SUCCESS".equals(orderDetail.getUploadFailReason())){
|
|
|
+ cancelGoodsNms += orderDetail.getGoodsNm()+",";
|
|
|
+ cancelAmt += orderDetail.getOrdAmt();
|
|
|
+
|
|
|
+ orderDetail.setUploadStat(TsaConstants.ExtmallUploadStat.FAIL.value()); // 실패
|
|
|
+ orderDetail.setOrdNo(null);
|
|
|
+ orderDetail.setUploadFailCd(orderDetail.getUploadFailCd());
|
|
|
+ orderDetail.setUploadFailReason(orderDetail.getUploadFailReason());
|
|
|
+ ocmDao.updateExtmallOrder(orderDetail);
|
|
|
+
|
|
|
+ }else {
|
|
|
+
|
|
|
+ orderDetail.setOrdNo(order.getOrdNo());
|
|
|
+ orderDetail.setDelvAddrSq(order.getDelvAddrSq());
|
|
|
+
|
|
|
+ // TODO 총알배송, 구매대행상품여부 체크
|
|
|
+ ocmDao.createOrderDetail(orderDetail); // 주문상세정보등록
|
|
|
+
|
|
|
+ ocmDao.createOrderDetailHst(orderDetail); // 주문상세이력정보등록
|
|
|
+
|
|
|
+ Collection<ExtmallOrder> orderDetailItemList = ocmDao.getOrderDetailItem(orderDetail); // 주문상세단품정보조회
|
|
|
+
|
|
|
+ // 주문상세단품단위 금액 등록
|
|
|
+ int length = orderDetailItemList.size();
|
|
|
+ int index = 1;
|
|
|
+ int leftOrdAmt = orderDetail.getOrdAmt();
|
|
|
+ int leftCpn1DcAmt = orderDetail.getCpn1DcAmt();
|
|
|
+ int leftTmtb1DcAmt = orderDetail.getTmtb1DcAmt();
|
|
|
+ int leftTmtb2DcAmt = orderDetail.getTmtb2DcAmt();
|
|
|
+ int leftGoodsCpnDcAmt = orderDetail.getGoodsCpnDcAmt();
|
|
|
+ int leftCartCpnDcAmt = orderDetail.getCartCpnDcAmt();
|
|
|
+ int leftPntDcAmt = orderDetail.getPntDcAmt();
|
|
|
+ int leftPrePntDcAmt = orderDetail.getPrePntDcAmt();
|
|
|
+ int leftSavePntAmt = orderDetail.getSavePntAmt();
|
|
|
+ int leftRealOrdAmt = orderDetail.getRealOrdAmt();
|
|
|
+ int leftGfcdUseAmt = orderDetail.getGfcdUseAmt();
|
|
|
+
|
|
|
+ for (ExtmallOrder orderDetailItem : orderDetailItemList) {
|
|
|
+ int itemPrice = orderDetailItem.getItemPrice();
|
|
|
+ int optAddPrice = orderDetailItem.getOptAddPrice();
|
|
|
+ int itemQty = orderDetailItem.getItemQty();
|
|
|
+ double currPrice = orderDetailItem.getCurrPrice();
|
|
|
+ double itemOrdAmt = (itemPrice + optAddPrice) * itemQty;
|
|
|
+ double tempDivD = (itemOrdAmt / currPrice) * 100;
|
|
|
+ int tempDiv = Integer.parseInt(String.valueOf(Math.round(tempDivD)));
|
|
|
+
|
|
|
+ if (index == length) {
|
|
|
+ orderDetailItem.setOrdAmt(leftOrdAmt);
|
|
|
+ orderDetailItem.setCpn1DcAmt(leftCpn1DcAmt);
|
|
|
+ orderDetailItem.setTmtb1DcAmt(leftTmtb1DcAmt);
|
|
|
+ orderDetailItem.setTmtb2DcAmt(leftTmtb2DcAmt);
|
|
|
+ orderDetailItem.setGoodsCpnDcAmt(leftGoodsCpnDcAmt);
|
|
|
+ orderDetailItem.setCartCpnDcAmt(leftCartCpnDcAmt);
|
|
|
+ orderDetailItem.setPntDcAmt(leftPntDcAmt);
|
|
|
+ orderDetailItem.setPrePntDcAmt(leftPrePntDcAmt);
|
|
|
+ orderDetailItem.setSavePntAmt(leftSavePntAmt);
|
|
|
+ orderDetailItem.setRealOrdAmt(leftRealOrdAmt);
|
|
|
+ orderDetailItem.setGfcdUseAmt(leftGfcdUseAmt);
|
|
|
+ } else {
|
|
|
+ orderDetailItem.setOrdAmt((orderDetail.getOrdAmt() * tempDiv) / 100);
|
|
|
+ orderDetailItem.setCpn1DcAmt((orderDetail.getCpn1DcAmt() * tempDiv) / 100);
|
|
|
+ orderDetailItem.setTmtb1DcAmt((orderDetail.getTmtb1DcAmt() * tempDiv) / 100);
|
|
|
+ orderDetailItem.setTmtb2DcAmt((orderDetail.getTmtb2DcAmt() * tempDiv) / 100);
|
|
|
+ orderDetailItem.setGoodsCpnDcAmt((orderDetail.getGoodsCpnDcAmt() * tempDiv) / 100);
|
|
|
+ orderDetailItem.setCartCpnDcAmt((orderDetail.getCartCpnDcAmt() * tempDiv) / 100);
|
|
|
+ orderDetailItem.setPntDcAmt((orderDetail.getPntDcAmt() * tempDiv) / 100);
|
|
|
+ orderDetailItem.setPrePntDcAmt((orderDetail.getPrePntDcAmt() * tempDiv) / 100);
|
|
|
+ orderDetailItem.setSavePntAmt((orderDetail.getSavePntAmt() * tempDiv) / 100);
|
|
|
+ orderDetailItem.setRealOrdAmt((orderDetail.getRealOrdAmt() * tempDiv) / 100);
|
|
|
+ orderDetailItem.setGfcdUseAmt((orderDetail.getGfcdUseAmt() * tempDiv) / 100);
|
|
|
+
|
|
|
+ leftOrdAmt = leftOrdAmt - ((orderDetail.getOrdAmt() * tempDiv) / 100);
|
|
|
+ leftCpn1DcAmt = leftCpn1DcAmt - ((orderDetail.getCpn1DcAmt() * tempDiv) / 100);
|
|
|
+ leftTmtb1DcAmt = leftTmtb1DcAmt - ((orderDetail.getTmtb1DcAmt() * tempDiv) / 100);
|
|
|
+ leftTmtb2DcAmt = leftTmtb2DcAmt - ((orderDetail.getTmtb2DcAmt() * tempDiv) / 100);
|
|
|
+ leftGoodsCpnDcAmt = leftGoodsCpnDcAmt - ((orderDetail.getGoodsCpnDcAmt() * tempDiv) / 100);
|
|
|
+ leftCartCpnDcAmt = leftCartCpnDcAmt - ((orderDetail.getCartCpnDcAmt() * tempDiv) / 100);
|
|
|
+ leftPntDcAmt = leftPntDcAmt - ((orderDetail.getPntDcAmt() * tempDiv) / 100);
|
|
|
+ leftPrePntDcAmt = leftPrePntDcAmt - ((orderDetail.getPrePntDcAmt() * tempDiv) / 100);
|
|
|
+ leftSavePntAmt = leftSavePntAmt - ((orderDetail.getSavePntAmt() * tempDiv) / 100);
|
|
|
+ leftRealOrdAmt = leftRealOrdAmt - ((orderDetail.getRealOrdAmt() * tempDiv) / 100);
|
|
|
+ leftGfcdUseAmt = leftGfcdUseAmt - ((orderDetail.getGfcdUseAmt() * tempDiv) / 100);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 2021.05.06 옵션금액 단품 추가
|
|
|
+ orderDetailItem.setOptAddPrice(optAddPrice);
|
|
|
+ orderDetailItem.setCustNo(order.getCustNo());
|
|
|
+
|
|
|
+ ocmDao.createOrderDetailItem(orderDetailItem); // 주문상세단품정보등록
|
|
|
+
|
|
|
+ ocmDao.createOrderDetailItemHst(orderDetailItem); // 주문상세단품이력정보등록
|
|
|
+
|
|
|
+ index++;
|
|
|
+
|
|
|
+
|
|
|
+ // 5. 재고등록(샵링커 주문목록을 보면 동일한 몰 주문번호에 동일한 상품(sku)이 수량이 아닌 개별로 있는 데이터가 존재하므로 > 주문번호로 한번에 처리가 아닌 개별로 처리 함)
|
|
|
+ orderDetail.setSellGb(TscConstants.SellGb.ORDER.value()); // 판매구분(10:주문(-),
|
|
|
+ ocmDao.createSellQty(orderDetail);
|
|
|
+
|
|
|
+ // 외부몰 정보 업데이트
|
|
|
+ orderDetail.setUploadStat(TsaConstants.ExtmallUploadStat.SUCC.value()); // 성공
|
|
|
ocmDao.updateExtmallOrder(orderDetail);
|
|
|
- }
|
|
|
|
|
|
- }
|
|
|
-
|
|
|
- // 8. 알림톡발송 (임시 히스토리 쌓음.)
|
|
|
- if( !"style".equals(env.getProperty("spring.profiles.active").toLowerCase())){
|
|
|
- ExtmallOrder testNoti = new ExtmallOrder();
|
|
|
- testNoti.setExtmallId(order.getExtmallId());
|
|
|
- testNoti.setExtmallOrderId(order.getExtmallOrderId());
|
|
|
- if( "ALL_FAIL".equals(result.getString("sendNotiType"))) {
|
|
|
- // 전체실패 알림톡발송
|
|
|
- testNoti.setSku("미할당 전체품절 > 실패 총 "+result.getString("failCnt")+"건 / 재고실패 "+result.getString("stockFailCnt")+"건 ("+result.getString("failGoods")+")");
|
|
|
- }else if( "ALL_SUCCESS".equals(result.getString("sendNotiType"))) {
|
|
|
- // 전체성공 알림톡발송
|
|
|
- testNoti.setSku("전체성공");
|
|
|
- }else if( "PART_SUCCESS".equals(result.getString("sendNotiType"))) {
|
|
|
-
|
|
|
- if( !"".equals(result.getString("failGoods"))) {
|
|
|
- // 부분성공 알림톡발송
|
|
|
- testNoti.setSku("부분결품 품절 > 실패 총 "+result.getString("failCnt")+"건 / 재고실패 "+result.getString("stockFailCnt")+"건 ("+result.getString("failGoods")+")");
|
|
|
- }else {
|
|
|
- // 전체성공알림톡
|
|
|
- testNoti.setSku("성공 > 실패한건이 있지만, 재고로인한건이 아님.");
|
|
|
- }
|
|
|
-
|
|
|
- }else {
|
|
|
- // "NOT" 알림톡 발송안함. 이미 발송한건
|
|
|
- testNoti.setSku("알림톡 발송안함. 동일수집건 ");
|
|
|
- }
|
|
|
- ocmDao.insertTestNotiInfo(testNoti);
|
|
|
- }
|
|
|
+ dtlNos += orderDetail.getOrdDtlNo()+",";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ // 6. 주문사은품정보등록
|
|
|
+ dtlNos = dtlNos.substring(0, dtlNos.length()-1);
|
|
|
+ String [] dtlNdsArr = dtlNos.split(","); // 주문상세번호
|
|
|
+ order.setItemCdArr(dtlNdsArr);
|
|
|
+ order.setOrdDtlStat(TscConstants.OrderDetailStat.PAYMENT_COMPLETE.value()); //주문상세상태 - 결제완료처리
|
|
|
+ GagaMap giftMap = this.getOrderFreegift(order);
|
|
|
+
|
|
|
+ if( null != giftMap) {
|
|
|
+ if( null != giftMap.get("freegiftList")) {
|
|
|
+ if( !"".equals(giftMap.get("freegiftList"))) {
|
|
|
+
|
|
|
+ // 상품코드
|
|
|
+ String dtlGoodsCds = ""; // 사은품관련 상품코드. 콤마로구분
|
|
|
+ String[] dtlGoodsCdsArr;
|
|
|
+ Collection<ExtmallOrder> freegiftApplyAmtList = (Collection<ExtmallOrder>) giftMap.get("freegiftApplyAmtList");
|
|
|
+
|
|
|
+ for(ExtmallOrder ftMap : freegiftApplyAmtList ) {
|
|
|
+ dtlGoodsCds += ftMap.getGoodsCd() +",";
|
|
|
+ }
|
|
|
+
|
|
|
+ dtlGoodsCds = dtlGoodsCds.substring(0, dtlGoodsCds.length()-1);
|
|
|
+ dtlGoodsCdsArr = dtlGoodsCds.split(",");
|
|
|
+ order.setFreegiftGoodsArr(dtlGoodsCdsArr);
|
|
|
+
|
|
|
+ Collection<ExtmallOrder> freegiftList = (Collection<ExtmallOrder>) giftMap.get("freegiftList");
|
|
|
+ ArrayList<Integer> fitValSqArr = new ArrayList<Integer>();
|
|
|
+ for(ExtmallOrder ftMap : freegiftList ) {
|
|
|
+ fitValSqArr.add(ftMap.getFreegiftValSq());
|
|
|
+ }
|
|
|
+ int[] freegiftValArr = new int[fitValSqArr.size()];
|
|
|
+ for( int i=0; i<fitValSqArr.size(); i++) {
|
|
|
+ freegiftValArr[i] = fitValSqArr.get(i);
|
|
|
+ }
|
|
|
+
|
|
|
+ order.setFreegiftValArr(freegiftValArr);
|
|
|
+ order.setCustNo(0);
|
|
|
+ if(order.getFreegiftValArr() != null && order.getFreegiftValArr().length > 0) {
|
|
|
+ ocmDao.createOrdFreegift(order);
|
|
|
+
|
|
|
+ // 6. 주문사은품 상품 정보 등록
|
|
|
+ ocmDao.createOrdFreegiftVal(order);
|
|
|
+
|
|
|
+ // 7. 주문사은품 주문상세정보 등록
|
|
|
+ for(ExtmallOrder ftMap : freegiftApplyAmtList ) {
|
|
|
+ order.setFreegiftSq(ftMap.getFreegiftSq());
|
|
|
+ order.setGoodsCd(ftMap.getGoodsCd());
|
|
|
+ ocmDao.createOrdFreegiftDtl(order);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 14. 사은품 수량 차감 로직 TB_FREEGIFT_VAL LEFT_QTY
|
|
|
+ ocmDao.updateFreegiftValLeftQty(order);
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
+
|
|
|
+ // 7. 결제 TB_PAYMENT
|
|
|
+ Payment payment = new Payment();
|
|
|
+ payment.setOrdNo(order.getOrdNo());
|
|
|
+ payment.setPayMeans(TscConstants.PayMeans.EXTMALL.value()); // 결제수단
|
|
|
+ payAmt = order.getRealOrdSumAmt() + order.getDelvFee() - cancelAmt; // 결제금액 = 실결제금액 + 배송비 - 취소금액
|
|
|
+ payment.setPayAmt(payAmt);
|
|
|
+ payment.setPgCpnAmt(0); // PG쿠폰금액
|
|
|
+ payment.setNpayPntAmt(0); // 네이버페이포인트금액
|
|
|
+ payment.setPayGb("O"); // 결제구분(O:주문시결제, D:배송시결제, E:에러(강제 결제 태울 때 또는 에러일 때)
|
|
|
+ payment.setPayStat(TscConstants.PaymentStat.PAYMENT_COMPLETE.value()); // 결제상태 - 결제완료
|
|
|
+ payment.setRegNo(0);
|
|
|
+ payment.setUpdNo(0);
|
|
|
+
|
|
|
+ ocmDao.insertPayment(payment);
|
|
|
+
|
|
|
+ }else {
|
|
|
+
|
|
|
+ // 주문등록 전체실패시 상태 업데이트
|
|
|
+ GagaMap vdMap;
|
|
|
+ for( ExtmallOrder orderDetail : order.getOrderDetailList()) {
|
|
|
+ vdMap = this.checkGoodsInfo(orderDetail);
|
|
|
+ orderDetail.setUploadStat(TsaConstants.ExtmallUploadStat.FAIL.value()); // 실패
|
|
|
+ orderDetail.setOrdNo(vdMap.getInt("ordNo")); // 실패
|
|
|
+ orderDetail.setUploadFailCd(vdMap.getString("uploadFailCd"));
|
|
|
+ orderDetail.setUploadFailReason(vdMap.getString("message"));
|
|
|
+ ocmDao.updateExtmallOrder(orderDetail);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ // 8. 알림톡발송 (임시 히스토리 쌓음.)
|
|
|
+ if( !"style".equals(env.getProperty("spring.profiles.active").toLowerCase())){
|
|
|
+ ExtmallOrder testNoti = new ExtmallOrder();
|
|
|
+ testNoti.setExtmallId(order.getExtmallId());
|
|
|
+ testNoti.setExtmallOrderId(order.getExtmallOrderId());
|
|
|
+ if( "ALL_FAIL".equals(result.getString("sendNotiType"))) {
|
|
|
+ // 전체실패 알림톡발송
|
|
|
+ testNoti.setSku("미할당 전체품절 > 실패 총 "+result.getString("failCnt")+"건 / 재고실패 "+result.getString("stockFailCnt")+"건 ("+result.getString("failGoods")+")");
|
|
|
+ }else if( "ALL_SUCCESS".equals(result.getString("sendNotiType"))) {
|
|
|
+ // 전체성공 알림톡발송
|
|
|
+ testNoti.setSku("전체성공");
|
|
|
+ }else if( "PART_SUCCESS".equals(result.getString("sendNotiType"))) {
|
|
|
+
|
|
|
+ if( !"".equals(result.getString("failGoods"))) {
|
|
|
+ // 부분성공 알림톡발송
|
|
|
+ testNoti.setSku("부분결품 품절 > 실패 총 "+result.getString("failCnt")+"건 / 재고실패 "+result.getString("stockFailCnt")+"건 ("+result.getString("failGoods")+")");
|
|
|
+ }else {
|
|
|
+ // 전체성공알림톡
|
|
|
+ testNoti.setSku("성공 > 실패한건이 있지만, 재고로인한건이 아님.");
|
|
|
+ }
|
|
|
+
|
|
|
+ }else {
|
|
|
+ // "NOT" 알림톡 발송안함. 이미 발송한건
|
|
|
+ testNoti.setSku("알림톡 발송안함. 동일수집건 ");
|
|
|
+ }
|
|
|
+ ocmDao.insertTestNotiInfo(testNoti);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -463,14 +469,6 @@ public class TsaOcmService {
|
|
|
ordGroup.setSupplyCompCd(ordDtl.getSupplyCompCd()); // 공급업체코드
|
|
|
}
|
|
|
|
|
|
- // 운영이 아닐때 고객연락처 000 처리(알림톡 발송방지)
|
|
|
- if( !"style".equals(env.getProperty("spring.profiles.active").toLowerCase())){
|
|
|
- ordDtl.setOrdPhnno("011-0000-0000");
|
|
|
- ordDtl.setOrdTelno("011-0000-0000");
|
|
|
- ordDtl.setRecipPhnno("017-0000-0000");
|
|
|
- ordDtl.setRecipTelno("017-0000-0000");
|
|
|
- }
|
|
|
-
|
|
|
tmpList.add(ordDtl);
|
|
|
ordGroup.setOrderDetailList(tmpList);
|
|
|
}
|
|
|
@@ -501,6 +499,9 @@ public class TsaOcmService {
|
|
|
|
|
|
GagaMap resultMap = this.checkGoodsInfo(orderDetail);
|
|
|
|
|
|
+ orderDetail.setUploadFailCd(resultMap.getString("uploadFailCd"));
|
|
|
+ orderDetail.setUploadFailReason(resultMap.getString("message"));
|
|
|
+
|
|
|
if ("SUCCESS".equals(resultMap.get("message").toString())) {
|
|
|
succCnt ++;
|
|
|
}else {
|
|
|
@@ -512,6 +513,8 @@ public class TsaOcmService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ result.set("orderDetailList", orderDetailList);
|
|
|
+
|
|
|
// 주문생성 여부
|
|
|
if( 0 < succCnt ) {
|
|
|
// 주문등록
|