/// <summary> /// 주문 후 뒷처리 /// </summary> /// <param name="paymentProcessResult"></param> /// <param name="requestInfo"></param> /// <returns></returns> private void PaymentProcessFollowUp(PaymentGEPPaymentProcessResultT paymentProcessResult, PaymentRequestInfoT requestInfo) { PaymentBiz paymentBiz = new PaymentBiz(); string oType = "N"; int orderResultPackNo = 0; string orderResultOrderNo = string.Empty; string orderResultOrderItemNo = string.Empty; if (paymentProcessResult.OrderResultList != null && paymentProcessResult.OrderResultList.Count > 0) { int orderResultRtnCode = paymentProcessResult.OrderResultList[0].RetCode; orderResultPackNo = paymentProcessResult.OrderResultList[0].PackNo; if (orderResultRtnCode == 0) { PaymentProcessQueryBiz paymentProcessQueryBiz = new PaymentProcessQueryBiz(); foreach (PaymentGEPOrderMultiResultT item in paymentProcessResult.OrderResultList) { orderResultOrderNo = PaymentUtil.AddComma(orderResultOrderNo + item.OrderNo.ToString().Trim()); orderResultOrderItemNo = PaymentUtil.AddComma(orderResultOrderItemNo + item.OrderNo.ToString().Trim()); // [skip] 흥정하기(BAR)시 처리 skip // 사자 주문완료 후 선택 옵션이 존재하면 재고를 차감 후 상품 상태를 변경한다. // Item 에서 재고관리를 하면 수량을 차감하고 상태를 변경한다. List<PaymentOptionDsSelOrderInfoT> paymentDsSelOrderInfoList = paymentProcessQueryBiz.GetPaymentDsSelOrderInfo(item.OrderGdNo, (long)item.OrderNo); if (paymentDsSelOrderInfoList != null && paymentDsSelOrderInfoList.Count > 0) { foreach (PaymentOptionDsSelOrderInfoT optionItem in paymentDsSelOrderInfoList) { PaymentOptionInfoChangeResultT updateOptionInfoChange = paymentProcessQueryBiz.UpdateOptionInfoChange(item.OrderGdNo, optionItem.OptNo, optionItem.InfoType, optionItem.OptOrderCnt); if (updateOptionInfoChange != null) { if (updateOptionInfoChange.RetCode == -101) { // 재고 수량이 부족하면 취소 화면으로 보냄 (구매자는 알필요가 없음) // asp 소스에서 실제적으로 에러를 내진 않음 } } } } } if (requestInfo.SafecallUse.ToUpper() == "Y") { paymentBiz.SetSafeCall(requestInfo.CustNo, orderResultPackNo); } paymentBiz.SetOrderReservedDiscount(requestInfo.BasketPid); } else if (orderResultRtnCode == -509 || orderResultRtnCode == -739 || orderResultRtnCode == -122 || orderResultRtnCode == -123 || orderResultRtnCode == -124 || orderResultRtnCode == -608) { // 일반 상품 주문시 재고 부족 에러 처리 if (orderResultRtnCode == -122 || orderResultRtnCode == -124) { //sRealCostBasisNo = .Fields("err_cost_basis_nos") & "|" & .Fields("err_cost_basis_kinds") } RollbackGepOrderStatus(paymentProcessResult.OrderResultList); throw new PaymentProcessBizException(paymentProcessResult.OrderResultList[0].RetCode, paymentProcessResult.OrderResultList[0].RetReason); } else if (orderResultRtnCode.ToString().Length == 6) { // this error codes are only for queries not exist in db transaction. the error codes are 6 digits (include minus) // delete basket info if (requestInfo.OrderWayKind.ToUpper() == "PAK" && !string.IsNullOrEmpty(requestInfo.BasketPid.Trim())) { paymentBiz.BasketInfoDeleteAll(oType, requestInfo.BasketPid, requestInfo.SelectedOrderIdxs, orderResultPackNo); } } else { RollbackGepOrderStatus(paymentProcessResult.OrderResultList); throw new PaymentProcessBizException(paymentProcessResult.OrderResultList[0].RetCode, paymentProcessResult.OrderResultList[0].RetReason); } } else { RollbackGepOrderStatus(paymentProcessResult.OrderResultList); throw new PaymentProcessBizException(paymentProcessResult.OrderResultList[0].RetCode, paymentProcessResult.OrderResultList[0].RetReason); } // convert : 여기까지가 line 2440 // 장바구니 삭제 if (requestInfo.OrderWayKind.ToUpper() == "PAK" && !string.IsNullOrEmpty(requestInfo.BasketPid.Trim())) { paymentBiz.BasketInfoDeleteAll(oType, requestInfo.BasketPid, requestInfo.SelectedOrderIdxs, orderResultPackNo); } // fix : 이부분 구현할 것 // Update order log with pack_no // convert : 여기까지가 line 2476 }