예제 #1
0
        /// <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
        }