spc-kiosk-pb/Window/WinSale/SaleMainProcess.cs
2019-06-16 14:12:09 +09:00

9688 lines
478 KiB
C#

//#20180329 프린터 간헐적 미출력 증상 수정 start
//출력 할때 마다 open, close 하는 부분 한번만 하도록 수정
//#define PRT_OPENCLOSE //적용시 주석 해제
//#20180329 프린터 간헐적 미출력 증상 수정 end
using System;
using System.Text;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using Cosmos.BaseFrame;
using Cosmos.UserFrame;
using Cosmos.ServiceProvider;
using Cosmos.Common;
using Cosmos.CommonManager;
using System.Windows.Forms;
using Newtonsoft.Json;
namespace Cosmos.Win
{
/// <summary>
/// 판매화면(상품등록) 모듈 클래스
/// </summary>
public class SaleMainProcess
{
private SManager sManager = new SManager(); // 이 객체를 통해 업무 Service 호출
private StateServer StateObject = (StateServer)StateServer.GetInstance(); // StateObject : StateServer Object (객체)
private PosStatus m_cPosStatus = new PosStatus(); // 기본정보 참조
private TranStatus m_cTrnStatus = new TranStatus(); // 거래정보 참조
private DeviceStatus m_cDevStatus = new DeviceStatus(); // 장치정보 참조
private IDatabaseSQL m_cSqlDbService = null; // 데이터베이스 관리
private IDataProcessUs m_cDataService = null; // 거래데이터 합계금액 계산 및 관리
private ISalePluItemUs m_cPluService = null; // 판매 등록 관리
private IMasterUs m_cMstService = null; // 마스터 인터페이스
private ICustDisplayUs m_cCustDisplay = null; // 고객디스플레이 관리
private IDataCommonUs m_cDataCommon = null; // POS 공통함수 인터페이스
private ISaleCompleteUs m_cSaleComplete = null; // 거래 완료처리
private IMasterUs m_cMstPayDcService = null; // 결제,할인 마스터
private ITableUs m_cTableSvr = null; // 테이블 서비스 관리
private IServiceUs m_cOrderSheetSvr = null; // 주방 주문서
private INetworkHttp m_cNetworkHttp = null;
//#20171227 인천공항 포스연동 start, phj
private IAirPortTran m_cAirPortTran = null;
//#20171227 인천공항 포스연동 end, phj
/// <summary>
/// 세트상품 그룹 마스터
/// </summary>
public DataTable m_dtSetMenuGroup = new DataTable();
/// <summary>
/// 세트상품 상세 마스터
/// </summary>
public DataTable m_dtSetMenuDetail = new DataTable();
///// <summary>
///// 강제 부가메뉴 그룹 마스터
///// </summary>
//public DataTable m_dtForceSubMenuGroup = new DataTable();
///// <summary>
///// 강제 부가메뉴 상세 마스터
///// </summary>
//public DataTable m_dtForceSubMenuDetail = new DataTable();
private ICashdrawerUs m_cCashDrawer = null;//170811 dkshin 돈통 열리는 시점 변경(현금영수증 전)
/// <summary>
/// 생성자
/// </summary>
public SaleMainProcess()
{
m_cPosStatus = (PosStatus)StateObject.POS;
m_cTrnStatus = (TranStatus)StateObject.TRAN;
m_cDevStatus = (DeviceStatus)StateObject.DEVICE;
m_cSqlDbService = (IDatabaseSQL)sManager.InitServiceInstance(ServiceLists.AGENT_DATABASE.DLL, ServiceLists.AGENT_DATABASE.DATABASE_MSSQL);
m_cDataService = (IDataProcessUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_SERVICE);
m_cPluService = (ISalePluItemUs)sManager.InitServiceInstance(ServiceLists.BSV_SALE.DLL, ServiceLists.BSV_SALE.SALE_PLU_ITEM);
m_cMstService = (IMasterUs)sManager.InitServiceInstance(ServiceLists.ASV_MASTER.DLL, ServiceLists.ASV_MASTER.POS_MASTER);
m_cCustDisplay = (ICustDisplayUs)sManager.InitServiceInstance(ServiceLists.ASV_CUSTDISPLAY.DLL, ServiceLists.ASV_CUSTDISPLAY.CUST_DISPLAY);
m_cDataCommon = (IDataCommonUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_COMMON);
m_cSaleComplete = (ISaleCompleteUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.SALE_COMPLETE);
m_cMstPayDcService = (IMasterUs)sManager.InitServiceInstance(ServiceLists.ASV_MASTER.DLL, ServiceLists.ASV_MASTER.PAY_DC_MASTER);
m_cTableSvr = (ITableUs)sManager.InitServiceInstance(ServiceLists.BSV_TABLE.DLL, ServiceLists.BSV_TABLE.TABLE_SERVICE);
m_cOrderSheetSvr = (IServiceUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.POS_RECEIPT_ORDERSHEET);
m_cCashDrawer = (ICashdrawerUs)sManager.InitServiceInstance(ServiceLists.AGENT_OLEDEVICE.DLL, ServiceLists.AGENT_OLEDEVICE.DEVICE_CASHDRAWER);
//#20171227 인천공항 포스연동 start, phj
m_cAirPortTran = (IAirPortTran)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.AIRPORT_TRAN);
//#20171227 인천공항 포스연동 end, phj
m_cNetworkHttp = (INetworkHttp)sManager.InitServiceInstance(ServiceLists.AGENT_NETWORK.DLL, ServiceLists.AGENT_NETWORK.NETWORK_HTTP);
}
/// <summary>
/// 판매 기능키 처리
/// </summary>
/// <param name="sMenuKey">기능키</param>
/// <param name="sInPutData">입력데이터</param>
/// <param name="sSelRow">선택그리드행</param>
/// <param name="sEtcData">기타</param>
/// <returns></returns>
//#20171117 통제, 슈퍼바이저 로그인창 여러번 표시 되는 현상 수정 start
//기존
//public bool ExecuteSaleMainProcess(string sMenuKey, string sInPutData, string sSelRow, string sEtcData)
//변경
public bool ExecuteSaleMainProcess(string sMenuKey, string sInPutData, string sSelRow, string sEtcData, bool sMenuKeyAuth = false)
//#20171117 통제, 슈퍼바이저 로그인창 여러번 표시 되는 현상 수정 end
{
bool bRet = false;
try
{
m_cPosStatus.Sale.ScreenSaverTime = ""; //화면보호기 대기시간 설정
//#20171117 통제, 슈퍼바이저 로그인창 여러번 표시 되는 현상 수정 start
//기존
//if (WinBasic.CheckMenuKeyAuth(sMenuKey) == false) return false; // 기능키 판매원 권한 체크
//변경
if (sMenuKeyAuth == false)
{
if (WinBasic.CheckMenuKeyAuth(sMenuKey) == false) return false; // 기능키 판매원 권한 체크
}
//#20171117 통제, 슈퍼바이저 로그인창 여러번 표시 되는 현상 수정 end
//string sMngAuth = PosMstManager.GetMstPicAuth(m_cPosStatus.Base.CashierNo + sMenuKey);
//switch (sMngAuth)
//{
// case PosConst.MNG_AUTH_DIV.NON_PERMISSION:
// WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0308), MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0505), false);
// return false;
// case PosConst.MNG_AUTH_DIV.PERMISSION:
// break;
// case PosConst.MNG_AUTH_DIV.SUPERVISOR:
// if (WinBasic.ShowForm(new string[] { FormManager.FORM_LOG_ON, PosKey.MENU_KEY.REGISTER_ADMIN }) == UserCom.RST_ERR) return false;
// //string sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_CASHIER_INPUT, "Supervisor" });
// //if (sRet != UserCom.RST_OK)
// //{
// // return false;
// //}
// break;
//}
if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_WAIT) // 판매대기 모드
{
if (WaitSaleDataCheck(sMenuKey) == false)
return false;
switch (sMenuKey)
{
case PosKey.MENU_KEY.REGISTER_PLU_ITEM: // 상품등록
bRet = RegisterPluItem(sSelRow, sEtcData, sInPutData);
break;
case PosKey.MENU_KEY.GIFT_SALE:
case PosKey.MENU_KEY.PREPAID_CARD:
RegisterSellGift(sMenuKey);
break;
case PosKey.MENU_KEY.RETURN_ITEM:
RegisterReturnItem();
break;
case PosKey.MENU_KEY.TRADE_STOP: //거래중지
bRet = TradeStop();
break;
case PosKey.MENU_KEY.SALE_LOSS: //판매로스
bRet = RegSaleLosss(sSelRow);
break;
case PosKey.MENU_KEY.ORDER_COMPLETED: //주문완료
bRet = OrderCompleted();
break;
case PosKey.MENU_KEY.SEARCH: //상품 조회
bRet = ItemSearch();
break;
case PosKey.MENU_KEY.HOLD_DEAL: //보류
bRet = HoldDeal();
break;
case PosKey.MENU_KEY.CASH_APPROVAL_LATER: //사후 현금영수증
{
PayCashbill(sMenuKey);
break;
}
case PosKey.MENU_KEY.LAST_DEAL_PRINT: //직전영수증 출력
bRet = LastDealPrint();
break;
case PosKey.MENU_KEY.RESERVATIONS_REGISTER: //예약등록
{
RegSaleReservations();
break;
}
case PosKey.MENU_KEY.RESERVATION_COMPLETED: //예약완료
{
RegSaleReservedFinish();
break;
}
case PosKey.MENU_KEY.RECEIPT_REPRINT: //영수증 재발행
{
SaleReReceiptRePrint();
break;
}
case PosKey.MENU_KEY.HP_GIFT_CHARGED: //해피 기프트 충전
{
PayHappyGift(PosKey.MENU_KEY.HP_GIFT_CHARGED);
break;
}
case PosKey.MENU_KEY.RETURN_RECEIPT: //영수증 반품
SaleRefundReceipt();
break;
case PosKey.MENU_KEY.HPP_APPROVAL_LATER: // 추후적립
HappyPointAfterSave();
break;
case PosKey.MENU_KEY.HAPPY_ORDERS: // 해피오더
HappyOrder();
break;
case PosKey.MENU_KEY.HP_REGULAR_CUST: // 단골매장등록
HappyPointRegularCust();
break;
case PosKey.MENU_KEY.EXCHANGE: // 환전
OpenManualCashdrawer();
break;
case PosKey.MENU_KEY.HAPPY_BUZ_SEARCH: // 해피버즈 현황 조회
HappyBuzzSearch();
break;
case PosKey.MENU_KEY.CHECK_SEARCH: // 수표조회
PayCheck(sMenuKey);
break;
case PosKey.MENU_KEY.GIFT_CARD_SCH: // 상품권조회
PayGiftSearch(sMenuKey);
break;
case PosKey.MENU_KEY.MOBILE_COUPON_SCH: // 모바일쿠폰조회
PayMobileCouponSearch(sMenuKey);
break;
case PosKey.MENU_KEY.ONLINE_COUPONS_SCH: // 온라인쿠폰조회(중국)
PayOnLineCoupon(sMenuKey);
break;
case PosKey.MENU_KEY.BRITHDAY_CANDLE: // 생일초계산
BrithDayCandle(sMenuKey);
break;
case PosKey.MENU_KEY.ORDER_EXIT: // 주문종료
bRet = OrderCancelExit();
break;
case PosKey.MENU_KEY.EDIT_CUST_CNT: // 고객수 수정
bRet = EditCustCnt();
break;
//#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 start
//기존
/*
//17.05.18 dkshin 쇼킹박스 추가
case PosKey.MENU_KEY.SHOCKING_BOX: // 쇼킹박스 상품 불러오기
bRet = ShockingBox(sEtcData);
break;
*/
//변경
case PosKey.MENU_KEY.SHOCKING_BOX:
case PosKey.MENU_KEY.ITEMINFO_PRINT:
bRet = ShockingBox(sMenuKey, sEtcData);
break;
//#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 end
//20171013 dkshin 해피기프트(신) IC/RF 충전 및 승인
case PosKey.MENU_KEY.HAPPY_GIFTCARD_CHARGE: // 해피기프트(신) 충전
//HappyGiftCardRecharge(sMenuKey);
HappyGiftNewRecharge(sMenuKey);
break;
// 지움 버튼 클릭 시 오류POP-UP 수정(2017.07.10)
case PosKey.MENU_KEY.CLEAR: // 지움
// 키보드 화살표 키 클릭 시 오류POP-UP 수정(2017.07.14)
case PosKey.MENU_KEY.SCANKEY_UP_ARROW:
case PosKey.MENU_KEY.SCANKEY_DOWN_ARROW:
bRet = true;
break;
//#20171227, 예약증 양식 출력 Start
case PosKey.MENU_KEY.RESERVATION_FORM_PRINT: // 예약증 양식 출력
bRet = ReservationFormPrint();
break;
//#20171227, 예약증 양식 출력 End
//#14341 PB서대문행복-판매화면 [관리]-조회에서 교통카드 조회 기능 사용불가 start
case PosKey.MENU_KEY.TMONEY_SEARCH: //교통카드 잔액조회
PayTMoneyCashBee(new string[] { FormManager.FORM_PAY_TMONEY, PosKey.MENU_KEY.T_MONEY, "", "S" });
break;
//#14341 PB서대문행복-판매화면 [관리]-조회에서 교통카드 조회 기능 사용불가 end
//#20180413 웰컴카드 신규기능 추가 start,phj
case PosKey.MENU_KEY.WELCOMECARD_ISSUE: // 웰컴카드 발급화면
bRet = WelcomeCard_Issue(sMenuKey, "1");
break;
case PosKey.MENU_KEY.WELCOMECARD_HPAPP_REGISTER: // 해피앱 고객등록
bRet = WelcomeCard_Issue(sMenuKey, "1");
break;
//#20180413 웰컴카드 신규기능 추가 end,phj
//*********************************************************************
// (2017.11.01) 해피포인트 제휴할인 선리딩 처리를 위한 기능키 클릭 처리
//---------------------------------------------------------------------
// - 만약 해피포인트 및 제휴할인 카드가 등록되어 있을 경우
// 등록된 역순으로 취소 처리한다.
//*********************************************************************
#region
case PosKey.MENU_KEY.COOPERATION_CARD_CANCEL:
//*** MoonSeokWoo 2017.12.12 Add
//폼 획득
frmSaleMain fSalMain = (frmSaleMain)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
//*** MoonSeokWoo 2017.12.12 End
// 만약 해피포인트 카드 번호 및 제휴할인 카드 번호가 존재할 경우 -----
if (m_cPosStatus.Sale.strHappyPointCardNo != "" || m_cPosStatus.Sale.strMobileUnityCardNo != "")
{
if (m_cPosStatus.Sale.strPriorReading_Title[1] != null && m_cPosStatus.Sale.strPriorReading_Title[1] != "")
{
// 만약 리딩 타이틀 배열 변수에 1번째 리딩 항목이 존재할 경우 -----
if (m_cPosStatus.Sale.strPriorReading_Title[1] == "HPC")
{
// 해피포인트 카드 변수 클리어 -----
m_cPosStatus.Sale.strHappyPointCardNo = "";
//#15169 임직원 해피App 바코드리딩 시 자동할인적용 개선요청 start
m_cPosStatus.Sale.strEmpInfo = "";
//#15169 임직원 해피App 바코드리딩 시 자동할인적용 개선요청 end
}
else { m_cPosStatus.Sale.strMobileUnityCardNo = ""; }
fSalMain.AllianceCardInit(false
, m_cPosStatus.Sale.strPriorReading_Title[1] == "HPC" ? MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0789) : m_cPosStatus.Sale.strPriorReading_Title[1]
, m_cPosStatus.Sale.strPriorReading_Title[1] == "HPC" ? true : false);
m_cPosStatus.Sale.strPriorReading_Title[1] = "";
}
else if (m_cPosStatus.Sale.strPriorReading_Title[0] != null && m_cPosStatus.Sale.strPriorReading_Title[0] != "")
{
// 만약 리딩 타이틀 배열 변수에 0번째 리딩 항목이 존재할 경우 -----
if (m_cPosStatus.Sale.strPriorReading_Title[0] == "HPC")
{
// 해피포인트 카드 변수 클리어 -----
m_cPosStatus.Sale.strHappyPointCardNo = "";
//#15169 임직원 해피App 바코드리딩 시 자동할인적용 개선요청 start
m_cPosStatus.Sale.strEmpInfo = "";
//#15169 임직원 해피App 바코드리딩 시 자동할인적용 개선요청 end
}
else { m_cPosStatus.Sale.strMobileUnityCardNo = ""; }
fSalMain.AllianceCardInit(false
, m_cPosStatus.Sale.strPriorReading_Title[0] == "HPC" ? MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0789) : m_cPosStatus.Sale.strPriorReading_Title[0]
, m_cPosStatus.Sale.strPriorReading_Title[0] == "HPC" ? true : false);
m_cPosStatus.Sale.strPriorReading_Title[0] = "";
}
}
break;
#endregion
default:
//#20171117 통제, 슈퍼바이저 로그인창 여러번 표시 되는 현상 수정 start
//기존
/*
if (WinSale.ExecuteBinessRun(sMenuKey) == UserCom.RST_IGNORE)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0020); // 판매 대기중에 처리 할수 없는 기능 입니다.
}
*/
//변경
if (WinSale.ExecuteBinessRun(sMenuKey, sMenuKeyAuth) == UserCom.RST_IGNORE)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0020); // 판매 대기중에 처리 할수 없는 기능 입니다.
}
//#20171117 통제, 슈퍼바이저 로그인창 여러번 표시 되는 현상 수정 end
break;
}
}
else if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING) // 상품등록 중 모드
{
//#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 start
if (m_cTrnStatus.Head.ShockingBoxStat == "1" && m_cTrnStatus.Head.ShockingBoxTradeKind == ItemConst.TRAN_KIND.HPO_LOG.LANDOM_BOX
&& sMenuKey != PosKey.MENU_KEY.TRADE_STOP)
{
WinManager.ConfirmMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0054));
return bRet;
}
//#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 end
switch (sMenuKey)
{
case PosKey.MENU_KEY.REGISTER_PLU_ITEM: // 상품등록
bRet = RegisterPluItem(sSelRow, sEtcData, sInPutData);
break;
case PosKey.MENU_KEY.CANCEL_ITEM: // 지정취소
bRet = CancelPluItem(sSelRow);
break;
case PosKey.MENU_KEY.QUANTITY: // 수량변경
case PosKey.MENU_KEY.QTY_PLUS:
case PosKey.MENU_KEY.QTY_MINUS:
bRet = QtyChangePluItem(sMenuKey, sSelRow, sInPutData);
break;
case PosKey.MENU_KEY.ADD_MENU: // 부가메뉴
bRet = RegisterChoiceSubMenu(sSelRow);
break;
case PosKey.MENU_KEY.FLAVOR: // 플레이버
bRet = RegisterFlavourMenu("");
break;
case PosKey.MENU_KEY.PAYMENTS: // 결제
bRet = RegisterPayment("", "");
break;
case PosKey.MENU_KEY.CASH: // 현금
case PosKey.MENU_KEY.CREDIT_CARD: // 신용카드
case PosKey.MENU_KEY.WECHATPAY: //위챗페이
case PosKey.MENU_KEY.WECHATPAY_BAIRONG: //샤오청쉬 위챗페이-바이롱;girak.kim;2017.09.11.001
case PosKey.MENU_KEY.XIAOCHENGXU_GIFTCARD: //샤오청쉬 기프트카드;girak.kim;2017.09.11.001
bRet = RegisterPayment(sMenuKey, sInPutData);
break;
case PosKey.MENU_KEY.ITEM_DC_AMT: //단품 금액 할인
case PosKey.MENU_KEY.ITEM_DC_RATE: //단품 율 할인
case PosKey.MENU_KEY.FREE_DC: //서비스(무료)
case PosKey.MENU_KEY.ELOVE_DC: //환경사랑DC
case PosKey.MENU_KEY.ITEM_CHAGE_CPN: //제품교환권
case PosKey.MENU_KEY.IN_EMP_DC: //입점매장직원할인(단품)
bRet = RegisterItemDc(sMenuKey, sSelRow, sInPutData);
break;
case PosKey.MENU_KEY.TRADE_STOP: //거래중지
bRet = TradeStop();
break;
case PosKey.MENU_KEY.NOTAX: //NO TAX
bRet = ItemNoTax(sSelRow);
break;
//#Rhee, 20180212 ALL NO TAX 기능 추가 Start
case PosKey.MENU_KEY.ALL_NOTAX: //ALL NO TAX
bRet = ItemAllNoTax();
break;
//#Rhee, 20180212 ALL NO TAX 기능 추가 End
case PosKey.MENU_KEY.ORDER_COMPLETED: //주문완료
bRet = OrderCompleted();
break;
case PosKey.MENU_KEY.ITEM_MEMO: //상품메모
bRet = ItemMmeo(false);
break;
case PosKey.MENU_KEY.SEARCH: //상품 조회
bRet = ItemSearch();
break;
case PosKey.MENU_KEY.HOLD_DEAL: //보류
bRet = HoldDeal();
break;
case PosKey.MENU_KEY.TAKE_IN_OUT: //TAKE_IN_OUT
bRet = SetTakeInOut();
break;
case PosKey.MENU_KEY.BUNDLE_ITEM: //묶음상품/쇼킹박스
bRet = BundleiTem(sMenuKey);
break;
case PosKey.MENU_KEY.DUTCH_PAY: //더치페이
bRet = DutchPay(sMenuKey, "0");
break;
case PosKey.MENU_KEY.DUTCH_PAY_AMT: //더치페이(금액)
bRet = DutchPayAmt(sMenuKey, "0");
break;
case PosKey.MENU_KEY.SET_MENU_CHANGE: // 세트메뉴 상품 변경
bRet = SetMenuItemChange(sSelRow);
break;
case PosKey.MENU_KEY.FIRE_KEY: // FIRE KEY
bRet = ItemMmeo(true);
break;
case PosKey.MENU_KEY.EXCHANGE: // 환전
OpenManualCashdrawer();
break;
case PosKey.MENU_KEY.HAPPY_BUZ_SEARCH: // 해피버즈 현황 조회
HappyBuzzSearch();
break;
case PosKey.MENU_KEY.CHECK_SEARCH: // 수표조회
PayCheck(sMenuKey);
break;
case PosKey.MENU_KEY.GIFT_CARD_SCH: // 상품권조회
PayGiftSearch(sMenuKey);
break;
case PosKey.MENU_KEY.MOBILE_COUPON_SCH: // 모바일쿠폰조회
PayMobileCouponSearch(sMenuKey);
break;
case PosKey.MENU_KEY.ONLINE_COUPONS_SCH: //온라인쿠폰조회(중국)
PayOnLineCoupon(sMenuKey);
break;
case PosKey.MENU_KEY.ORDER_PRINT: // 주문내역서 출력
bRet = OrderBillPrint();
break;
case PosKey.MENU_KEY.CUSTOMER_CLAIMS_LIST: // 고객 불만 등록
case PosKey.MENU_KEY.REG_PVC: // PVC상자재고
case PosKey.MENU_KEY.POS_ETC_RECEIPT: // 간이영수증
case PosKey.MENU_KEY.RECEIPT_REPRINT: // 영수증 재발행
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0021); // 상품 등록중에 처리 할수 없는 기능 입니다
break;
case PosKey.MENU_KEY.BRITHDAY_CANDLE: // 생일초계산
BrithDayCandle(sMenuKey);
break;
case PosKey.MENU_KEY.ORDER_EXIT: // 주문종료
bRet = OrderCancelExit();
break;
case PosKey.MENU_KEY.MULTI_DCITEM: // 선택 아이템 할인
MultiItemDc(sMenuKey);
break;
case PosKey.MENU_KEY.EDIT_CUST_CNT: // 고객수 수정
bRet = EditCustCnt();
break;
case PosKey.MENU_KEY.SALE_LOSS: //판매로스
bRet = RegSaleLosss(sSelRow);
break;
//#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 start
//기존
/*
//17.05.18 dkshin 쇼킹박스 추가
case PosKey.MENU_KEY.SHOCKING_BOX:
bRet = ShockingBox(sEtcData);
break;
*/
//변경
case PosKey.MENU_KEY.SHOCKING_BOX:
case PosKey.MENU_KEY.ITEMINFO_PRINT:
bRet = ShockingBox(sMenuKey, sEtcData);
break;
//#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 end
// 지움 버튼 클릭 시 오류POP-UP 수정(2017.07.10)
case PosKey.MENU_KEY.CLEAR: // 지움
// 화살표 키 클릭 시 오류POP-UP 수정(2017.07.14)
case PosKey.MENU_KEY.SCANKEY_UP_ARROW:
case PosKey.MENU_KEY.SCANKEY_DOWN_ARROW:
bRet = true;
break;
//#20171227, 예약증 양식 출력 Start
case PosKey.MENU_KEY.RESERVATION_FORM_PRINT: // 예약증 양식 출력
bRet = ReservationFormPrint();
break;
//#20171227, 예약증 양식 출력 End
//#14341 PB서대문행복-판매화면 [관리]-조회에서 교통카드 조회 기능 사용불가 start
case PosKey.MENU_KEY.TMONEY_SEARCH: //교통카드 잔액조회
PayTMoneyCashBee(new string[] { FormManager.FORM_PAY_TMONEY, PosKey.MENU_KEY.T_MONEY, "", "S" });
break;
//#14341 PB서대문행복-판매화면 [관리]-조회에서 교통카드 조회 기능 사용불가 end
//#20180413 웰컴카드 신규기능 추가 start,phj
case PosKey.MENU_KEY.WELCOMECARD_ISSUE: // 웰컴카드 발급
bRet = WelcomeCard_Issue(sMenuKey, "1");
break;
case PosKey.MENU_KEY.WELCOMECARD_HPAPP_REGISTER: // 웰컴카드 해피앱 고객등록
bRet = WelcomeCard_Issue(sMenuKey, "1");
break;
//#20180413 웰컴카드 신규기능 추가 end,phj
//*********************************************************************
// (2017.11.01) 해피포인트 제휴할인 선리딩 처리를 위한 기능키 클릭 처리
//---------------------------------------------------------------------
// - 만약 해피포인트 및 제휴할인 카드가 등록되어 있을 경우
// 등록된 역순으로 취소 처리한다.
//*********************************************************************
#region
case PosKey.MENU_KEY.COOPERATION_CARD_CANCEL:
// 만약 해피포인트 카드 번호 및 제휴할인 카드 번호가 존재할 경우 -----
if (m_cPosStatus.Sale.strHappyPointCardNo != "" || m_cPosStatus.Sale.strMobileUnityCardNo != "")
{
if (m_cPosStatus.Sale.strPriorReading_Title[1] != null && m_cPosStatus.Sale.strPriorReading_Title[1] != "")
{
// 만약 리딩 타이틀 배열 변수에 1번째 리딩 항목이 존재할 경우 -----
if (m_cPosStatus.Sale.strPriorReading_Title[1] == "HPC")
{
// 해피포인트 카드 변수 클리어 -----
m_cPosStatus.Sale.strHappyPointCardNo = "";
//#15169 임직원 해피App 바코드리딩 시 자동할인적용 개선요청 start
m_cPosStatus.Sale.strEmpInfo = "";
//#15169 임직원 해피App 바코드리딩 시 자동할인적용 개선요청 end
}
else { m_cPosStatus.Sale.strMobileUnityCardNo = ""; }
m_cPosStatus.Sale.strPriorReading_Title[1] = "";
}
else if (m_cPosStatus.Sale.strPriorReading_Title[0] != null && m_cPosStatus.Sale.strPriorReading_Title[0] != "")
{
// 만약 리딩 타이틀 배열 변수에 0번째 리딩 항목이 존재할 경우 -----
if (m_cPosStatus.Sale.strPriorReading_Title[0] == "HPC")
{
// 해피포인트 카드 변수 클리어 -----
m_cPosStatus.Sale.strHappyPointCardNo = "";
//#15169 임직원 해피App 바코드리딩 시 자동할인적용 개선요청 start
m_cPosStatus.Sale.strEmpInfo = "";
//#15169 임직원 해피App 바코드리딩 시 자동할인적용 개선요청 end
}
else { m_cPosStatus.Sale.strMobileUnityCardNo = ""; }
m_cPosStatus.Sale.strPriorReading_Title[0] = "";
}
}
break;
#endregion
//#Rhee, 20180130 단품 할인 전체 취소 추가 Start
case PosKey.MENU_KEY.DISCOUNT_CANCEL: //단품 금액 할인 전체 취소
bRet = RegisterItemDcCancel(sMenuKey, ItemConst.PLU_DC_DIV.POS_DC, ItemConst.PLU_DC_TYPE.DC_ITEM);
break;
//#Rhee, 20180130 단품 할인 전체 취소 추가 End
default:
//#20171117 통제, 슈퍼바이저 로그인창 여러번 표시 되는 현상 수정 start
//기존
/*
if (WinSale.ExecuteBinessRun(sMenuKey) == UserCom.RST_IGNORE)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0021); // 상품 등록중에 처리 할수 없는 기능 입니다
}
*/
//변경
if (WinSale.ExecuteBinessRun(sMenuKey, sMenuKeyAuth) == UserCom.RST_IGNORE)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0021); // 상품 등록중에 처리 할수 없는 기능 입니다
}
//#20171117 통제, 슈퍼바이저 로그인창 여러번 표시 되는 현상 수정 end
break;
}
}
else if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING_SET) // 세트메뉴 등록 중 모드
{
switch (sMenuKey)
{
case PosKey.MENU_KEY.REGISTER_PLU_ITEM: // 상품등록
bRet = RegisterPluItem(sSelRow, sEtcData, sInPutData);
break;
case PosKey.MENU_KEY.EXCHANGE: // 환전
OpenManualCashdrawer();
break;
case PosKey.MENU_KEY.TRADE_STOP: // 거래중지
bRet = TradeStop();
break;
case PosKey.MENU_KEY.ORDER_EXIT: // 주문종료
bRet = OrderCancelExit();
break;
// 지움 버튼 클릭 시 오류POP-UP 수정(2017.07.10)
case PosKey.MENU_KEY.CLEAR: // 지움
bRet = true;
break;
default:
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0023); // 세트메뉴 등록중에 처리 할수 없는 기능 입니다
//if (WinSale.ExecuteBinessRun(sMenuKey) == UserCom.RST_IGNORE)
//{
// WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0023); // 세트메뉴 등록중에 처리 할수 없는 기능 입니다
//}
break;
}
}
else if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING_OPT || m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING_SET_OPT) // 부가메뉴 등록 중 모드
{
switch (sMenuKey)
{
//#2017122 #13238 LG 은평_은평_부가메뉴 입력 안되는 증상 start, phj
//기존
/*
#if false //grayber@20171213 부가메뉴 등록중 일때 동작 개선 start
//case PosKey.MENU_KEY.REGISTER_PLU_ITEM: // 상품등록
// bRet = RegisterPluItem(sSelRow, sEtcData, sInPutData);
// break;
#endif //grayber@20171213 부가메뉴 등록중 일때 동작 개선 end
*/
//변경
case PosKey.MENU_KEY.REGISTER_PLU_ITEM: // 상품등록
bRet = RegisterPluItem(sSelRow, sEtcData, sInPutData);
break;
//#2017122 #13238 LG 은평_은평_부가메뉴 입력 안되는 증상 end, phj
case PosKey.MENU_KEY.CANCEL_ITEM: // 지정취소
bRet = CancelPluItem(sSelRow);
break;
case PosKey.MENU_KEY.QUANTITY: // 수량변경
case PosKey.MENU_KEY.QTY_PLUS:
case PosKey.MENU_KEY.QTY_MINUS:
bRet = QtyChangePluItem(sMenuKey, sSelRow, sInPutData);
break;
case PosKey.MENU_KEY.EXCHANGE: // 환전
OpenManualCashdrawer();
break;
case PosKey.MENU_KEY.TRADE_STOP: // 거래중지
bRet = TradeStop();
break;
case PosKey.MENU_KEY.ORDER_COMPLETED: // 주문완료
if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING_OPT)
{
bRet = OrderCompleted();
}
else
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0022); // 부가메뉴 등록 중 처리 할 수 없는 기능 입니다.
}
break;
case PosKey.MENU_KEY.ORDER_EXIT: // 주문종료
bRet = OrderCancelExit();
break;
// 지움 버튼 클릭 시 오류POP-UP 수정(2017.07.10)
case PosKey.MENU_KEY.CLEAR: // 지움
bRet = true;
break;
default:
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0022); // 부가메뉴 등록 중 처리 할 수 없는 기능 입니다.
break;
}
}
//else if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING_FLAVOUR) // 플레이버 등록 중 모드
//{
// switch (sMenuKey)
// {
// case PosKey.MENU_KEY.REGISTER_PLU_ITEM: // 상품등록
// bRet = RegisterPluItem(sSelRow, sEtcData, sInPutData);
// break;
// case PosKey.MENU_KEY.CANCEL_ITEM: // 지정취소
// bRet = CancelPluItem(sSelRow);
// break;
// case PosKey.MENU_KEY.QUANTITY: // 수량변경
// case PosKey.MENU_KEY.QTY_PLUS:
// case PosKey.MENU_KEY.QTY_MINUS:
// bRet = QtyChangePluItem(sMenuKey, sSelRow, sInPutData);
// break;
// default:
// WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0033); // 플레이버 등록 중 처리 할 수 없는 기능 입니다.
// break;
// }
//}
else if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.PAY_WAIT) // 결제대기 중 모드
{
if (m_cPosStatus.Sale.EtcOperateMode == PosConst.ETC_OPERATION_MODE.TABLE_GROUP_PAY)
{
switch (sMenuKey)
{
case PosKey.MENU_KEY.CASH: // 현금
case PosKey.MENU_KEY.CREDIT_CARD: // 신용카드
case PosKey.MENU_KEY.WECHATPAY: //위챗페이
bRet = RegisterPayment(sMenuKey, sInPutData);
break;
case PosKey.MENU_KEY.PAYMENTS: // 결제
bRet = RegisterPayment("", "");
break;
case PosKey.MENU_KEY.EXCHANGE: // 환전
OpenManualCashdrawer();
break;
case PosKey.MENU_KEY.HAPPY_BUZ_SEARCH: // 해피버즈 현황 조회
HappyBuzzSearch();
break;
case PosKey.MENU_KEY.CHECK_SEARCH: // 수표조회
PayCheck(sMenuKey);
break;
case PosKey.MENU_KEY.DUTCH_PAY: // 더치페이
bRet = DutchPay(sMenuKey, "0");
break;
case PosKey.MENU_KEY.DUTCH_PAY_AMT: // 더치페이(금액)
bRet = DutchPayAmt(sMenuKey, "0");
break;
case PosKey.MENU_KEY.BRITHDAY_CANDLE: // 생일초계산
BrithDayCandle(sMenuKey);
break;
case PosKey.MENU_KEY.ITEM_DC_AMT: // 단품 금액 할인
case PosKey.MENU_KEY.ITEM_DC_RATE: // 단품 율 할인
case PosKey.MENU_KEY.FREE_DC: // 서비스(무료)
case PosKey.MENU_KEY.ELOVE_DC: // 환경사랑DC
case PosKey.MENU_KEY.ITEM_CHAGE_CPN: // 제품교환권
case PosKey.MENU_KEY.IN_EMP_DC: // 입점매장직원할인(단품)
bRet = RegisterItemDc(sMenuKey, sSelRow, sInPutData);
break;
case PosKey.MENU_KEY.ORDER_EXIT: // 주문종료
bRet = OrderCancelExit();
break;
//#20180413 웰컴카드 신규기능 추가 start,phj
case PosKey.MENU_KEY.WELCOMECARD_ISSUE: // 웰컴카드 발급화면
bRet = WelcomeCard_Issue(sMenuKey, "2");
break;
case PosKey.MENU_KEY.WELCOMECARD_HPAPP_REGISTER:// 웰컴카드 해피앱 고객등록
bRet = WelcomeCard_Issue(sMenuKey, "2");
break;
//#20180413 웰컴카드 신규기능 추가 end,phj
//#20180202 인천공항 VIP 라운지 기능미사용으로 주석처리 start,phj
/*
// grayber@20180115 인천공항 VIP 라운지 start - 결제 대기중 메뉴키 기능 추가
case PosKey.MENU_KEY.AIRPORT_VIP_LOUNGE:
bRet = RegisterPayment("", "");
break;
// grayber@20180115 인천공항 VIP 라운지 end
*/
//#20180202 인천공항 VIP 라운지 기능미사용으로 주석처리 end,phj
//grayber@20180208 코레일 마일리지 입력 start - 메뉴키 기능 추가
case PosKey.MENU_KEY.KORAIL_MILEAGE:
bRet = RegisterPayment("", "");
break;
//grayber@20180208 코레일 마일리지 입력 end
default:
//#20171117 통제, 슈퍼바이저 로그인창 여러번 표시 되는 현상 수정 start
//기존
/*
if (WinSale.ExecuteBinessRun(sMenuKey) == UserCom.RST_IGNORE)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0112);
}
*/
//변경
if (WinSale.ExecuteBinessRun(sMenuKey, sMenuKeyAuth) == UserCom.RST_IGNORE)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0112);
}
//#20171117 통제, 슈퍼바이저 로그인창 여러번 표시 되는 현상 수정 end
break;
}
}
}
else if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.PAY_DOING) // 결제 중 모드
{
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
finally
{
m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss"); //화면보호기 대기시간 설정
}
return bRet;
}
/// <summary>
/// 상품 등록 처리
/// </summary>
/// <param name="sSelRow">선택행</param>
/// <param name="sInPutTypeCode">(0:수입력, 1:메뉴, 2:스켄) + (메뉴코드,스캔코드)</param>
/// <param name="sInPutData">입력데이터</param>
/// <returns></returns>
public bool RegisterPluItem(string sSelRow, string sInPutTypeCode, string sInPutData)
{
bool bRet = false;
try
{
//17.05.18 dkshin 쇼킹박스 추가
//if( m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.LOG.SHOCKING_BOX )
if (m_cTrnStatus.Head.ShockingBoxStat == "1")
{
WinManager.ConfirmMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0698));
return bRet;
}
// 판매화면
//IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
if (sInPutTypeCode != "")
{
if (m_cPosStatus.Mst.CorpDiv == ItemConst.CORP_DIV.BR)
{
// grayber@20180108 [BR] 바코드 18자리 인식 추가 start
//기존
//BR, DD
//if (sInPutTypeCode.Length == 17 && CmUtil.RightH(sInPutTypeCode, 6) == "N9999X")
//{
// //WEB 호출!
// WinBasic.ShowWebPos(PosKey.MENU_KEY.ORDER_REG, sInPutTypeCode.Substring(1));
// return true;
//}
// 변경
if ((sInPutTypeCode.Length == (1 + 16)
|| sInPutTypeCode.Length == (1 + 18))
&& CmUtil.RightH(sInPutTypeCode, 6) == "N9999X"
)
{
//WEB 호출!
WinBasic.ShowWebPos(PosKey.MENU_KEY.ORDER_REG, sInPutTypeCode.Substring(1));
return true;
}
// grayber@20180108 [BR] 바코드 18자리 인식 추가 end
}
// 상품등록 처리
string nStat = m_cPluService.SetItemCode(sSelRow, sInPutTypeCode, sInPutData);
if (nStat != UserCom.RST_OK) return false;
// 판매모드 변경
if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_WAIT)
{
m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING;
//cFormSaleMain.DisplayInit(false, true);
//#20180110 첫번째 제품 선택시 POS MOT에 등록한 TTL or WAV 재생 start
//#13753 POS MOT음성 기능 추가 개발요청 start,phj
//기존
//if (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE || CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT309), "1") == "2")
//변경
//#20180214 마스터 수신 시 포스에서 설정한 MOT 값 변경안되도록 수정 start,phj
//기존
/*
if ((m_cTrnStatus.Head.CmpCd == "PCKR" && m_cPosStatus.Mst.DrtFrcsDiv == "10") && //PCKR이고 직영일 때!
m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE ||
CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT309), "1") == "2")
*/
//변경
//if (m_cTrnStatus.Head.CmpCd == "PCKR" &&
// //#13753 POS MOT음성 기능 추가 개발요청 - 20180222 음성MOT 옵션처리 start,phj
// PosMstManager.GetPosOption(POS_OPTION.OPT331) == "1" &&
// //#13753 POS MOT음성 기능 추가 개발요청 - 20180222 음성MOT 옵션처리 end,phj
// (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE && CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT309), "1") == "2"))
////#20180214 마스터 수신 시 포스에서 설정한 MOT 값 변경안되도록 수정 end,phj
////#13753 POS MOT음성 기능 추가 개발요청 end,phj
//{
// frmSaleMain fSalMain = (frmSaleMain)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
// fSalMain.SetPlayMotMsg(PosConst.MOT_MSG_TYPE.DSP_SCN_MSG, PosKey.MENU_KEY.FIRSTPLU_INPUT, "");
//}
//#20180110 첫번째 제품 선택시 POS MOT에 등록한 TTL or WAV 재생 end
//#20181016 메모리 사용량 로그남기기 start
//20181108 주석처리
//m_cDataCommon.MemoryCheckLog();
//#20181016 메모리 사용량 로그남기기 end
}
//#20170926 포스 화면 구성 A안 사용시 후불 매장인 경우 제품 추가하면 기능키가 변경 안됨 start
//else if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING)
//{
// cFormSaleMain.DisplayInit(false, true);
//}
//#20170926 포스 화면 구성 A안 사용시 후불 매장인 경우 제품 추가하면 기능키가 변경 안됨 end
//// 상품 아이템
//ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
//Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)alPluItem[alPluItem.Count - 1];
////if (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE && cPluItem.CANCEL_DIV != "1" && cPluItem.CANCEL_DIV_MAIN != "1")
//if ((m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE || m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.CHARGESALE.PREPAID
// || m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.CHARGESALE.GIFT || m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.ETC.LOSS)
// && cPluItem.CANCEL_DIV != "1" && cPluItem.CANCEL_DIV_MAIN != "1")
//{
// if ((cPluItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.NORMAL || cPluItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.SET_MAIN ||
// cPluItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.GIFT || cPluItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.PREPAID )
// && cPluItem.OPEN_ITEM_DIV == "1" && (cPluItem.SALE_PRC == 1 || cPluItem.SALE_PRC == 0)) //2017-03-27 안차장요청으로 추가 0원
// {
// while (true)
// {
// // 상품단가 입력 처리
// string sPrice = WinBasic.ShowForm(new string[] { FormManager.FORM_USER_INPUT_DATA, PosConst.FRM_INPUT_DATA.PRICE });
// if (sPrice != UserCom.RST_ERR)
// {
// double nPrice = CmUtil.MathRounds(m_cDataService.DoubleParse(sPrice), m_cPosStatus.Mst.DcRudDwLocMethd, CmUtil.IntParse(m_cPosStatus.Mst.DcRudDwLoc));
// if (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.ETC.LOSS)
// {
// // 상품 단가 적용
// cPluItem.SALE_PRC = m_cDataService.DoubleParse(sPrice);
// m_cDataService.UpdatePluItemAmount(cPluItem);
// // 상품 판매가 계산
// m_cPluService.ItemAmountExeccute(true, true);
// break;
// }
// else
// {
// if (nPrice > 0 && nPrice == CmUtil.DoubleParse(sPrice))
// {
// // 상품 단가 적용
// cPluItem.SALE_PRC = nPrice;
// m_cDataService.UpdatePluItemAmount(cPluItem);
// // 상품 판매가 계산
// m_cPluService.ItemAmountExeccute(true, true);
// break;
// }
// }
// }
// WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0538);
// }
// }
//}
//// 강제 부가메뉴 등록 처리 사용안함 해피스테이션
//RegisterForceSubMenu();
}
// 세트상품 체크 및 등록 처리
//RegisterSetMenu();
// 상품등록 내역 화면 표시((0:LastItem, 1::OldFocus)) -사용안함 해피스테이션
//if (sInPutTypeCode.StartsWith(PosConst.SALE_PLU_INPUT_TYPE.FLAVOUR))
// cFormSaleMain.DisplayItem(1, false);
//else
//{
// RegisterFlavourMenu("FLAVOUR"); // 플레이버 화면 표시
// cFormSaleMain.DisplayItem(0, false);
//}
return true;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return bRet;
}
/// <summary>
/// 강제 부가메뉴 등록 처리
/// </summary>
/// <returns></returns>
public bool RegisterForceSubMenu()
{
bool bRet = false;
try
{
if (m_cTrnStatus.Head.TradeKind != ItemConst.TRAN_KIND.NORMAL.SALE && m_cTrnStatus.Head.TradeKind != ItemConst.TRAN_KIND.ETC.LOSS) return false;
if (m_cTrnStatus.Sale.SubMenuPopUpYn != "1") return false;
if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING || m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING_SET)
{
// 상품 아이템
ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
// 상품 정보
int nSelRow = alPluItem.Count - 1;
Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)alPluItem[nSelRow];
if ((cPluItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.NORMAL || cPluItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.SET_DETL)) // 부가메뉴 포함 여부
{
// 판매화면
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
// 강제 부가메뉴 화면 표시
if (cFormSaleMain.LoadSubMenuDisplay(cPluItem.SUB_SHOP_CD, cPluItem.M_CLSS) == true)
{
if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING_SET)
m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING_SET_OPT;
else
m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING_OPT;
//20160911 SBSEO 추가 부가 메뉴일때도 부모코드 입력!
m_cTrnStatus.Sale.SubMenuMainCode = cPluItem.ITEM_PLU_CD;
}
}
}
//else if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING_SET_OPT)
//{
// m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING_SET;
//}
return true;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return bRet;
}
/// <summary>
/// 세트메뉴 등록 처리
/// </summary>
/// <returns></returns>
public bool RegisterSetMenu()
{
bool bRet = false;
try
{
if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING)
{
// 상품 아이템
ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
// 상품 정보
int nSelRow = alPluItem.Count - 1;
Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)alPluItem[nSelRow];
if (cPluItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.SET_MAIN)
{
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 세트메뉴 그룹 로딩
m_dtSetMenuGroup = m_cPluService.SearchMenuMaster(PosMst.MST_ITEM_SET.TABLE_NAME, cPluItem.SUB_SHOP_CD, cPluItem.ITEM_PLU_CD);
if (m_dtSetMenuGroup == null || m_dtSetMenuGroup.Rows.Count <= 0)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0028); // 세트 상품 마스터가 없습니다
return false;
}
// 세트메뉴 그룹 상세 로딩
m_dtSetMenuDetail = m_cPluService.SearchMenuMaster(PosMst.MST_ITEM_SET_GRP.TABLE_NAME, cPluItem.SUB_SHOP_CD, cPluItem.ITEM_PLU_CD);
m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING_SET;
m_cTrnStatus.Sale.SetPluGroupPos = 0;
m_cTrnStatus.Sale.SetPluGroupCnt = 0;
m_cTrnStatus.Sale.SetPluSetMainCode = cPluItem.ITEM_PLU_CD;
}
}
// 세트 상품 등록 처리
if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING_SET)
{
for (int z = 0; z < 100; z++) // 마스터 이상으로 인한 무한루프 방지
{
if (m_cTrnStatus.Sale.SetPluGroupPos >= m_dtSetMenuGroup.Rows.Count)
{
m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING;
m_cTrnStatus.Sale.SetPluGroupPos = 0;
return true;
}
DataRow dr = m_dtSetMenuGroup.Rows[(int)m_cTrnStatus.Sale.SetPluGroupPos];
m_cTrnStatus.Sale.SetPluGroupCnt = m_cTrnStatus.Sale.SetPluGroupCnt + 1;
if (m_cTrnStatus.Sale.SetPluGroupCnt >= CmUtil.GetDataRowLong(dr, PosMst.MST_ITEM_SET.DATA.SET_ITEM_QTY))
{
m_cTrnStatus.Sale.SetPluGroupPos = m_cTrnStatus.Sale.SetPluGroupPos + 1;
m_cTrnStatus.Sale.SetPluGroupCnt = 0;
}
// 자식상품구분 ==> 0:상품, 1:부가상품그룹코드, 2:상품+그룹
if (CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_SET.DATA.SET_ITEM_DIV) == "0")
{
m_cTrnStatus.Sale.SetPluUpSalePrc = 0;
m_cTrnStatus.Sale.SetPluSetGroupCode = "";
// 상품 등록 처리
RegisterPluItem("", PosConst.SALE_PLU_INPUT_TYPE.MENUKEY + CmUtil.RPadH(CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_SET.DATA.SUB_STOR_CD), 10) + CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_SET.DATA.SET_ITEM_CD), "");
}
else if (CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_SET.DATA.SET_ITEM_DIV) == "1")
{
// 판매화면
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
// 세트메뉴 화면 표시
if (cFormSaleMain.LoadSetMenuDisplay(
CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_SET.DATA.SET_ITEM_CD), CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_SET.DATA.SET_GRPNM)) == false)
{
continue;
}
m_cTrnStatus.Sale.SetPluSetGroupCode = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_SET.DATA.SET_ITEM_CD);
}
else if (CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_SET.DATA.SET_ITEM_DIV) == "2")
{
m_cTrnStatus.Sale.SetPluUpSalePrc = 0;
m_cTrnStatus.Sale.SetPluSetGroupCode = CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_SET.DATA.SET_ITEM_GRP_CD);
// 상품 등록 처리
RegisterPluItem("", PosConst.SALE_PLU_INPUT_TYPE.MENUKEY + CmUtil.RPadH(CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_SET.DATA.SUB_STOR_CD), 10) + CmUtil.GetDataRowStr(dr, PosMst.MST_ITEM_SET.DATA.SET_ITEM_CD), "");
}
break;
}
}
return true;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING;
m_cTrnStatus.Sale.SetPluGroupPos = 0;
}
return bRet;
}
/// <summary>
/// 선택 부가메뉴 등록 처리
/// </summary>
/// <returns></returns>
public bool RegisterChoiceSubMenu(string sSelRow)
{
bool bRet = false;
try
{
if (m_cTrnStatus.Head.TradeKind != ItemConst.TRAN_KIND.NORMAL.SALE && m_cTrnStatus.Head.TradeKind != ItemConst.TRAN_KIND.ETC.LOSS
&& m_cTrnStatus.Head.TradeKind != ItemConst.TRAN_KIND.UNDECIDED.RESERVATION_REG) return true;
if (m_cPosStatus.Sale.SaleFlow != PosConst.SALE_FLOW.SALE_DOING) return false;
// 상품 아이템
ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)alPluItem[CmUtil.IntParse(sSelRow)];
if (cPluItem.CANCEL_DIV == "1" || cPluItem.CANCEL_DIV_MAIN == "1")
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0017); // 취소한 상품 입니다
return false;
}
if (cPluItem.ORDER_OK_FLAG != PosConst.PLU_ORDER_OK_FLAG.ORDER_ING)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0027); // 주문완료 후 변경 할 수 없습니다
return false;
}
if ((cPluItem.ITEM_DIV != ItemConst.PLU_ITEM_DIV.NORMAL && cPluItem.ITEM_DIV != ItemConst.PLU_ITEM_DIV.SET_DETL))
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0026); // 부가메뉴를 등록 할 수 없는 상품입니다
return false;
}
// 판매화면
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
// 부가메뉴 화면 표시
bRet = cFormSaleMain.LoadSubMenuDisplay(cPluItem.SUB_SHOP_CD, cPluItem.M_CLSS);
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return bRet;
}
/// <summary>
/// 플레이버 등록 처리
/// </summary>
/// <param name="sSelRow">선택행</param>
/// <returns></returns>
public bool RegisterFlavourMenu(string sSelRow)
{
bool bRet = false;
try
{
if (m_cTrnStatus.Head.TradeKind != ItemConst.TRAN_KIND.NORMAL.SALE && m_cTrnStatus.Head.TradeKind != ItemConst.TRAN_KIND.ETC.LOSS) return false;
if (sSelRow != "")
{
// 상품 아이템
ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)alPluItem[alPluItem.Count - 1];
if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING && cPluItem.FLAVOUR_DIV == ItemConst.PLU_FLAVOUR_DIV.FLAVOUR_OWN)
{
if (cPluItem.FLAVOUR_QTY <= 2)
{
// 판매화면
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
// 플레이버 화면 표시
cFormSaleMain.LoadFlavourMaster(m_cTrnStatus.Sale.SubStoreCode);
}
}
else
{
// 판매화면
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
cFormSaleMain.LoadFlavourMaster("");
}
}
else
{
// 판매화면
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
// 플레이버 화면 표시
cFormSaleMain.LoadFlavourMaster(m_cTrnStatus.Sale.SubStoreCode);
}
return true;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return bRet;
}
/// <summary>
/// 지정 취소 처리
/// </summary>
/// <param name="sSelRow">선택행</param>
/// <returns></returns>
public bool CancelPluItem(string sSelRow)
{
bool bRet = false;
try
{
//17.05.18 dkshin 쇼킹박스 추가
//if (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.LOG.SHOCKING_BOX)
//if (m_cTrnStatus.Head.ShockingBoxStat == "1")
//{
// WinManager.ConfirmMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0698));
// return bRet;
//}
//// 판매화면
//IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
// 지정취소 처리
string nStat = m_cPluService.SetCancelItem(sSelRow);
if (nStat != UserCom.RST_OK) return false;
ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
if (alPluItem.Count <= 0)
{
//#20170828 해피포인트 적립 제외 버튼 추가 phj, start
//선택된 상품이 모두 취소 되었을 때 0으로 초기화
m_cTrnStatus.Head.HP_EXCLUDE_YN = "0";
//#20170828 해피포인트 적립 제외 버튼 추가 phj, end
// 판매모드 변경
m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_WAIT;
//cFormSaleMain.DisplayInit(false, true);
}
// 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus)
//cFormSaleMain.DisplayItem(1, false);
return true;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return bRet;
}
/// <summary>
/// 수량변경 처리
/// </summary>
/// <param name="sSelRow">선택행</param>
/// <returns></returns>
public bool QtyChangePluItem(string sMenuKey, string sSelRow, string sNewQty)
{
bool bRet = false;
try
{
// 판매 화면
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
// 상품 아이템
ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
// 상품 정보
int nSelRow = CmUtil.IntParse(sSelRow);
Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)alPluItem[nSelRow];
switch (sMenuKey)
{
case PosKey.MENU_KEY.QTY_PLUS:
sNewQty = (cPluItem.SALE_QTY + 1).ToString();
break;
case PosKey.MENU_KEY.QTY_MINUS:
sNewQty = (cPluItem.SALE_QTY - 1).ToString();
break;
}
// 수량변경 처리
string nStat = m_cPluService.SetQtyChangeItem(sSelRow, sNewQty);
if (nStat != UserCom.RST_OK) return false;
// 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus)
cFormSaleMain.DisplayItem(1, false);
return true;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return bRet;
}
/// <summary>
/// 결제 등록 처리
/// </summary>
/// <param name="sMenuKey"></param>
/// <param name="sInPutData"></param>
/// <returns></returns>
public bool RegisterPayment(string sMenuKey, string sInPutData)
{
bool bRet = false;
try
{
//#20181016 메모리 사용량 로그남기기 start
//20181108 주석처리
//m_cDataCommon.MemoryCheckLog();
//#20181016 메모리 사용량 로그남기기 end
m_cPosStatus.Sale.ScreenSaverTime = ""; //화면보호기 대기시간 설정
//if (m_cPosStatus.Sale.SaleFlow != PosConst.SALE_FLOW.SALE_DOING) return false;
if (m_cPosStatus.Sale.SaleFlow != PosConst.SALE_FLOW.SALE_DOING && m_cPosStatus.Sale.SaleFlow != PosConst.SALE_FLOW.PAY_WAIT) return false;
//#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 start
if (m_cTrnStatus.Head.ShockingBoxStat == "1" && m_cTrnStatus.Head.ShockingBoxTradeKind == ItemConst.TRAN_KIND.HPO_LOG.LANDOM_BOX)
{
WinManager.ConfirmMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0054));
return bRet;
}
//#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 end
// 선불 판매 일때 고객 이름 체크 하기! (중국인 경우 제외)
if (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.CHARGESALE.PREPAID && PosMstManager.GetPosOption(POS_OPTION.OPT046) != "1")
{
if (m_cTrnStatus.Head.PpCardCustNm == "")
{
string sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_SAL_PREPAID_CUST });
if (sRet != UserCom.RST_OK)
{
return false;
}
}
}
// 상품 등록 여부 체크
bool bSaleItemExist = false;
ArrayList aSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
foreach (Column.TR_PLU.DATA cPluItem in aSaleItem)
{
if (cPluItem.CANCEL_DIV != PosConst.CANCEL_DIV.CANCEL && cPluItem.CANCEL_DIV_MAIN != PosConst.CANCEL_DIV.CANCEL)
{
bSaleItemExist = true;
break;
}
}
if (bSaleItemExist == false)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0396);
return false;
}
// 영업일자 체크
if (CmUtil.LongParse(m_cPosStatus.Base.SaleDate) < CmUtil.LongParse(System.DateTime.Now.ToString("yyyyMMdd")))
{
if (CmUtil.LongParse(System.DateTime.Now.ToString("HH")) > 5)
{
WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0184));
return false;
}
}
// 예약 완료 거래시에는 적용 하지 말자!
if (m_cTrnStatus.Head.TradeKind != ItemConst.TRAN_KIND.UNDECIDED.RESERVATION_COMPLETE)
{
// 상품 할인 및 사은품 캠페인 처리
ICampaignUs cCampaignMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN);
cCampaignMain.ExecuteCampaignPluHappyPoint("", true, PosConst.SALE_PLU_INPUT_TYPE.FREEGIFT, "", "", ""); // 상품 캠페인 계산
}
m_cTrnStatus.Sale.SubTotalCancelDiv = true; //결제 전후 취소 처리 체크 플래그
//결제 고객 등록 체크
SetPayGuest("1");
// 판매모드 변경
m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.PAY_WAIT;
//낱개 반품 이나 판매 로스 일경우 결제 버튼 클릭시 현금 자동 결제 2016-12-05 문성진대리 요청 사항!
if ((m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.REFUND && m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE) ||
(m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL && m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.ETC.LOSS))
{
#region
//현금 처리!
IPaymentUs m_cPaymentUs = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.CASH);
string sRet = "";
if (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE)
{
//낱개반품
sRet = m_cPaymentUs.SetPayment(new string[] { m_cTrnStatus.Sale.RemainPayAmt.ToString(), "0" });
}
else
{
//LOSS
sRet = m_cPaymentUs.SetPayment(new string[] { "0", "0" });
}
if (sRet != UserCom.RST_OK)
{
m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING;
return false;
}
CheckSaleComplete();
if (m_cPosStatus.Sale.SaleFlow != PosConst.SALE_FLOW.SALE_WAIT)
{
// 결제 내역 받아 오기
ArrayList alPayItem = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM);
m_cPaymentUs.CancelPayment(new string[] { (alPayItem.Count - 1).ToString() });
m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING;
return false;
}
#endregion
return true;
}
//중국일때 Take In/Out 선택!
if (m_cPosStatus.Mst.CntryDiv == ItemConst.CNTRY_DIV.CN && CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT304), "1") == "1")
{
SetChinaTakeInOut();
}
//2018.01.25.002;미국 서부(남가주, 북가주) 일 경우 Take In/Out 사용 처리;girak.kim;Start
else if( m_cPosStatus.Base.CmpCd.ToUpper().Equals(PosConst.POS_COMPANY_CODE.PCUS)
&& CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT304), "1") == "1"
&& CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT330), "1") == "1"
//&& (m_cPosStatus.Base.BrandCd.ToUpper().Equals(PosConst.MST_BRAND_CODE.PC_UC) || m_cPosStatus.Base.BrandCd.ToUpper().Equals(PosConst.MST_BRAND_CODE.PC_US))
)
{
SetUSTakeInOut();//Take In/Out 결과 상관 없이 무조건 결제창은 띄움
}
//2018.01.25.002;미국 서부(남가주, 북가주) 일 경우 Take In/Out 사용 처리;girak.kim;End
//KDS 부가 정보 사용 여부 [고객명/VIP 구분](0:사용안함, 1:사용함) - 쒝쒝버거용
if (CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT027), "0") == "1")
{
SetKdsData();
}
//#16232 환경부 1회용컵 사용줄이기 관련 테이크인아웃 설정 start
#region Take In/Out
//정상 판매인 경우에만 동작
if (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL && m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE)
{
//제조음료 포함 여부 체크
bool bProdTakeInOutItemYN = false;
bProdTakeInOutItemYN = ChkProdItemTakeInOutYN();
//제조음료 Take In/Out 사용여부 체크(ini에 설정이 안된 경우 공통코드 체크)
bool bProdTakeInOutUse = false;
bProdTakeInOutUse = ChkProdItemTakeInUse();
//제조음료 Take In/Out 선택 창 표시
if (bProdTakeInOutItemYN == true && bProdTakeInOutUse == true)
{
SetProdTakeInOut();
}
}
#endregion Take In/Out
//#16232 환경부 1회용컵 사용줄이기 관련 테이크인아웃 설정 end
// 판매화면(상품등록=>결제대기)
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
cFormSaleMain.ChangeSalePayMode(false);
cFormSaleMain.ChangeShowPayBtn(false);
if (sMenuKey != "") PayMainProc(sMenuKey, sInPutData);
cFormSaleMain.SetTopMot(PosKey.MENU_KEY.PAY_MAIN_MENU);
if (m_cPosStatus.Sale.SaleFlow != PosConst.SALE_FLOW.SALE_WAIT) cFormSaleMain.ChangeShowPayBtn(true);
return true;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
finally
{
m_cPosStatus.Sale.ScreenSaverTime = DateTime.Now.ToString("yyyyMMddHHmmss"); //화면보호기 대기시간 설정
}
return bRet;
}
/// <summary>
/// 중국 Take In/Out 일괄 설정(중국)
/// </summary>
private void SetChinaTakeInOut()
{
try
{
string sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_ETC_SELECT_BTN, PosKey.MENU_KEY.TAKE_IN_OUT, "" });
if (sRet == "1") //TAKE IN
{
SetItemTakeInOutAll("0");
}
else if (sRet == "2") //TAKE OUT
{
SetItemTakeInOutAll("1");
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
private bool SetUSTakeInOut()
{
bool bRet = false;
bRet = SetTakeInOut();
return bRet;
}
/// <summary>
/// Take In/Out 메세지 상품 일괄 적용(중국)
/// </summary>
/// <param name="sTakeInOut"></param>
private void SetItemTakeInOutAll(string sTakeInOut)
{
try
{
// 상품정보
ArrayList aSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
for (int iRow = 0; iRow < aSaleItem.Count; iRow++)
{
Column.TR_PLU.DATA cSaleItem = (Column.TR_PLU.DATA)aSaleItem[iRow];
if (cSaleItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL || cSaleItem.CANCEL_DIV_MAIN == PosConst.CANCEL_DIV.CANCEL)
{
continue; // 지정취소
}
else
{
// 상품 마스터 조회
DataTable dtDataInfo = m_cDataCommon.SearchItemCode(cSaleItem.SUB_SHOP_CD, cSaleItem.ITEM_PLU_CD, "");
if (dtDataInfo == null || dtDataInfo.Rows.Count == 0)
{
//스킵!!
}
else
{
cSaleItem.TAKE_IN_OUT_DIV = sTakeInOut;
DataRow drPlu = dtDataInfo.Rows[0];
if (cSaleItem.TAKE_IN_OUT_DIV == PosConst.TAKE_IN_OUT_DIV.TAKE_IN)
{
cSaleItem.SALE_PRC = CmUtil.GetDataRowDouble(drPlu, PosMst.MST_ITEM.DATA.TAKE_IN_SALE_AMT);
//#20171113 Take IN/OUT 선택시 세율코드 변경 안되는 현상 수정 start
//cSaleItem.TAXRATE_CD = cSaleItem.ITEM_TAKE_IN_VAT_CD;
//#20171113 Take IN/OUT 선택시 세율코드 변경 안되는 현상 수정 end
}
else
{
cSaleItem.SALE_PRC = CmUtil.GetDataRowDouble(drPlu, PosMst.MST_ITEM.DATA.TAKE_OUT_SALE_AMT);
//#20171113 Take IN/OUT 선택시 세율코드 변경 안되는 현상 수정 start
//cSaleItem.TAXRATE_CD = cSaleItem.ITEM_TAKE_OUT_VAT_CD;
//#20171113 Take IN/OUT 선택시 세율코드 변경 안되는 현상 수정 end
}
cSaleItem.SALE_AMT = CmUtil.DoubleMultiplication(cSaleItem.SALE_PRC, cSaleItem.SALE_QTY);
}
}
}
m_cPluService.ItemAmountExeccute(true, true);
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
cFormSaleMain.DisplayItem(1, false);
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
/// <summary>
/// KDS 부가 정보 사용 - 쒝쒝버거용
/// </summary>
private void SetKdsData()
{
try
{
string sMsg = string.Format(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0652), m_cPosStatus.Global.NumericTOCurrency(m_cTrnStatus.Sale.RemainPayAmt) + m_cPosStatus.Global.m_stCultureMaster.strCurrencyName);
string sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_ETC_SELECT_BTN, PosKey.MENU_KEY.SET_KDS_DATA, sMsg });
string[] aRecvData = sRet.Split(new string[] { "|" }, StringSplitOptions.None);
m_cTrnStatus.Head.PackTradeDiv = aRecvData[0];
m_cTrnStatus.Head.VipTy = aRecvData[1];
//#20171113 Take IN/OUT 선택시 세율코드 변경 안되는 현상 수정 start
/*
if (m_cTrnStatus.Head.PackTradeDiv == "1")
{
SetItemTakeInOutAll("0");
}
else if (m_cTrnStatus.Head.PackTradeDiv == "2")
{
SetItemTakeInOutAll("1");
}
*/
//#20171113 Take IN/OUT 선택시 세율코드 변경 안되는 현상 수정 end
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
/// <summary>
/// 결제 고객 등록
/// </summary>
public void SetPayGuest(string sChkFalg)
{
try
{
if (PosMstManager.GetPosOption(POS_OPTION.OPT004) == sChkFalg)
{
if (PosMstManager.GetPosOption(POS_OPTION.OPT033) == "1") //결제 고객
{
string sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_SAL_AGE, "PAY" });
if (sRet != UserCom.RST_ERR)
{
m_cTrnStatus.Head.PayGndrDiv = CmUtil.MidH(sRet, 0, 1);
m_cTrnStatus.Head.PayAge = CmUtil.LongParse(CmUtil.MidH(sRet, 1, 2));
}
}
else if (PosMstManager.GetPosOption(POS_OPTION.OPT033) == "2") //고객수
{
string sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_SAL_AGE, "" });
}
else
{
//미사용
}
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
/// <summary>
/// 단품 아이템 할인 적용
/// </summary>
/// <param name="sFuncKey"></param>
/// <param name="InputData"></param>
/// <returns></returns>
public bool RegisterItemDc(string sFuncKey, string sSelRow, string InData)
{
bool bRet = false;
try
{
//#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 start
if (m_cTrnStatus.Head.ShockingBoxStat == "1" && m_cTrnStatus.Head.ShockingBoxTradeKind == ItemConst.TRAN_KIND.HPO_LOG.LANDOM_BOX)
{
WinManager.ConfirmMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0054));
return bRet;
}
//#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 end
// 판매 화면
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
string sDcType = string.Empty;
string sDcCode = string.Empty;
if (sFuncKey == PosKey.MENU_KEY.ELOVE_DC)
{
//환경사랑DC만 단독 처리로 분리
if (EnvironmentLoveCheck(sSelRow) == false)
return false;
}
else
{
// 중복 불가 체크!
//if (m_cDataCommon.PayDcDuplicationCheck(sFuncKey) == false) return false;
switch (sFuncKey)
{
case PosKey.MENU_KEY.ITEM_DC_AMT: //임의 할인 금액
sDcType = PosConst.ITEM_DC_DIV_POS_DC.AMT;
sDcCode = ItemConst.PLU_DC_DIV.POS_DC; // ItemConst.TR_ITEM_ID.USER_DC.RANDOMLY;
break;
case PosKey.MENU_KEY.ITEM_DC_RATE: //임의 할인 율
sDcType = PosConst.ITEM_DC_DIV_POS_DC.RATE;
sDcCode = ItemConst.PLU_DC_DIV.POS_DC; //ItemConst.TR_ITEM_ID.USER_DC.RANDOMLY;
break;
case PosKey.MENU_KEY.FREE_DC: //서비스
sDcType = PosConst.ITEM_DC_DIV_POS_DC.FREE;
sDcCode = ItemConst.PLU_DC_DIV.FREE; //ItemConst.TR_ITEM_ID.USER_DC.SERVICE;
break;
case PosKey.MENU_KEY.IN_EMP_DC: //입점 건물 직원 할인
// 화면 호출
//입력 값 확인 - 없으면 RETURN
sDcType = PosConst.ITEM_DC_DIV_POS_DC.RATE;
sDcCode = ItemConst.PLU_DC_DIV.IN_EMP_DC; // ItemConst.TR_ITEM_ID.USER_DC.IN_EMP_DC;
break;
case PosKey.MENU_KEY.ITEM_CHAGE_CPN: //제품교환권
sDcType = PosConst.ITEM_DC_DIV_POS_DC.FREE;
sDcCode = ItemConst.PLU_DC_DIV.ITEM_CHAGE_CPN_DC; //ItemConst.TR_ITEM_ID.USER_DC.ITEM_CHAGE_CPN;
break;
//case PosKey.MENU_KEY.ELOVE_DC: //환경사랑DC
// if (EnvironmentLoveCheck(ref sSelRow, ref InData) == false)
// return false;
// else
// return true;
////sDcType = PosConst.ITEM_DC_DIV_POS_DC.AMT;
////sDcCode = ItemConst.TR_ITEM_ID.USER_DC.ELOVE;
////break;
}
// 상품할인 처리
string nStat = m_cPluService.SetDcItem(sSelRow, sDcType, sDcCode, InData);
if (nStat != UserCom.RST_OK) return false;
}
// 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus)
cFormSaleMain.DisplayItem(1, false);
return true;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return bRet;
}
//#Rhee, 20180130 단품 할인 전체 취소 추가 Start
/// <summary>
/// 단품 아이템 할인 적용 전체 취소
/// </summary>
/// <param name="sFuncKey"></param>
/// <param name="sDcDiv"></param>
/// <param name="sDcType"></param>
/// <returns></returns>
public bool RegisterItemDcCancel(string sFuncKey, string sDcDiv, string sDcType)
{
bool bRet = false;
try
{
// 판매 화면
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
// 상품할인 처리
string nStat = m_cPluService.SetDcCancelItem(sDcDiv, sDcType);
if (nStat != UserCom.RST_OK) return false;
// 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus)
cFormSaleMain.DisplayItem(1, false);
return true;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return bRet;
}
//#Rhee, 20180130 단품 할인 전체 취소 추가 End
/// <summary>
/// 환경사랑DC 체크
/// </summary>
/// <param name="sSelRow"></param>
/// <param name="sDcAmt"></param>
/// <returns></returns>
private bool EnvironmentLoveCheck(string sSelRow)
{
bool bRet = false, bAlready = false;
double dDcAmt = 0;
//string m_DC_ELOVE = ItemConst.TR_ITEM_ID.USER_DC_ITEM + ItemConst.TR_ITEM_ID.USER_DC.ELOVE;
Column.TR_PLU.DATA cPluItem = null;
try
{
long lInPutQty = 0;
//int nSelRow = 0;
//// Step 1.마지막 아이템 체크
ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
//for (int iRow = 0; iRow < alPluItem.Count; iRow++)
//{
// cPluItem = (Column.TR_PLU.DATA)alPluItem[iRow];
// if (cPluItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL || cPluItem.EXCEP_DC_DIV == m_DC_ELOVE)
// {
// bAlready = true;
// break;
// }
//}
// 동일 할인 체크
cPluItem = (Column.TR_PLU.DATA)alPluItem[CmUtil.IntParse(sSelRow)];
if (cPluItem.EXCEP_DC_DIV == ItemConst.PLU_DC_DIV.ELOVE_DC) bAlready = true;
if (bAlready == true)
{
if (WinManager.QuestionMessage(POS_MESSAGE.ERROR.MSG_0053) == false) // 등록된 할인을 취소 하시겠습니까?
return bRet;
dDcAmt = 0;
}
else
{
//마지막 강제 셋팅 - 오페이션이 바끼면(마지막처리아니면) 주석으로 처리해야함!
//nSelRow = alPluItem.Count - 1;
//sSelRow = nSelRow.ToString();
//cPluItem = (Column.TR_PLU.DATA)alPluItem[nSelRow];
// 취소 상품은 할인 불가
if (cPluItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL || cPluItem.CANCEL_DIV_MAIN == PosConst.CANCEL_DIV.CANCEL)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0017); // 취소한 상품 입니다
return bRet;
}
//// 세트 자식은 할인 불가
//if (cPluItem.ITEM_DIV != ItemConst.PLU_ITEM_DIV.NORMAL && cPluItem.ITEM_DIV != ItemConst.PLU_ITEM_DIV.SET_MAIN)
//{
// WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0050); // 할인 적용 불가능한 상품 입니다.
// return bRet;
//}
// 할인 허용 여부
if (cPluItem.DC_PRMT_YN == "1" || cPluItem.FREE_GIFT_YN == "1" || cPluItem.SALE_PRC == 0)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0050); // 할인 적용 불가능한 상품 입니다.
return bRet;
}
// 할인 등록 여부 체크
if (m_cDataService.GetPluDiscountAmount(false, false, false, false, false, false, false, false, true, CmUtil.IntParse(sSelRow)) > 0)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0063); // 기존 할인 취소 후 등록 하세요.
return bRet;
}
// Step 3.수량 체크 -> 1 이상이면 입력 받는 화면 호출
if (cPluItem.SALE_QTY > 1)
{
string sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_USER_INPUT_DATA, "ELOVE" });
if (sRet == UserCom.RST_ERR)
{
return bRet;
}
lInPutQty = CmUtil.LongParse(sRet);
}
else
{
lInPutQty = cPluItem.SALE_QTY;
}
// Step 4.입력수량과 현재 등록 수량 체크 크면 에러
if (cPluItem.SALE_QTY < lInPutQty || lInPutQty == 0)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0075);
return bRet;
}
//적용 대상 금액 체크
if (cPluItem.BILL_AMT == 0)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0601); //할인 적용 대상 금액이 없습니다.
return bRet;
}
// Step 5.할인 금액 가져오기
DataTable dt = m_cMstPayDcService.Select(new string[] { PosMst.MST_PAY_DC.TABLE_NAME, ItemConst.TR_ITEM_ID.USER_DC_ITEM, ItemConst.TR_ITEM_ID.USER_DC.ELOVE });
if (dt == null || dt.Rows.Count <= 0)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0377); // 할인 정보 마스터가 없습니다. 관리자에 문의 하세요.
return bRet;
}
foreach (DataRow dr in dt.Rows)
{
//할인 방법 DC_APPLY_TRGT
//적용 대상 PAY_DC_METHD 1:율, 2:금액
//적용 금액 PAY_DC_VAL
string sAppyTrgt = CmUtil.GetDataRowStr(dr, PosMst.MST_PAY_DC.DATA.DC_APPLY_TRGT);
string sDcMethd = CmUtil.GetDataRowStr(dr, PosMst.MST_PAY_DC.DATA.PAY_DC_METHD);
double dPayDcVal = CmUtil.GetDataRowDouble(dr, PosMst.MST_PAY_DC.DATA.PAY_DC_VAL);
if (sDcMethd == "1")
{
double dtmp = CmUtil.MathRounds(CmUtil.MathAmtPercent(cPluItem.SALE_AMT, dPayDcVal), m_cPosStatus.Mst.DcRudDwLocMethd, CmUtil.IntParse(m_cPosStatus.Mst.DcRudDwLoc));
dDcAmt = CmUtil.DoubleMultiplication(dtmp, lInPutQty);
}
else
{
dDcAmt = CmUtil.DoubleMultiplication(dPayDcVal, lInPutQty);
}
break;
}
}
if (cPluItem.BILL_AMT < dDcAmt)
{
string sMsg = string.Format(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0602), cPluItem.BILL_AMT, dDcAmt);
WinManager.ErrorMessage(sMsg); //할인 적용 대상 금액이 없습니다.
return bRet;
}
cPluItem.EXCEP_DC_AMT = dDcAmt;
cPluItem.EXCEP_DC_DIV = dDcAmt > 0 ? ItemConst.PLU_DC_DIV.ELOVE_DC : "0000";
m_cDataService.UpdatePluItemAmount(cPluItem);
// 상품 판매가 계산
m_cPluService.ItemAmountExeccute(true, true);
bRet = true;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return bRet;
}
/// <summary>
/// 상품권 판매
/// </summary>
/// <returns></returns>
public bool RegisterSellGift(string sFuncKey)
{
bool bRet = false;
try
{
// 상품권, 선불 카드 셋팅
if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_WAIT)
{
string sTableName = string.Empty;
string sItemType = string.Empty;
string sItemName = string.Empty;
if (sFuncKey == PosKey.MENU_KEY.GIFT_SALE)
{
sTableName = PosMst.MST_GIFT_PREPAID.TABLE_NAME_GIFT;
sItemType = PosConst.ITEM_TYPE.GIFT;
sItemName = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0083);
}
else
{
sTableName = PosMst.MST_GIFT_PREPAID.TABLE_NAME_PREPAID;
sItemType = PosConst.ITEM_TYPE.PREPAID;
sItemName = MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0095);
}
m_dtSetMenuDetail = null;
// 선불카드 판매 - 중국 (별도 입력 처리)
if (PosMstManager.GetPosOption(POS_OPTION.OPT046) == "1")
{
}
else
{
//대상 조회
m_dtSetMenuDetail = m_cPluService.SearchMenuMaster(sTableName, "", sItemType);
if (m_dtSetMenuDetail == null || m_dtSetMenuDetail.Rows.Count == 0)
{
// 등록 할 수 있는 상품권/선불카드가 없습니다.
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0304);
return bRet;
}
}
//m_cTrnStatus.Sale.SetPluGroupPos = 0;
//메뉴 화면 표시
// 판매화면
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
cFormSaleMain.LoadSetMenuDisplay(sFuncKey, sItemName, true);
//현재 상태 변경, 거래모드 변경
if (sItemType == PosConst.ITEM_TYPE.GIFT)
{
//m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_GIFT;
m_cTrnStatus.Head.TradeKind = ItemConst.TRAN_KIND.CHARGESALE.GIFT;
}
else
{
//m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_PREPAID;
m_cTrnStatus.Head.TradeKind = ItemConst.TRAN_KIND.CHARGESALE.PREPAID;
}
//선불카드 판매일경우 카드 번호 입력 로직 필요!
if (PosMstManager.GetPosOption(POS_OPTION.OPT046) == "1")
{
// 선불카드 판매 - 중국
frmSalePreCard_China fForm = (frmSalePreCard_China)FormManager.GetForm(FormManager.FORM_SALE_PRECARD);
if (fForm == null)
{
fForm = new frmSalePreCard_China();
FormManager.AddForm(FormManager.FORM_SALE_PRECARD, fForm);
}
if (fForm.ShowDialog() != DialogResult.OK)
{
TradeStop();
return false;
}
DataTable dtPreCard = fForm.GetPripadItem;
if (dtPreCard != null && dtPreCard.Rows.Count > 0)
{
foreach (DataRow dr in dtPreCard.Rows)
{
// 상품 등록 처리
if (RegisterPluItem("", PosConst.SALE_PLU_INPUT_TYPE.MENUKEY + CmUtil.RPadH(m_cPosStatus.Base.StoreNo, 10) + CmUtil.GetDataRowStr(dr, "iTemCD"), CmUtil.GetDataRowStr(dr, "CardNo")) == true)
{
// 선불카드권종 추가(2017.06.27)
ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)alPluItem[alPluItem.Count - 1];
cPluItem.SLACK_FIELD = CmUtil.GetDataRowStr(dr, "PreKind");
}
//RegisterPluItem("", PosConst.SALE_PLU_INPUT_TYPE.MENUKEY + CmUtil.RPadH(m_cPosStatus.Base.StoreNo, 10) + CmUtil.GetDataRowStr(dr, "iTemCD"), CmUtil.GetDataRowStr(dr, "CardNo"));
}
}
}
}
return true;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return bRet;
}
/// <summary>
/// 거래 취소
/// </summary>
/// <returns></returns>
private bool TradeStop()
{
string sRet = UserCom.RST_ERR;
try
{
//// 판매화면
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
if (m_cPosStatus.Sale.SaleFlow != PosConst.SALE_FLOW.SALE_WAIT)
{
// 거래 취소 확인 메세지!
if (WinManager.QuestionMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0261)) == true)
{
// 선불카드 판매 - 중국인 경우
if (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.CHARGESALE.PREPAID && PosMstManager.GetPosOption(POS_OPTION.OPT046) == "1")
{
// 취소요청
IPaymentUs m_cSalePreCard = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_SALE.DLL, ServiceLists.BSV_SALE.SALEPRECARD);
ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
foreach (Column.TR_PLU.DATA cPluItem in alPluItem)
{
if (cPluItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.PREPAID)
{
if (cPluItem.CANCEL_DIV != "1")
{
// 취소 요청
sRet = m_cSalePreCard.CancelPayment(new string[] { "1", cPluItem.SALE_GIFT_NO, "0" });
if (sRet != UserCom.RST_OK)
{
return false;
}
}
if (cPluItem.CANCEL_DIV != "1")
{
cPluItem.CANCEL_DIV = "1";
cPluItem.CANCEL_DATE = DateTime.Now.ToString("yyyyMMddHHmmss");
}
}
}
}
// 원거래 종류 백업
m_cTrnStatus.Head.OrgTradeKind = m_cTrnStatus.Head.TradeKind;
//상품권 or 선불카드 승인 내역 확인 및 취소 처리 로직 필요!
m_cTrnStatus.Head.TradeKind = ItemConst.TRAN_KIND.LOG.STOP;
// 보류 후 거래 중지라면 로그 남기기!
if (m_cTrnStatus.Head.HoldStat != "")
m_cTrnStatus.Head.HoldStat = ItemConst.HOLD_STAT_CD.CANCEL;
//17.05.18 dkshin 쇼킹박스 추가
//쇼킹상품 취소 처리 로직 필요!
if (m_cTrnStatus.Head.ShockingBoxStat == "1")
{
IHoldDeal m_cHoldDeal = (IHoldDeal)sManager.InitServiceInstance(ServiceLists.BSV_SALE.DLL, ServiceLists.BSV_SALE.HOLD_DEAL);
//m_cHoldDeal.UpdateHoldDeal(m_cTrnStatus.Head.SaleDate, m_cTrnStatus.Head.PosNo, m_cTrnStatus.Head.RegNo, "0", 0, 0);
m_cHoldDeal.UpdateShockingBOX();
m_cTrnStatus.Head.ShockingBoxStat = "0";
}
// 테이블 거래 완료 처리
sRet = m_cTableSvr.CompleteSaleOrder();
// 거래 완료 처리
sRet = m_cSaleComplete.PosSaleExecute(new string[] { });
if (sRet != UserCom.RST_OK) return false;
// 판매상태 변경
m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_WAIT;
}
else
{
return false;
}
//// 거래 완료 후 초기화 처리
cFormSaleMain.DisplayInit(true, true);
//// 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus)
cFormSaleMain.DisplayItem(0, true);
}
else
{
if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL || m_cTrnStatus.Head.TradeKind != ItemConst.TRAN_KIND.NORMAL.SALE)
{
m_cTrnStatus.Head.TradeDiv = ItemConst.TRAN_DIV.NORMAL;
m_cTrnStatus.Head.TradeKind = ItemConst.TRAN_KIND.NORMAL.SALE;
m_cTrnStatus.Head.NonSaleRsnCd = "0";
//// 거래 완료 후 초기화 처리
cFormSaleMain.DisplayInit(true, true);
}
}
if (m_cPosStatus.Base.PosType == PosConst.POS_TYPE.DEFERRED_PAYMENT)
{
cFormSaleMain.SaleMainExit();
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return true;
}
/// <summary>
/// 거래 보류
/// </summary>
/// <returns></returns>
private bool HoldDeal()
{
try
{
//정상 거래 인지 체크
if (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL
&& (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE || m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.ETC.LOSS))
{
ArrayList aSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
if (aSaleItem.Count > 0)
{
// 영업일자 체크
if (CmUtil.LongParse(m_cPosStatus.Base.SaleDate) < CmUtil.LongParse(System.DateTime.Now.ToString("yyyyMMdd")))
{
if (CmUtil.LongParse(System.DateTime.Now.ToString("HH")) > 5)
{
WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0184));
return false;
}
}
int iMaxCnt = CmUtil.IntParse(PosMstManager.GetPosOption(POS_OPTION.OPT017));
if (iMaxCnt > 0)
{
//거래 건수 체크
IHoldDeal m_cHoldDeal = (IHoldDeal)sManager.InitServiceInstance(ServiceLists.BSV_SALE.DLL, ServiceLists.BSV_SALE.HOLD_DEAL);
DataTable dt = m_cHoldDeal.SearchHoldDealList(m_cPosStatus.Base.SaleDate);
if (dt == null || dt.Rows.Count == 0)
{
//처리 없음
}
else
{
if (iMaxCnt < dt.Rows.Count)
{
// 보류로 가능 횟수가 초과 되었습니다.
WinManager.ConfirmMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0637));
return false;
}
}
}
// 보류로 저장 하시겠습니까?
if (WinManager.QuestionMessage(POS_MESSAGE.ERROR.MSG_0527) == true)
{
//ICampaignUs cCampaignMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN);
////캠페인 초기화
//cCampaignMain.ClearCampaignAmt();
//m_cDataService.UpdatePluAmount();
//#20170920 보류 처리시 임의할인 내역 유지 되도록 수정 start
//기존
//m_cPluService.ItemDcAllClear(true);
//변경
m_cPluService.ItemDcAllClear(true, false, false);
//#20170920 보류 처리시 임의할인 내역 유지 되도록 수정 end
//보류 저장
m_cTrnStatus.Head.TradeKind = ItemConst.TRAN_KIND.LOG.HOLD_DEAL;
if (m_cTrnStatus.Head.HoldStat == ItemConst.HOLD_STAT_CD.LOAD)
{
m_cTrnStatus.Head.HoldStat = ItemConst.HOLD_STAT_CD.REHOLD;
}
else
{
m_cTrnStatus.Head.HoldStat = ItemConst.HOLD_STAT_CD.HOLD;
}
// 테이블 거래 완료 처리
string sRet = m_cTableSvr.CompleteSaleOrder();
// 거래 완료 처리
sRet = m_cSaleComplete.PosSaleExecute(new string[] { });
if (sRet != UserCom.RST_OK) return false;
// 판매상태 변경
m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_WAIT;
// 판매화면
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
// 거래 완료 후 초기화 처리
cFormSaleMain.DisplayInit(true, true);
// 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus)
cFormSaleMain.DisplayItem(0, true);
}
}
else
{
// 보류 불러오기
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//거래 건수 체크
IHoldDeal m_cHoldDeal = (IHoldDeal)sManager.InitServiceInstance(ServiceLists.BSV_SALE.DLL, ServiceLists.BSV_SALE.HOLD_DEAL);
DataTable dt = m_cHoldDeal.SearchHoldDealList(m_cPosStatus.Base.SaleDate);
if (dt == null || dt.Rows.Count == 0)
{
// 거래내역이 존재하지 않습니다.
WinManager.ConfirmMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0269));
return false;
}
else if (dt.Rows.Count == 1)
{
// 내역 불러오기를 하시겠습니까?
if (WinManager.QuestionMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0254)) == true)
{
DataRow dr = dt.Rows[0];
m_cHoldDeal.LoadLocalTranPlu(dr["SALE_DT"].ToString(), dr["POS_NO"].ToString(), dr["REG_NO"].ToString());
m_cHoldDeal.UpdateHoldDeal(dr["SALE_DT"].ToString(), dr["POS_NO"].ToString(), dr["REG_NO"].ToString(), "1", 0, 0);
m_cTrnStatus.Head.HoldOrgRegNo = dr["REG_NO"].ToString();
m_cTrnStatus.Head.HoldStat = ItemConst.HOLD_STAT_CD.LOAD;
}
else
{
return false;
}
}
else
{
string sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_SAL_HOLD });
}
// 상품 내역 불러오기
ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
if (alPluItem.Count > 0)
{
Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)alPluItem[0];
if (CmUtil.LongParse(cPluItem.NONSALES_RSN_CD) != 0) // 로스거래 이면(비매출사유코드가 있으면)
{
// 비매출 사유명 설정
DataTable dtNoSaleRsnCd = m_cDataCommon.SeletCommonCode(PosConst.COMMON_CODE_GROUP.S0001, "");
foreach (Column.TR_PLU.DATA cLossPluItem in alPluItem)
{
if (dtNoSaleRsnCd != null && dtNoSaleRsnCd.Rows.Count > 0)
{
foreach (DataRow dr in dtNoSaleRsnCd.Rows)
{
if (cLossPluItem.NONSALES_RSN_CD == CmUtil.GetDataRowStr(dr, PosMst.MST_COMMON.DATA.CMM_CD))
{
cLossPluItem.NONSALES_RSN_NM = CmUtil.GetDataRowStr(dr, PosMst.MST_COMMON.DATA.CD_NM);
m_cTrnStatus.Head.NonSaleRsnCd = cPluItem.NONSALES_RSN_CD;
m_cTrnStatus.Head.LossTitle = cPluItem.NONSALES_RSN_NM;
break;
}
}
}
}
m_cTrnStatus.Head.TradeKind = ItemConst.TRAN_KIND.ETC.LOSS;
}
// 상품 판매가 재계산
m_cPluService.ItemAmountExeccute(true, true);
// 판매화면
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
// 판매모드 변경
m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING;
cFormSaleMain.DisplayInit(false, true);
// 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus)
cFormSaleMain.DisplayItem(0, false);
}
}
}
else
{
//판매 거래에서만 가능합니다.
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return true;
}
/// <summary>
/// 낱개 반품 셋팅
/// </summary>
/// <returns></returns>
private bool RegisterReturnItem()
{
bool bRet = false;
try
{
// 낱개 반품 셋팅
if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_WAIT)
{
if (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.REFUND) //상품 등록되어 있지 않고 낱개 반품 다시 눌렀을때! 원복
{
m_cTrnStatus.Head.RtnReasonCd = ""; // 선택된 사유코드
m_cTrnStatus.Head.RtnReasonMemo = ""; // 선택된 사유명
m_cTrnStatus.Head.TradeDiv = ItemConst.TRAN_DIV.NORMAL;
m_cTrnStatus.Head.TradeKind = ItemConst.TRAN_KIND.NORMAL.SALE;
}
else
{
// 반품 사유코드 등록
frmSelReasonCode fForm = (frmSelReasonCode)FormManager.GetForm(FormManager.FORM_REASON_CODE);
if (fForm == null)
{
fForm = new frmSelReasonCode();
FormManager.AddForm(FormManager.FORM_REASON_CODE, fForm);
}
fForm.ReasonGroup = PosConst.COMMON_CODE_GROUP.Z0008; // 사유 그룹코드
if (fForm.ShowDialog() != DialogResult.OK)
{
return false;
}
m_cTrnStatus.Head.RtnReasonCd = fForm.ReasonCode; // 선택된 사유코드
m_cTrnStatus.Head.RtnReasonMemo = fForm.ReasonName; // 선택된 사유명
m_cTrnStatus.Head.TradeDiv = ItemConst.TRAN_DIV.REFUND;
m_cTrnStatus.Head.TradeKind = ItemConst.TRAN_KIND.NORMAL.SALE;
}
// 판매화면
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
cFormSaleMain.DisplayInit(false, true);
bRet = true;
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return bRet;
}
/// <summary>
/// 상품 No Tax
/// </summary>
/// <param name="sSelRow"></param>
/// <returns></returns>
private bool ItemNoTax(string sSelRow)
{
bool bRet = false;
try
{
// 판매 화면
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
// 상품할인 처리
string nStat = m_cPluService.SetNoTaxItem(sSelRow);
if (nStat != UserCom.RST_OK) return false;
// 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus)
cFormSaleMain.DisplayItem(1, false);
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return bRet;
}
//#Rhee, 20180212 전체상품 No Tax 추가 Start
/// <summary>
/// 상품 No Tax
/// </summary>
/// <returns></returns>
private bool ItemAllNoTax()
{
bool bRet = false;
try
{
// 판매 화면
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
string nStat = string.Empty;
// 상품할인 처리
nStat = m_cPluService.SetAllNoTaxItem();
// 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus)
cFormSaleMain.DisplayItem(1, false);
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return bRet;
}
//#Rhee, 20180212 전체상품 No Tax 추가 End
/// <summary>
/// 판매로스 셋팅
/// </summary>
/// <returns></returns>
private bool RegSaleLosss(string sSelRow)
{
bool bRet = false;
try
{
// 판매LOSS 셋팅
if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_WAIT)
{
string sLossCode = string.Empty;
sLossCode = WinBasic.ShowForm(new string[] { FormManager.FORM_MENU_SUB, PosKey.MENU_KEY.SALE_LOSS });
//코드 받아 오기
if (sLossCode != UserCom.RST_ERR)
{
string[] saRuleSplit = sLossCode.Split(new string[] { "~^(" }, StringSplitOptions.None);
m_cTrnStatus.Head.NonSaleRsnCd = saRuleSplit[0];
if (CmUtil.LenH(saRuleSplit[1]) > 8)
{
m_cTrnStatus.Head.LossTitle = CmUtil.MidH(saRuleSplit[1], 0, 8).Trim();
}
else
{
m_cTrnStatus.Head.LossTitle = saRuleSplit[1].Trim();
}
m_cTrnStatus.Head.TradeDiv = ItemConst.TRAN_DIV.NORMAL;
m_cTrnStatus.Head.TradeKind = ItemConst.TRAN_KIND.ETC.LOSS;
// 판매화면
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
cFormSaleMain.DisplayInit(false, true);
bRet = true;
}
}
else if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING)
{
//1. 로스거래인지 체크
if (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL && m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.ETC.LOSS)
{
//2. 선택한 상품 체크
int nSelRow = CmUtil.IntParse(sSelRow);
// 상품 내역 불러오기
ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
if (alPluItem.Count > 0)
{
Column.TR_PLU.DATA cItem = (Column.TR_PLU.DATA)alPluItem[nSelRow];
if (cItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL || cItem.CANCEL_DIV_MAIN == PosConst.CANCEL_DIV.CANCEL)
{
//취소 건은 처리 없음!
}
else
{
//3. 폼을 호출 해서 코드 받고
string sLossCode = string.Empty;
sLossCode = WinBasic.ShowForm(new string[] { FormManager.FORM_MENU_SUB, PosKey.MENU_KEY.SALE_LOSS });
//코드 받아 오기
if (sLossCode != UserCom.RST_ERR)
{
//4. 아이템에 저장 하고
string[] saRuleSplit = sLossCode.Split(new string[] { "~^(" }, StringSplitOptions.None);
cItem.NONSALES_RSN_CD = saRuleSplit[0];
if (CmUtil.LenH(saRuleSplit[1]) > 8)
{
cItem.NONSALES_RSN_NM = CmUtil.MidH(saRuleSplit[1], 0, 8).Trim();
}
else
{
cItem.NONSALES_RSN_NM = saRuleSplit[1].Trim();
}
m_cTrnStatus.Head.NonSaleRsnCd = cItem.NONSALES_RSN_CD;
m_cTrnStatus.Head.LossTitle = cItem.NONSALES_RSN_NM;
// 판매화면
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
cFormSaleMain.DisplayItem(1, false);
bRet = true;
}
//5. 완료
}
}
else
{
//등록된 상품이 없어 처리 할께 없다.
}
}
else
{
// 로스거래가 아니므로 무시한다.
}
}
else
{
// 처리 가능한 상태가 아님!
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return bRet;
}
private bool OrderCompleted()
{
bool bRet = false;
try
{
if (m_cPosStatus.Base.PosType == PosConst.POS_TYPE.DEFERRED_PAYMENT)
{
// 영업일자 체크
if (CmUtil.LongParse(m_cPosStatus.Base.SaleDate) < CmUtil.LongParse(System.DateTime.Now.ToString("yyyyMMdd")))
{
if (CmUtil.LongParse(System.DateTime.Now.ToString("HH")) > 5)
{
WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0184));
return false;
}
}
// 판매화면
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
// 테이블 판매모드
if (m_cPosStatus.Sale.EtcOperateMode == PosConst.ETC_OPERATION_MODE.NO_ORDER_SALE)
{
if (m_cPosStatus.Sale.SaleFlow != PosConst.SALE_FLOW.SALE_WAIT)
{
// 후불테이블의 일반판매모드 일때는 주문을 완료 할 수 없습니다.
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0054);
return false;
}
// 모든 거래 데이터 삭제
m_cDataService.DeleteTranItem();
// 거래정보 초기화
m_cTrnStatus.ClearAll();
// 판매화면 종료
cFormSaleMain.SaleMainExit();
return true;
}
if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_WAIT || m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING
|| m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING_OPT)
{
bool bSaleAble = false;
ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
foreach (Column.TR_PLU.DATA cPluItem in alPluItem)
{
if (cPluItem.ORDER_OK_FLAG != PosConst.PLU_ORDER_OK_FLAG.ORDER_ING || cPluItem.CANCEL_DIV != PosConst.CANCEL_DIV.CANCEL)
{
bSaleAble = true;
break;
}
}
if (bSaleAble == false)
{
// 모든 거래 데이터 삭제
m_cDataService.DeleteTranItem();
// 거래정보 초기화
m_cTrnStatus.ClearAll();
// 판매화면 종료
cFormSaleMain.SaleMainExit();
return true;
}
// 일괄취소 확인
var isTradeStop = true;
foreach (Column.TR_PLU.DATA cPluItem in alPluItem)
{
if (cPluItem.CANCEL_DIV != PosConst.CANCEL_DIV.CANCEL && cPluItem.CANCEL_DIV_MAIN != PosConst.CANCEL_DIV.CANCEL)
{
isTradeStop = false;
break;
}
}
if (isTradeStop)
{
return this.TradeStop();
}
if ((m_cTrnStatus.Head.TradeKind).Substring(0, 1) != ItemConst.TRAN_KIND.NORMAL.DELIMITER)
{
// 거래 완료 처리
}
else
{
if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return false;
m_cTrnStatus.Sale.MenualOrderValue = string.Empty;
SetPayGuest("4");
// Add, 2017.01.18
// 주방프린터 수동출력 처리 0:자동 1:수동(프린터선택) 2:수동(상품선택)
MenualOrderKtchProcess();
// 주문내역 완료 처리
string sReturn = m_cTableSvr.CompleteMenuOrder();
if (sReturn != UserCom.RST_OK)
{
if (WinManager.QuestionMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0088)) == false)
return false;
}
// 모든 거래 데이터 삭제
m_cDataService.DeleteTranItem();
// 거래정보 초기화
m_cTrnStatus.ClearAll();
// 판매화면 종료
cFormSaleMain.SaleMainExit();
}
bRet = true;
}
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return bRet;
}
/// <summary>
/// 주문 종료(거래 저장없이 주문완료)
/// </summary>
/// <returns></returns>
private bool OrderCancelExit()
{
bool bRet = false;
try
{
if (m_cPosStatus.Base.PosType != PosConst.POS_TYPE.DEFERRED_PAYMENT) return false;
// 영업일자 체크
if (CmUtil.LongParse(m_cPosStatus.Base.SaleDate) < CmUtil.LongParse(System.DateTime.Now.ToString("yyyyMMdd")))
{
if (CmUtil.LongParse(System.DateTime.Now.ToString("HH")) > 5)
{
WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0184));
return false;
}
}
ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
foreach (Column.TR_PLU.DATA cPluItem in alPluItem)
{
if (cPluItem.ORDER_OK_FLAG == PosConst.PLU_ORDER_OK_FLAG.ORDER_ING || cPluItem.ORDER_OK_FLAG == PosConst.PLU_ORDER_OK_FLAG.ORDER_MOD)
{
if (WinManager.QuestionMessage(POS_MESSAGE.ERROR.MSG_0675) == false) return false;
break;
}
}
// 모든 거래 데이터 삭제
m_cDataService.DeleteTranItem();
// 거래정보 초기화
m_cTrnStatus.ClearAll();
// 판매화면 종료
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
cFormSaleMain.SaleMainExit();
return true;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return bRet;
}
private bool HappyOrderWeb()
{
bool bRet = false;
try
{
string sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_WEB_HAPPY_ORDER, PosKey.MENU_KEY.WEB_HP_ORD });
if (sRet == UserCom.RST_OK)
{
bRet = true;
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return bRet;
}
private bool HappyOrder()
{
bool bRet = false;
try
{
string sRet = WinSale.ShowForm(new string[] { FormManager.FORM_SAL_HPORD, "01" });
if (sRet == UserCom.RST_OK)
{
// 거래 초기화
m_cDataService.InitTranHeader();
// 판매중 모드 설정
m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING;
m_cTrnStatus.Head.TradeDiv = ItemConst.TRAN_DIV.NORMAL;
m_cTrnStatus.Head.TradeKind = ItemConst.TRAN_KIND.FORIGN.O2O;
// 판매화면
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
cFormSaleMain.DisplayInit(true, false);
// 상품등록 내역 표시
cFormSaleMain.DisplayItem(0, false);
bRet = true;
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return bRet;
}
private bool ItemMmeo(bool bIsFireKey)
{
bool bRet = false;
try
{
// 후불에서만 사용 가능
if (m_cPosStatus.Base.PosType == PosConst.POS_TYPE.PRE_PAYMENT)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0631);
return bRet;
}
// 주방프린트 사용(0 : 미사용, 1 : 사용)
if (PosMstManager.GetPosOption(POS_OPTION.OPT506) != "1")
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0414);
return bRet;
}
// 판매화면
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
int iSelectedRow = cFormSaleMain.GetSelectedIndexOnSaleItemGrid();
ArrayList alSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)alSaleItem[iSelectedRow];
// 취소상품 메모 불가
if (cPluItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL || cPluItem.CANCEL_DIV_MAIN == PosConst.CANCEL_DIV.CANCEL)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0017);
return bRet;
}
// 부가메뉴는 메모 불가
if (cPluItem.SUBPRC_MENU_KEY_DIV != "0")
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0665);
return bRet;
}
// 출력대상 상품 확인
var cnt = m_cTableSvr.GetKtchDiveceCount(cPluItem.ORDER_OK_FLAG, m_cPosStatus.Sale.SelectFloorCd, m_cPosStatus.Sale.SelectTableNo, cPluItem.SUB_SHOP_CD + cPluItem.ITEM_PLU_CD);
if (cnt <= 0)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0666);
return bRet;
}
// FIRE KEY는 한번에 하나씩만..
if (bIsFireKey)
{
if (cPluItem.ITEM_MEMO_1 == "FIRE KEY") return true;
}
//string sRet = WinTable.ShowForm(new string[] { FormManager.FORM_ETC_TABLE_MEMO, (bIsFireKey == false ? "1" : "9"), iSelectedRow.ToString() });
string msgId = bIsFireKey == false ? PosConst.KPS_ORD_MSG_ID.ITEM_MEMO : PosConst.KPS_ORD_MSG_ID.FIRE_KEY;
string sRet = WinTable.ShowForm(new string[] { FormManager.FORM_ETC_TABLE_MEMO, msgId, iSelectedRow.ToString() });
if (sRet == UserCom.RST_OK)
{
bRet = true;
if (bIsFireKey)
{
//ArrayList alSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
Column.TR_PLU.DATA cSaleItem = (Column.TR_PLU.DATA)alSaleItem[iSelectedRow];
cSaleItem.FIRE_KEY = true;
}
cFormSaleMain.DisplayItem(1, false);
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return bRet;
}
/// <summary>
/// 세트메뉴 상품 변경 처리
/// </summary>
/// <param name="sSelRow">선택행</param>
/// <returns></returns>
public bool SetMenuItemChange(string sSelRow)
{
bool bRet = false;
try
{
// 상품 아이템
ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
// 상품 정보
int nSelRow = CmUtil.IntParse(sSelRow);
Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)alPluItem[nSelRow];
// 취소 상품은 변경 불가
if (cPluItem.CANCEL_DIV == "1" || cPluItem.CANCEL_DIV_MAIN == "1")
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0017);
return false;
}
if (cPluItem.ORDER_OK_FLAG != PosConst.PLU_ORDER_OK_FLAG.ORDER_ING)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0027);
return false;
}
if (cPluItem.ITEM_DIV != ItemConst.PLU_ITEM_DIV.SET_DETL)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0307);
return false;
}
if (cPluItem.SET_PLU_SET_GROUP_CODE == "")
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0307);
return false;
}
// 세트메뉴 상품 변경 등록
frmSetMenuChg fForm = (frmSetMenuChg)FormManager.GetForm(FormManager.FORM_SET_MENU_CHANGE);
if (fForm == null)
{
fForm = new frmSetMenuChg();
FormManager.AddForm(FormManager.FORM_SET_MENU_CHANGE, fForm);
}
fForm.SetSelectRow = sSelRow;
if (fForm.ShowDialog() == DialogResult.OK)
{
// 판매 화면
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
// 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus)
cFormSaleMain.DisplayItem(1, false);
}
return true;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return bRet;
}
#region
///// <summary>
/////
///// </summary>
///// <returns></returns>
//public bool PayDcDuplicationCheck(string sPayGrpCode, string sPayCode)
//{
// bool bRet = true;
// try
// {
// int iCpn = 1; //할인(캠페인)
// int iDcTelecom = 1; //할인(통신사)
// int iDcPnt = 1; //할인(포인트)
// int iDcCpn = 1; //할인(쿠폰)
// int iDcEmp = 1; //할인(직원)
// int iDcUser = 1; //할인(임의)
// int iPayNrl = 1; //결제(일반)
// int iPayMobile = 1; //결제(모바일)
// int iPayPnt = 1; //결제(포인트)
// int[,] aCheckPoint = new int[9, 2];
// for (int iRow = 0; iRow < aCheckPoint.GetLength(0) ; iRow++)
// {
// aCheckPoint[iRow, 0] = 1;
// aCheckPoint[iRow, 1] = 0;
// }
// /////////////////////////////////////
// // 할인
// /////////////////////////////////////
// //캠페인
// ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
// for (int iRow = 0; iRow < alPluItem.Count; iRow++)
// {
// Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)alPluItem[iRow];
// if (cPluItem.CANCEL_DIV == PosConst.CANCEL_DIV.NORMAL)
// {
// if (cPluItem.CPN_DC_AMT > 0)
// {
// //aCheckPoint[0, 0] = 0;
// aCheckPoint[0, 1] = 1; //있음!
// }
// if (cPluItem.ITEM_DC_AMT > 0)
// {
// if(sPayGrpCode == ItemConst.TR_ITEM_ID.USER_DC_ITEM)
// {
// //같은 그룹에 결제/할인 수단이 등록되어 있어 처리 할 수 없습니다.
// return false;
// }
// aCheckPoint[1, 0] = 0;
// aCheckPoint[1, 1] = 1; //있음!
// }
// }
// }
// //할인 체크
// ArrayList alPayItem = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM);
// StringBuilder sbSQL = new StringBuilder();
// sbSQL.Length=0;
// for (int iRow = 0; alPayItem.Count > iRow; iRow++)
// {
// Column.TR_PAYMENT.DATA clPayItem = (Column.TR_PAYMENT.DATA)alPayItem[iRow];
// if(clPayItem.CANCEL_DIV == PosConst.CANCEL_DIV.NORMAL)
// {
// if(clPayItem.PAY_WAY_CD == sPayGrpCode)
// {
// //같은 그룹에 결제/할인 수단이 등록되어 있어 처리 할 수 없습니다.
// return false;
// }
// else
// {
// if(sbSQL.Length == 0 )
// {
// sbSQL.Append("'");
// }
// else
// {
// sbSQL.Append(",'");
// }
// sbSQL.Append(clPayItem.PAY_WAY_CD);
// sbSQL.Append(clPayItem.PAY_DTL_CD_01);
// sbSQL.Append("'");
// //등록 된 자기 자신 등록 유무 넣기
// switch (sPayGrpCode)
// {
// case ItemConst.TR_ITEM_ID.PAY_ITEM:
// case ItemConst.TR_ITEM_ID.CASH_ITEM:
// case ItemConst.TR_ITEM_ID.CHECK_ITEM:
// case ItemConst.TR_ITEM_ID.CREDIT_ITEM:
// case ItemConst.TR_ITEM_ID.CREDITCARD_ITEM:
// case ItemConst.TR_ITEM_ID.EMP_PAY_ITEM:
// case ItemConst.TR_ITEM_ID.FOREIGNEX_ITEM:
// case ItemConst.TR_ITEM_ID.GIFT_ITEM:
// case ItemConst.TR_ITEM_ID.MOBILECASH_ITEM:
// case ItemConst.TR_ITEM_ID.MOBILECON_ITEM:
// case ItemConst.TR_ITEM_ID.PAYETC_ITEM:
// case ItemConst.TR_ITEM_ID.POINT_ITEM:
// case ItemConst.TR_ITEM_ID.PPCARD_ITEM:
// case ItemConst.TR_ITEM_ID.RESERVATION_ITEM:
// {
// break;
// }
// case ItemConst.TR_ITEM_ID.COUPON_ITEM:
// {
// aCheckPoint[4, 1] = 1; //있음!
// break;
// }
// case ItemConst.TR_ITEM_ID.MOBILE_COM_POINT:
// {
// aCheckPoint[2, 1] = 1; //있음!
// break;
// }
// case ItemConst.TR_ITEM_ID.EMP_DC_ITEM:
// {
// aCheckPoint[5, 1] = 1; //있음!
// break;
// }
// }
// }
// }
// }
// DataTable dt = m_cMstPayDcService.Select(new string[] { PosMst.MST_PAY_DC.TABLE_NAME_GROUPBY, sbSQL.ToString(), PosConst.PAY_DC_TYPE.DC });
// if(dt == null || dt.Rows.Count <= 0)
// {
// //내역 없음!
// }
// else
// {
// foreach (DataRow dr in dt.Rows)
// {
// //할인
// aCheckPoint[0, 0] = CmUtil.GetDataRowInt(dr, PosMst.MST_PAY_DC.DATA.CPI_DUP_YN);
// aCheckPoint[1, 0] = CmUtil.GetDataRowInt(dr, PosMst.MST_PAY_DC.DATA.DC_GNRL_DUP_YN);
// aCheckPoint[2, 0] = CmUtil.GetDataRowInt(dr, PosMst.MST_PAY_DC.DATA.DC_TELECOM_DUP_YN);
// aCheckPoint[3, 0] = CmUtil.GetDataRowInt(dr, PosMst.MST_PAY_DC.DATA.DC_POINT_DUP_YN);
// aCheckPoint[4, 0] = CmUtil.GetDataRowInt(dr, PosMst.MST_PAY_DC.DATA.DC_CPN_DUP_YN);
// aCheckPoint[5, 0] = CmUtil.GetDataRowInt(dr, PosMst.MST_PAY_DC.DATA.DC_EMP_DC_DUP_YN);
// //결제
// aCheckPoint[6, 0] = CmUtil.GetDataRowInt(dr, PosMst.MST_PAY_DC.DATA.PAY_GNRL_DUP_YN);
// aCheckPoint[7, 0] = CmUtil.GetDataRowInt(dr, PosMst.MST_PAY_DC.DATA.PAY_MOBILE_DUP_YN);
// aCheckPoint[8, 0] = CmUtil.GetDataRowInt(dr, PosMst.MST_PAY_DC.DATA.PAY_POINT_DUP_YN);
// break;
// }
// }
// if (sPayGrpCode == "" && sPayCode == "")
// {
// //두개 코드가 공백이면 캠페인 경우이고 캠페인 중복 가능 여부만 체크 하면됨!
// if (aCheckPoint[0, 0] != 1)
// bRet = false;
// else
// bRet = true;
// }
// else
// {
// //캠페인 외 중복 체크
// dt = m_cMstPayDcService.Select(new string[] { PosMst.MST_PAY_DC.TABLE_NAME_GROUPBY, sPayGrpCode, sPayCode });
// //현재 등록 결제 수단과 등록된 결제 중복 체크 로직!
// if (dt == null || dt.Rows.Count <= 0)
// {
// //등록 정보 없음
// return false;
// }
// else
// {
// foreach (DataRow dr in dt.Rows)
// {
// //할인
// if (CmUtil.GetDataRowInt(dr, PosMst.MST_PAY_DC.DATA.DC_TELECOM_DUP_YN) == 1 && aCheckPoint[2, 0] == 1)
// {
// //통신사 중복!!
// }
// iDcPnt = CmUtil.GetDataRowInt(dr, PosMst.MST_PAY_DC.DATA.DC_POINT_DUP_YN);
// iDcCpn = CmUtil.GetDataRowInt(dr, PosMst.MST_PAY_DC.DATA.DC_CPN_DUP_YN);
// iDcEmp = CmUtil.GetDataRowInt(dr, PosMst.MST_PAY_DC.DATA.DC_EMP_DC_DUP_YN);
// //결제
// iPayNrl = CmUtil.GetDataRowInt(dr, PosMst.MST_PAY_DC.DATA.PAY_GNRL_DUP_YN);
// iPayMobile = CmUtil.GetDataRowInt(dr, PosMst.MST_PAY_DC.DATA.PAY_MOBILE_DUP_YN);
// iPayPnt = CmUtil.GetDataRowInt(dr, PosMst.MST_PAY_DC.DATA.PAY_POINT_DUP_YN);
// break;
// }
// }
// }
// }
// catch (Exception ex)
// {
// WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
// System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
// }
// return bRet;
//}
#endregion
//#20171227 인천공항 포스연동 start, phj
#region !!!!
private void IncheonAireport(string sMenuKey)
{
if (PosMstManager.GetPosOption(POS_OPTION.OPT512) != "1")
{
WinManager.ConfirmMessage(POS_MESSAGE.ERROR.MSG_0765);
return;
}
string sRet = UserCom.RST_ERR;
try
{
UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
"IncheonAirport Button Click Start ");
//#20171227 인천공항 포스연동 start, phj - #20180313
//기존
//if (m_cAirPortTran.IncheonAireportClose(sMenuKey, "Y") == UserCom.RST_OK)
//변경
sRet = m_cAirPortTran.IncheonAireportClose(sMenuKey, "Y");
if (sRet == UserCom.RST_OK)
//#20171227 인천공항 포스연동 end, phj - #20180313
{
//#20180119 로직변경 start,phj
//기존
/*
// 팝업
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_INCHEONAIRPORT, sMenuKey });
if (sRet != UserCom.RST_OK) { return; }
*/
//#20180119 로직변경 end,phj
m_cDataService.UpdatePluAmount(); // 상품 합계금액 계산(거래해더)
m_cDataService.UpdatePayAmount(); // 결제 금액 재 계산 처리
// 결제체크
CheckSaleComplete();
}
UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
"IncheonAirport Button Click End [" + sRet.ToString() + "]");
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
#endregion
//#20171227 인천공항 포스연동 end, phj
//#20171227 인천공항 포스연동 start, phj
#region
private string IncheonAireportPayClose(string sMenuKey)
{
if (PosMstManager.GetPosOption(POS_OPTION.OPT512) != "1")
{
//WinManager.ConfirmMessage(POS_MESSAGE.ERROR.MSG_0765);
//인천공항이 아닌데, 혹시 이 함수 탔을 경우 대비.
return UserCom.RST_OK;
}
string sRet = UserCom.RST_ERR;
try
{
//#20171227 인천공항 포스연동 start, phj - #20180313
//위치이동
//기존
/*
//#20180119 로직변경 start,phj
bool bCashPayCheck = false;
ArrayList alPayItem = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM);
for (int iRow = 0; iRow < alPayItem.Count; iRow++)
{
Column.TR_PAYMENT.DATA cPayItem = (Column.TR_PAYMENT.DATA)alPayItem[iRow];
if (cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.CASH_ITEM && cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.CASH.CASH_PAY)
{
//#20171227 인천공항 포스연동 start, phj - #20180313
if (cPayItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue;
//#20171227 인천공항 포스연동 end, phj - #20180313
bCashPayCheck = true;
break;
}
}
if (bCashPayCheck == true)
{
sRet = UserCom.RST_OK;
return sRet;
}
//#20180119 로직변경 start,phj
*/
//#20171227 인천공항 포스연동 end, phj - #20180313
string sCloseRet = m_cAirPortTran.IncheonAireportClose(sMenuKey, "N");
//if (sCloseRet == UserCom.RST_ERR)
if (sCloseRet == UserCom.RST_OK)
{
//#20180119 로직변경 start,phj
//기존
/*
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_INCHEONAIRPORT, sMenuKey });
if (sRet != UserCom.RST_OK)
{
//WinManager.ConfirmMessage("통합POS에서 결제내역을 가져오는데 실패하였습니다.");
return sRet;
}
*/
//#20180119 로직변경 end,phj
sRet = UserCom.RST_OK;
m_cDataService.UpdatePluAmount(); // 상품 합계금액 계산(거래해더)
m_cDataService.UpdatePayAmount(); // 결제 금액 재 계산 처리
}
//#20180119 로직변경 start,phj
//기존
/*
else if (sCloseRet == UserCom.RST_IGNORE)
{
// 예를들어)
// spc 결제완료 -> 통합포스 일괄취소 -> 인천공항포스 버튼 클릭 -> y 루틴 타고, 결제완료되는 시점에 n 루틴타면 두번 등록되는 현상 방지
sRet = UserCom.RST_OK;
}
*/
//#20180119 로직변경 end,phj
return sRet;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
return sRet;
}
}
#endregion
//#20171227 인천공항 포스연동 end, phj
//#20170828 해피포인트 적립 제외 버튼 추가 phj, start
private void HappyPoint_SaveExclude(string sMenuKey)
{
string sRet = UserCom.RST_ERR;
try
{
//#20180103 해피포인트 적립 제외 버튼 선택 취소 기능 start
//기존
//m_cTrnStatus.Head.HP_EXCLUDE_YN = "1";
//변경
if (m_cTrnStatus.Head.HP_EXCLUDE_YN == "1")
{
m_cTrnStatus.Head.HP_EXCLUDE_YN = "0";
}
else
{
m_cTrnStatus.Head.HP_EXCLUDE_YN = "1";
}
//#20180103 해피포인트 적립 제외 버튼 선택 취소 기능 end
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
cFormSaleMain.DisplayPayment(); // 결제등록정보 화면표시
sRet = UserCom.RST_OK;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
//#20170828 해피포인트 적립 제외 버튼 추가 phj, end
#region PayMainProc
/// <summary>
/// 결제 메인 기능 처리
/// </summary>
/// <param name="sFuncCode"></param>
public void PayMainProc(string sFuncCode, string sInputData)
{
string sRet;
try
{
if (WinBasic.CheckMenuKeyAuth(sFuncCode) == false) return; // 기능키 판매원 권한 체크
//string sMngAuth = PosMstManager.GetMstPicAuth(m_cPosStatus.Base.CashierNo + sFuncCode);
//switch (sMngAuth)
//{
// case PosConst.MNG_AUTH_DIV.NON_PERMISSION:
// WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0308), MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0505), false);
// return;
// case PosConst.MNG_AUTH_DIV.PERMISSION:
// break;
// case PosConst.MNG_AUTH_DIV.SUPERVISOR:
// if (WinBasic.ShowForm(new string[] { FormManager.FORM_LOG_ON, PosKey.MENU_KEY.REGISTER_ADMIN }) == UserCom.RST_ERR) return;
// //sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_CASHIER_INPUT, "Supervisor" });
// //if (sRet != UserCom.RST_OK)
// //{
// // return;
// //}
// break;
//}
if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.PAY_WAIT || m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.PAY_DOING) // 결제 모드
{
//키유효성 체크
if (m_cDataCommon.FunctionKeyValidity(sFuncCode) == false)
{
WinManager.ConfirmMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0054));
return;
}
// 결제할인 마스터의 결제할인 중복 가능 여부 체크
if (m_cDataCommon.PayDcDuplicationCheck(sFuncCode) == false) return;
SetPayMainTopMot(sFuncCode); //MOT 변경!
SerialMsrToEmul(); // MSR변환프로그램 체크
switch (sFuncCode)
{
//#20170828 해피포인트 적립 제외 버튼 추가 phj, start
case PosKey.MENU_KEY.HAPPY_SAVE_EXCLUDE:
HappyPoint_SaveExclude(sFuncCode);
break;
//#20170828 해피포인트 적립 제외 버튼 추가 phj, end
//#20171227 인천공항 포스연동 start, phj
case PosKey.MENU_KEY.INCHEON_AIRPORT:
IncheonAireport(sFuncCode);
break;
//#20171227 인천공항 포스연동 end, phj
//#20180413 웰컴카드 신규기능 추가 start,phj
case PosKey.MENU_KEY.WELCOMECARD_ISSUE:// 웰컴카드 발급
WelcomeCard_Issue(sFuncCode, "2");
break;
case PosKey.MENU_KEY.WELCOMECARD_HPAPP_REGISTER:// 웰컴카드 해피앱 고객등록
WelcomeCard_Issue(sFuncCode, "2");
break;
//#20180413 웰컴카드 신규기능 추가 end,phj
case PosKey.MENU_KEY.HAPPY_POINT: //해피포인트 적립
case PosKey.MENU_KEY.HAPPY_POINT_SAVE_CHINA: //해피포인트 적립-중국
PayHappyPoint(sFuncCode);
break;
case PosKey.MENU_KEY.OKCASHBACK_SAVE: //OCB포인트 적립
PayOkCashbackSave(sFuncCode);
break;
case PosKey.MENU_KEY.SKT: // SKT
case PosKey.MENU_KEY.KT: // KT
case PosKey.MENU_KEY.KT_VIP: // KT_VIP
//#20180413 웰컴카드 신규기능 추가 start,phj
case PosKey.MENU_KEY.WELCOMECARD_DC:
//#20180413 웰컴카드 신규기능 추가 end,phj
case PosKey.MENU_KEY.LGT: // LGT
PayPointMobileCom(sFuncCode);
break;
case PosKey.MENU_KEY.PAY_OTHER_DC: //기타할인
sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_MENU_SUB, sFuncCode });
if (sRet != UserCom.RST_ERR)
{
PayMainProc(sRet, sInputData); // 선택된 업무 실행
}
break;
case PosKey.MENU_KEY.HAPPY_DC_COUPON: //해피쿠폰할인
PayHappyPointCouopn(sFuncCode, "0");
break;
case PosKey.MENU_KEY.SPC_EMPLOYEE_DC: //SPC임직원할인
case PosKey.MENU_KEY.SPC_EMPLOYEE_DC_PAY: //SPC임직원할인(결제)
SPCEmployeeDC(sFuncCode);
break;
case PosKey.MENU_KEY.SPC_EMPLOYEE_DC_CHINA: //SPC임직원할인-중국
SPCEmployeeDC_China(sFuncCode);
break;
case PosKey.MENU_KEY.SEVERANCE_DC: //세브란스할인
SeveranceDC(sFuncCode);
break;
case PosKey.MENU_KEY.DC_COUPONS: //쿠폰할인
CouponDC(sFuncCode);
break;
case PosKey.MENU_KEY.PAY_INSTOR_DC: //입점매장직원할인
case PosKey.MENU_KEY.PAY_INSTOR_DC_5:
iNStorDC(sFuncCode);
break;
case PosKey.MENU_KEY.PAY_INSTOR_PAY: // 기타결제
iNStorDC(sFuncCode);
break;
case PosKey.MENU_KEY.TOTAL_DC_AMT: // 전체금액할인
case PosKey.MENU_KEY.TOTAL_DC_RATE: // 전체%할인
case PosKey.MENU_KEY.TOTAL_ADDDC_AMT: // 추가금액할인
TotalDC(sFuncCode);
break;
case PosKey.MENU_KEY.KAIST_DC: // 카이스트할인(2017.05.15)
case PosKey.MENU_KEY.HPORDER_REVDC: // 해피오더사전예약할인(2017.05.15)
PayDcMstToDc(sFuncCode);
break;
case PosKey.MENU_KEY.CAKE_VOUCHERS: //케익교환권
CakeChange(sFuncCode);
break;
case PosKey.MENU_KEY.CASH: //현금
PayCash(sFuncCode, sInputData);
break;
case PosKey.MENU_KEY.CREDIT_CARD: //신용카드
PayCreditCard(sFuncCode, sInputData);
break;
case PosKey.MENU_KEY.OTHER_PAYMENTS: //기타결제
sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_MENU_SUB, sFuncCode });
if (sRet != UserCom.RST_ERR)
{
// -------------------------------------------------------------------------------------------
// 세브란스 직원식 상품 체크
// -------------------------------------------------------------------------------------------
string sMenuKey = sRet;
sRet = SeveranceiTemCheck(sMenuKey);
if (sRet != UserCom.RST_OK) return;
// -------------------------------------------------------------------------------------------
PayMainProc(sMenuKey, sInputData); // 선택된 업무 실행
}
break;
case PosKey.MENU_KEY.MOBILE_COUPON: //모바일 쿠폰
PayMobileCoupon(sFuncCode);
break;
case PosKey.MENU_KEY.CHECK_CASH: //수표
case PosKey.MENU_KEY.CHECK_SEARCH: //수표 조회
PayCheck(sFuncCode);
break;
case PosKey.MENU_KEY.GIFT_CARD: //상품권
PayGift(sFuncCode);
break;
case PosKey.MENU_KEY.MEAL_TICKET: //식권
PayMealTicket(sFuncCode);
break;
case PosKey.MENU_KEY.STORE_COUPON: //매장쿠폰
break;
case PosKey.MENU_KEY.HAPPY_POINT_USE: //해피포인트 사용
case PosKey.MENU_KEY.HAPPY_POINT_USE_CHINA: //해피포인트 사용 -중국
case PosKey.MENU_KEY.OLIBANK: //OLIBANK
case PosKey.MENU_KEY.OKCASHBACK: //OCB
case PosKey.MENU_KEY.BLUE_MEMBERS: //블루 멤버스
case PosKey.MENU_KEY.RED_MEMBERS: //레드 멤버스
PayPointMemberUse(sFuncCode);
break;
case PosKey.MENU_KEY.SAMSUNG_POINTS: //삼성포인트
PaySamSungPoint(sFuncCode);
break;
case PosKey.MENU_KEY.WOORIMORE_POINTS: //우리모아포인트
PaySamSungPoint(sFuncCode);
break;
case PosKey.MENU_KEY.HYUNDAI_M_POINTS: //현대M포인트
PaySamSungPoint(sFuncCode);
break;
//*** MoonSeokWoo 2017.12.12 Add
case PosKey.MENU_KEY.SHINHANCARD_POINT: //신한포인트
PaySamSungPoint(sFuncCode);
break;
//*** MoonSeokWoo 2017.12.12 End
case PosKey.MENU_KEY.BALANCE_VOUCHER: //잔액교환권
PayExchangeTicket(sFuncCode);
break;
case PosKey.MENU_KEY.FOREIGN_CURRENCY: //외화
PayForeign(sFuncCode);
break;
case PosKey.MENU_KEY.ALIPAY: //알리페이
PayAliPay(PosKey.MENU_KEY.ALIPAY);
break;
case PosKey.MENU_KEY.WECHATPAY: //위챗페이
WeChatPay(PosKey.MENU_KEY.WECHATPAY);
break;
case PosKey.MENU_KEY.WECHATPAY_BAIRONG: //샤오청쉬 위챗페이-바이롱;girak.kim;2017.09.11.001
WeChatPay_BaiRong(PosKey.MENU_KEY.WECHATPAY_BAIRONG);
break;
case PosKey.MENU_KEY.XIAOCHENGXU_GIFTCARD: //샤오청쉬 기프트카드;girak.kim;2017.09.11.001
XiaoChengxu_GiftCard(PosKey.MENU_KEY.XIAOCHENGXU_GIFTCARD);
break;
case PosKey.MENU_KEY.SMILE_PAY: //스마일페이
SmilePay(PosKey.MENU_KEY.SMILE_PAY);
break;
case PosKey.MENU_KEY.T_PAY: // T페이
PayTPay();
break;
case PosKey.MENU_KEY.SEVERANCE_PAYMENTS: //세브란스결제
SeveranceDC(sFuncCode);
break;
case PosKey.MENU_KEY.SPC_EMPLOYEES_PAY: //SPC임직원결제
SPCEmployeeDC(sFuncCode);
break;
case PosKey.MENU_KEY.T_MONEY: //T-MONEY
PayTMoneyCashBee(new string[] { FormManager.FORM_PAY_TMONEY, sFuncCode, "", "" });
break;
case PosKey.MENU_KEY.CASHBEE: //캐시비
PayTMoneyCashBee(new string[] { FormManager.FORM_PAY_TMONEY, sFuncCode, "", "" });
break;
case PosKey.MENU_KEY.TMONEY_SEARCH: //교통카드 잔액조회
PayTMoneyCashBee(new string[] { FormManager.FORM_PAY_TMONEY, PosKey.MENU_KEY.T_MONEY, "", "S" });
break;
case PosKey.MENU_KEY.PREPAID_CARDS_HPJOY: //선불카드(해피조이)
PayPrepaidCard_China(sFuncCode);
break;
case PosKey.MENU_KEY.HP_GIFT_CHARGED: //선불카드(해피조이) 충전
PayHappyGift(sFuncCode);
break;
case PosKey.MENU_KEY.CREDIT_CUSTOMER: //외상
PaySaleOnCustomer(sFuncCode);
break;
// Rhee, 2017/09/22 딜리버리 외매(선매) 추가 -- START
case PosKey.MENU_KEY.CREDIT_DELIVERY: //외상 - 딜리버리(외매)
PaySaleOnCustomer(sFuncCode);
break;
// Rhee, 2017/09/22 딜리버리 외매(선매) 추가 -- END
case PosKey.MENU_KEY.ONLINE_COUPONS: //온라인 쿠폰(중국)
PayOnLineCoupon(sFuncCode);
break;
case PosKey.MENU_KEY.PREPAID_CARDS: //선불카드
PayPrepaidCard(sFuncCode);
break;
case PosKey.MENU_KEY.HAPPY_GIFTCARD: //해피기프트 사용
PayHappyGift(sFuncCode);
break;
case PosKey.MENU_KEY.RESERVATION: //예약
RegPayReservations();
break;
case PosKey.MENU_KEY.SERVICE_CHARGE: //Service Charge
RegServiceChrge(sFuncCode);
break;
//case PosKey.MENU_KEY.PAYMENT_CANCELED: //결제 취소
// break;
//case PosKey.MENU_KEY.ADDITIONAL_ORDERS: //추가주문
// break;
case PosKey.MENU_KEY.ESC_PREVIOUS: //이전
break;
case PosKey.MENU_KEY.SAMSUNG_SFC: //삼성카드 제휴할인 SFC
PaySamsungFamilyCard(sFuncCode);
break;
case PosKey.MENU_KEY.BUNDLE_ITEM: //묶음상품/쇼킹박스
BundleiTem(sFuncCode);
break;
case PosKey.MENU_KEY.OURHOME: //아워홈
PayOurHome(PosKey.MENU_KEY.OURHOME);
break;
case PosKey.MENU_KEY.ORDER_CALLCENTER: // 배달(콜센터)
case PosKey.MENU_KEY.ORDER_BAEMIN: // 배달(배달의민족)
case PosKey.MENU_KEY.ORDER_YOGIYO: // 배달(요기요)(2017.05.15)
PayOrderDelivery(sFuncCode);
break;
case PosKey.MENU_KEY.VIP_POINT: // 베트남 신용카드(VIP POINT) - 프리픽스 캠페인 적용
PayVipPoint(sFuncCode);
break;
//#20170731, 해피기프트카드(코나머니) 개발 Start, srlee
case PosKey.MENU_KEY.HPGIFTCARD: // 해피기프트카드(코나머니)
PayHappyGiftCard(sFuncCode);
break;
//#20170731, 해피기프트카드(코나머니) 개발 End, srlee
// 제휴카드(통합) 할인 처리(2017.08.29) -- START
case PosKey.MENU_KEY.MOBILE_UNITY:
PayPointMobileUnity(sFuncCode);
break;
// 제휴카드(통합) 할인 처리(2017.08.29) -- END
//#20180202 인천공항 VIP 라운지 기능미사용으로 주석처리 start,phj
/*
case PosKey.MENU_KEY.AIRPORT_VIP_LOUNGE:
PayInCheonVipLounge(sFuncCode, sInputData);
break;
*/
//#20180202 인천공항 VIP 라운지 기능미사용으로 주석처리 end,phj
//grayber@20180208 코레일 마일리지 입력 start - 메뉴키 기능 추가
case PosKey.MENU_KEY.KORAIL_MILEAGE:
PayKorailMileage(sFuncCode, sInputData);
break;
//grayber@20180208 코레일 마일리지 입력 end
default:
if (WinSale.ExecuteBinessRun(sFuncCode) == UserCom.RST_IGNORE)
{
//
}
break;
}
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
#endregion
#region PayHappyPoint
/// <summary>
/// 해피포인트 적립 카드 등록
/// </summary>
private void PayHappyPoint(string sMenuKey)
{
string sRet = UserCom.RST_ERR;
try
{
if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return;
// 포인트카드 등록 여부 체크(포인트 카드는 한장만 등록 가능)
ArrayList alEtc = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM);
foreach (Column.TR_ETC.DATA cEtcItem in alEtc)
{
if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue;
// 해피포인트 - 중국
if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.POINT_SAVE_CHINA) return;
// 해피포인트 - 한국
if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.SAVEPOINT) return;
// OKCASHBACK
if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.OCB_SAVE) return;
}
if (m_cTrnStatus.Sale.RecvedPayAmt > 0)
{
// 모바일쿠폰 등록 후 해피포인트 등록 처리(2017.08.28) -- START
ArrayList alPayItem = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM);
foreach (Column.TR_PAYMENT.DATA cPayItem in alPayItem)
{
if (cPayItem.CANCEL_DIV != PosConst.CANCEL_DIV.NORMAL) continue;
if (cPayItem.PAY_DTL_CD_05 != PosConst.PAY_DC_TYPE.PAY) continue; // 할인결제구분 (1:결제, 2:할인)
if (cPayItem.PAY_WAY_CD != ItemConst.TR_ITEM_ID.MOBILECON_ITEM)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0392);
return;
}
}
// OLD
//WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0392);
//return;
// 모바일쿠폰 등록 후 해피포인트 등록 처리(2017.08.28) -- END
}
if (PosMstManager.GetPosOption(POS_OPTION.OPT316) == "0") // 해피포인트 업무 사용 여부(0:사용안함, 1:사용함(한국), 2:사용함(중국))
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0364);
return;
}
// 해피포인트 화면 진행
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_POINT_HAPPY_POINT, sMenuKey, "0" });
if (sRet != UserCom.RST_OK) return;
//#20180413 웰컴카드 신규기능 추가 start,phj
//-----------------------------------------------------------------
// 해피앱 고객이고 HP회원번호 존재하고 HP웰컴카드 번호가 존재 시
// 웰컴카드 할인적용 할 것인지 안내팝업 오픈!!
//-----------------------------------------------------------------
if (PosMstManager.GetPosOption(POS_OPTION.OPT516) == "1")
{
string m_HPWccCard = "";
string m_HPCustNo = "";
bool bWccInfoCheck = false;
bool bMobileDcCheck = false;
#region !
ArrayList alEtcItem = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM);
foreach (Column.TR_ETC.DATA cEtcItem in alEtcItem)
{
if (cEtcItem.CANCEL_DIV == ItemConst.PAY_CANCEL_DIV.CANCEL) continue;
if (cEtcItem.ETC_WAY_CD != ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 != ItemConst.TR_ITEM_ID.ETC_INFO.SAVEPOINT) continue;
//#20180607 해피 조회 응답에 웰컴카드 번호만 내려오면 무조건 제휴할인 적용 start
//if (cEtcItem.OCCUR_ENTRY_12 != "Y") continue; //해피앱여부
//if (cEtcItem.OCCUR_ENTRY_10 == "") continue; //HP회원번호
//#20180607 해피 조회 응답에 웰컴카드 번호만 내려오면 무조건 제휴할인 적용 end
//HP회원번호
m_HPCustNo = CmUtil.MidH(cEtcItem.OCCUR_ENTRY_10, 0, 10).Trim();
//HP웰컴카드
m_HPWccCard = cEtcItem.OCCUR_ENTRY_19;
//#20180607 해피 조회 응답에 웰컴카드 번호만 내려오면 무조건 제휴할인 적용 start
//기존
//if (m_HPCustNo != "" && m_HPWccCard != "") { bWccInfoCheck = true; }
//변경
if (m_HPWccCard != "") { bWccInfoCheck = true; }
//#20180607 해피 조회 응답에 웰컴카드 번호만 내려오면 무조건 제휴할인 적용 end
break;
}
#endregion
#region !
if (bWccInfoCheck == true)
{
ArrayList alPays = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM);
for (int iRow = 0; iRow < alPays.Count; iRow++)
{
Column.TR_PAYMENT.DATA cPayItem = (Column.TR_PAYMENT.DATA)alPays[iRow];
if (cPayItem.CANCEL_DIV == ItemConst.PAY_CANCEL_DIV.CANCEL) continue;
if (cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.MOBILE_COM_POINT)
{
bMobileDcCheck = true;
break;
}
}
}
#endregion
#region !
if (bWccInfoCheck == true && bMobileDcCheck == false)
{
//if (WinManager.QuestionMessage("웰컴할인 적용 하시겠습니까?") == true)
//if (WinManager.QuestionMessage(MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1139)) == true)
if (WinManager.QuestionMessage(MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1139), MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_1138)) == true)
{
frmPntMobileUnity frmPntMobileUnity = new frmPntMobileUnity("Initial");
string _strCardDiv = frmPntMobileUnity.SelectMobileUnityKind(m_HPWccCard);
m_cPosStatus.Sale.strMobileUnityCardNo = m_HPWccCard; // 웰컴카드번호!
m_cPosStatus.Sale.strHappyPointCardNo_Title = _strCardDiv; // 웰컴카드구분자!
//--------------------------------------
// 제휴카드 상태바 표시을 위한 배열 설정
//--------------------------------------
#region
if (m_cPosStatus.Sale.strPriorReading_Title[0] == null || m_cPosStatus.Sale.strPriorReading_Title[0] == "")
{
//--------------------------------------------------------
// 만약 첫번째로 리딩된 해피포인트 및 제휴카드가 없을 경우
// -> 그대로 입력한다.
//--------------------------------------------------------
m_cPosStatus.Sale.strPriorReading_Title[0] = m_cPosStatus.Sale.strHappyPointCardNo_Title;
}
else if (m_cPosStatus.Sale.strPriorReading_Title[1] == null || m_cPosStatus.Sale.strPriorReading_Title[1] == "")
{
//-------------------------------------------------------------------
// 만약 두번째로 리딩된 해피포인트 및 제휴카드가 없을 경우
// -> 두번째에 해피포인트를 입력한다.
// 단, 첫번째로 리딩된 제휴카드가 있을 경우 이전 제휴카드를 치환한다.
//-------------------------------------------------------------------
if (m_cPosStatus.Sale.strPriorReading_Title[0] != "HPC")
{
m_cPosStatus.Sale.strPriorReading_Title[0] = m_cPosStatus.Sale.strHappyPointCardNo_Title;
}
else
{
m_cPosStatus.Sale.strPriorReading_Title[1] = m_cPosStatus.Sale.strHappyPointCardNo_Title;
}
}
else
{
//----------------------------------------------------------------
// 만약 첫번째, 두번째로 리딩한 해피포인트 및 제휴카드가 있을 경우
// 이전 제휴카드를 치환한다.
//----------------------------------------------------------------
if (m_cPosStatus.Sale.strPriorReading_Title[0] != "HPC")
{
m_cPosStatus.Sale.strPriorReading_Title[0] = m_cPosStatus.Sale.strHappyPointCardNo_Title;
}
else
{
m_cPosStatus.Sale.strPriorReading_Title[1] = m_cPosStatus.Sale.strHappyPointCardNo_Title;
}
}
#endregion
//if (pnlPayMainBack.Visible == true)
//{
// #region '해피포인트' 및 '제휴할인 카드' 화면을 표시한다.
// #region 만약 제휴할인 카드 값이 설정되어 있을 경우 제휴할인 카드 화면을 표시한다.
// if (m_cPosStatus.Sale.strMobileUnityCardNo != "")
// {
// // 제휴할인 카드(00292) 화면 표시 -----
// fSalMain.PayComFuncion(PosKey.MENU_KEY.MOBILE_UNITY, "2");
// }
// #endregion
// #endregion
//}
if (m_cPosStatus.Sale.strMobileUnityCardNo != "")
{
if ((m_cTrnStatus.Sale.RemainPayAmt == 0 && PosMstManager.GetPosOption(POS_OPTION.OPT322) == "1") ||
(m_cTrnStatus.Sale.RemainPayAmt == 0 && m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.PAY_DOING))
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0569);
return;
}
//키유효성 체크
if (m_cDataCommon.FunctionKeyValidity(PosKey.MENU_KEY.MOBILE_UNITY) == false)
{
WinManager.ConfirmMessage("(" + PosKey.MENU_KEY.MOBILE_UNITY + ") " + MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0054));
return;
}
// 제휴할인 카드(00292) 화면 표시 -----
PayMainProc(PosKey.MENU_KEY.MOBILE_UNITY, "2");
}
}
}
#endregion
}
//#20180413 웰컴카드 신규기능 추가 end,phj
// 디지털메뉴보드 I/F
//#16569 파스쿠찌 드라이브 스루 기능 개발 요청 start
//기존
//if (m_cPosStatus.Base.DmbIf == "1")
//변경
//if (m_cPosStatus.Base.DmbIf == "1" &&
// PosMstManager.GetPosOption(POS_OPTION.OPT554) != "1")
////#16569 파스쿠찌 드라이브 스루 기능 개발 요청 end
//{
// ArrayList alTrEtc = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM);
// foreach (Column.TR_ETC.DATA cEtcItem in alTrEtc)
// {
// if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue;
// if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.SAVEPOINT)
// {
// //#20180821 해피포인트 고객이름 마스킹 start
// if (cEtcItem.HP_CUST_NAME != "") { cEtcItem.HP_CUST_NAME = m_cDataCommon.NameMasking(cEtcItem.HP_CUST_NAME); }
// //#20180821 해피포인트 고객이름 마스킹 end
// // 디지털메뉴보드 I/F
// IDataServiceUs cDigitalMenuBoard = (IDataServiceUs)sManager.InitServiceInstance(ServiceLists.BSV_BASIC.DLL, ServiceLists.BSV_BASIC.DMB_IF);
// // 포인트조회
// cDigitalMenuBoard.Execute(new string[] { ItemConst.DMB_IRT_ID.POINT_INFO // 전문 구분
// , "HPC" // POINT_DIV
// , cEtcItem.OCCUR_ENTRY_12 // APP_DIV (Y:HPC APP, N:그 외)
// , "1" // DIV(1:조회, 2:적립, 3:할인, 4:사용 ...)
// , "" // AMOUNT(포인트사용금액)
// , "" // POINT(적립,할인,사용포인트)
// , "" // R_POINT(잔여포인트)
// , "" //
// , cEtcItem.OCCUR_ENTRY_01 // CARD_NO(마스킹 된 카드 번호)
// , cEtcItem.HP_CUST_NAME // CUST_NAME(고객명)
// , "" }); // CAMPAIGN_INFO
// break;
// }
// }
//}
//IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
//cFormSaleMain.DisplayItem(0, false);
CheckSaleComplete(); // 결제완료 체크
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
#endregion
#region PayOkCashbackSave OKCASHBACK
/// <summary>
/// OKCASHBACK 적립 카드 등록
/// </summary>
private void PayOkCashbackSave(string sMenuKey)
{
string sRet = UserCom.RST_ERR;
try
{
if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return;
// 포인트카드 등록 여부 체크(포인트 카드는 한장만 등록 가능)
ArrayList alEtc = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM);
foreach (Column.TR_ETC.DATA cEtcItem in alEtc)
{
if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue;
// 해피포인트 - 중국
if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.POINT_SAVE_CHINA) return;
// 해피포인트 - 한국
if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.SAVEPOINT) return;
// OKCASHBACK
if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.OCB_SAVE) return;
}
if (m_cTrnStatus.Sale.RecvedPayAmt > 0)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0392);
return;
}
// OCB 적립 화면 진행
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_POINT_OCB_SAVE, sMenuKey });
if (sRet != UserCom.RST_OK) return;
//IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
//cFormSaleMain.DisplayItem(0, false);
CheckSaleComplete(); // 결제완료 체크
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
#endregion
#region PayPointMobileCom
/// <summary>
/// 통신사 할인 처리
/// </summary>
/// <param name="sMenuKey"></param>
private void PayPointMobileCom(string sMenuKey)
{
double nDestAmt = 0;
string sRet = UserCom.RST_ERR;
try
{
if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return;
if (m_cPosStatus.Mst.CorpDiv == ItemConst.CORP_DIV.PC)
{
ArrayList alPayItem = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM);
foreach (Column.TR_PAYMENT.DATA cPayItem in alPayItem)
{
if (cPayItem.CANCEL_DIV != PosConst.CANCEL_DIV.NORMAL) continue;
//#20171012 해피포인트 사용 후 통신사 할인 중복 가능 start
//기존
//if (cPayItem.PAY_WAY_CD != ItemConst.TR_ITEM_ID.MOBILECON_ITEM) // 통신사할인 모바일쿠폰과 중복 가능
//변경
if ((cPayItem.PAY_WAY_CD != ItemConst.TR_ITEM_ID.MOBILECON_ITEM) &&
((cPayItem.PAY_WAY_CD != ItemConst.TR_ITEM_ID.POINT_ITEM) || (cPayItem.PAY_DTL_CD_01 != ItemConst.TR_ITEM_ID.POINT_USE.HAPPY_POINT)))
//#20171012 해피포인트 사용 후 통신사 할인 중복 가능 end
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0392);
return;
}
}
}
else
{
if (m_cTrnStatus.Sale.RecvedPayAmt > 0)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0392);
return;
}
}
// OCB 적립 후 불가
ArrayList alEtc = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM);
foreach (Column.TR_ETC.DATA cEtcItem in alEtc)
{
if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue;
if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.OCB_SAVE)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0555);
return;
}
}
if (sMenuKey == PosKey.MENU_KEY.KT_VIP)
{
// KTVIP는 BR만 사용 가능
if (m_cPosStatus.Mst.CorpDiv != ItemConst.CORP_DIV.BR)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0364);
return;
}
// 브랜드 코드 체크
if (m_cPosStatus.Base.BrandCd != PosConst.MST_BRAND_CODE.BR_BR && m_cPosStatus.Base.BrandCd != PosConst.MST_BRAND_CODE.BR_DD)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0364);
return;
}
// 통신사 VIP 증정 대상 금액 획득
nDestAmt = m_cDataCommon.SrarchTermCoopCmpDcItem(ItemConst.TR_ITEM_ID.MOBILE_COM_POINT, ItemConst.TR_ITEM_ID.MOBILE_COM.MOBILE_KT_VIP, "");
if (nDestAmt <= 0)
{
//#11155_[DD] KT 더블할인 프로모션 개발 요청_hs
//if (m_cPosStatus.Base.BrandCd == PosConst.MST_BRAND_CODE.BR_BR)
//{
// KT멤버십 더블할인 체크
nDestAmt = m_cDataCommon.SrarchTermCoopCmpDcItem(ItemConst.TR_ITEM_ID.MOBILE_COM_POINT, ItemConst.TR_ITEM_ID.MOBILE_COM.MOBILE_KT_DOUBLE, "");
sMenuKey = PosKey.MENU_KEY.KT_DOUBLE;
//}
if (nDestAmt <= 0)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0154);
return;
}
}
}
else
{
// 통신사 할인 대상 상품 체크
nDestAmt = m_cDataService.GetPluTagetAmount(sMenuKey);
if (nDestAmt < 0)
{
// 캠페인 중복 불가(캠페인과 통신사 할인 중 선택)
ArrayList aSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
double nCampAmt = 0;
foreach (Column.TR_PLU.DATA cPluItem in aSaleItem)
{
if (cPluItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL || cPluItem.CANCEL_DIV_MAIN == PosConst.CANCEL_DIV.CANCEL) continue; // 지정취소
if (cPluItem.BILLSPR_NO != m_cTrnStatus.Sale.BillSplitNo) continue; // 빌분리번호
nCampAmt = CmUtil.DoubleAdd(nCampAmt, cPluItem.CPI_DC_AMT);
}
string sMessage = string.Format(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0370), m_cPosStatus.Global.NumericTOCurrency(nCampAmt));
if (WinManager.QuestionMessage(sMessage) == false) return;
// 캠페인 취소 처리
ICampaignUs cCampaingMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN);
cCampaingMain.ClearCampaignAmt();
// 상품 합계금액 계산(거래해더)
m_cDataService.UpdatePluAmount();
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
cFormSaleMain.DisplayItem(1, false);
cFormSaleMain.DisplayPayment(); // 결제등록정보 화면표시
}
else if (nDestAmt == 0)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0134);
return;
}
}
// 통신사 할인 화면
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_POINT_MOBILE_COM, sMenuKey });
if (sRet != UserCom.RST_OK) return;
CheckSaleComplete(); // 결제완료 체크
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
#endregion
#region SPCEmployeeDC SPC
/// <summary>
/// SPC 임직원 할인 처리
/// </summary>
/// <param name="sMenuKey"></param>
private void SPCEmployeeDC(string sMenuKey)
{
string sRet = UserCom.RST_ERR;
try
{
if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return;
// OCB 적립 후 불가
ArrayList alEtc = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM);
foreach (Column.TR_ETC.DATA cEtcItem in alEtc)
{
if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue;
if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.OCB_SAVE)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0555);
return;
}
}
//// SPC 임직원 할인 등록 여부 체크
//ArrayList alPayment = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM);
//foreach (Column.TR_PAYMENT.DATA cPayItem in alPayment)
//{
// if (cPayItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue;
// // SPC 임직원 할인
// if (cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.EMP_DC_ITEM) return;
//}
if (sMenuKey == PosKey.MENU_KEY.SPC_EMPLOYEES_PAY)
{
// SPC 임직원 결제화면
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_EMP, sMenuKey });
if (sRet != UserCom.RST_OK) return;
}
else
{
// SPC 임직원 할인 화면
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_DC_EMP, sMenuKey });
if (sRet != UserCom.RST_OK) return;
//IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
//cFormSaleMain.DisplayItem(0, false);
}
CheckSaleComplete(); // 결제완료 체크
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
#endregion
#region SPCEmployeeDC SPC -
/// <summary>
/// SPC 임직원 할인 - 중국 처리
/// </summary>
/// <param name="sMenuKey"></param>
private void SPCEmployeeDC_China(string sMenuKey)
{
string sRet = UserCom.RST_ERR;
try
{
if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return;
// SPC 임직원 할인 - 중국 화면
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_DC_EMP_CHINA, sMenuKey });
if (sRet != UserCom.RST_OK) return;
CheckSaleComplete(); // 결제완료 체크
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
#endregion
#region TotalDC
/// <summary>
/// 전체 할인 처리
/// </summary>
/// <param name="sMenuKey"></param>
private void TotalDC(string sMenuKey)
{
string sRet = UserCom.RST_ERR;
try
{
if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return;
// 전체 금액/% 할인
if (sMenuKey == PosKey.MENU_KEY.TOTAL_DC_RATE || sMenuKey == PosKey.MENU_KEY.TOTAL_DC_AMT)
{
if (m_cTrnStatus.Sale.RecvedPayAmt > 0)
{
// 임의 할인 중복 등록 체크(받은금액이 있으면 결제할인 안됨)
WinManager.ConfirmMessage(POS_MESSAGE.ERROR.MSG_0112);
return;
}
}
// OCB 적립 후 불가
ArrayList alEtc = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM);
foreach (Column.TR_ETC.DATA cEtcItem in alEtc)
{
if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue;
if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.OCB_SAVE)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0555);
return;
}
}
// 임의 할인 중복 등록 불가 체크
ArrayList aSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
for (int iRow = 0; iRow < aSaleItem.Count; iRow++)
{
Column.TR_PLU.DATA cSaleItem = (Column.TR_PLU.DATA)aSaleItem[iRow];
if (cSaleItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL || cSaleItem.CANCEL_DIV_MAIN == PosConst.CANCEL_DIV.CANCEL) continue;// 지정취소
if (sMenuKey == PosKey.MENU_KEY.TOTAL_DC_AMT || sMenuKey == PosKey.MENU_KEY.TOTAL_DC_RATE)
{
if (cSaleItem.ITEM_DC_AMT > 0)
{
if (cSaleItem.DC_DIV != ItemConst.PLU_DC_DIV.NORMAL
&& cSaleItem.DC_DIV != ItemConst.PLU_DC_DIV.IN_DC_TOTAMT && cSaleItem.DC_DIV != ItemConst.PLU_DC_DIV.IN_DC_TOTRATE)
{
WinManager.ConfirmMessage(POS_MESSAGE.ERROR.MSG_0113); // 기존 할인을 취소후 시도하여 주시기 바랍니다.
return;
}
}
}
else if (sMenuKey == PosKey.MENU_KEY.TOTAL_ADDDC_AMT)
{
if (cSaleItem.ETC_DC_AMT > 0)
{
if (cSaleItem.ETC_DC_DIV != ItemConst.PLU_DC_DIV.NORMAL && cSaleItem.ETC_DC_DIV != ItemConst.PLU_DC_DIV.IN_DC_ADDAMT)
{
WinManager.ConfirmMessage(POS_MESSAGE.ERROR.MSG_0113); // 기존 할인을 취소후 시도하여 주시기 바랍니다.
return;
}
}
}
}
// 전체 할인 화면
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_DC_TOTAL, sMenuKey });
if (sRet != UserCom.RST_OK) return;
//IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
//cFormSaleMain.DisplayItem(0, false);
CheckSaleComplete(); // 결제완료 체크
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
#endregion
#region PayDcMstToDc
/// <summary>
/// 결제할인 마스터 참조 할인 처리(카이스트할인, 해피오더사전예약할인)(2017.05.15)
/// </summary>
/// <param name="sMenuKey"></param>
private void PayDcMstToDc(string sMenuKey)
{
string sRet = UserCom.RST_ERR;
try
{
if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return;
if (sMenuKey == PosKey.MENU_KEY.KAIST_DC) // 카이스트 할인
{
if (m_cTrnStatus.Sale.RecvedPayAmt > 0)
{
// 임의 할인 중복 등록 체크(받은금액이 있으면 결제할인 안됨)
WinManager.ConfirmMessage(POS_MESSAGE.ERROR.MSG_0112);
return;
}
}
// OCB 적립 후 불가
ArrayList alEtc = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM);
foreach (Column.TR_ETC.DATA cEtcItem in alEtc)
{
if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue;
if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.OCB_SAVE)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0555);
return;
}
}
// 임의 할인 중복 등록 불가 체크
ArrayList aSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
for (int iRow = 0; iRow < aSaleItem.Count; iRow++)
{
Column.TR_PLU.DATA cSaleItem = (Column.TR_PLU.DATA)aSaleItem[iRow];
if (cSaleItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL || cSaleItem.CANCEL_DIV_MAIN == PosConst.CANCEL_DIV.CANCEL) continue;// 지정취소
if (sMenuKey == PosKey.MENU_KEY.KAIST_DC) //카이스트 할인
{
if (cSaleItem.ITEM_DC_AMT > 0)
{
if (cSaleItem.DC_DIV != ItemConst.PLU_DC_DIV.KAIST_DC) // 카이스트 할인
{
WinManager.ConfirmMessage(POS_MESSAGE.ERROR.MSG_0113); // 기존 할인을 취소후 시도하여 주시기 바랍니다.
return;
}
}
}
else if (sMenuKey == PosKey.MENU_KEY.HPORDER_REVDC) // 해피오더사전예약할인
{
if (cSaleItem.ETC_DC_AMT > 0)
{
if (cSaleItem.ETC_DC_DIV != ItemConst.PLU_DC_DIV.HPORDER_REVDC) // 해피오더사전예약할인
{
WinManager.ConfirmMessage(POS_MESSAGE.ERROR.MSG_0113); // 기존 할인을 취소후 시도하여 주시기 바랍니다.
return;
}
}
}
}
// 카이스트 할인, 해피오더사전예약할인(2017.05.15)
IPaymentUs cPaySvr = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.PAYDCMST_TO_DC);
sRet = cPaySvr.SetPayment(new string[] { sMenuKey });
if (sRet != UserCom.RST_OK) return;
CheckSaleComplete(); // 결제완료 체크
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
#endregion
#region CouponDC
/// <summary>
/// 쿠폰할인 처리
/// </summary>
/// <param name="sMenuKey"></param>
private void CouponDC(string sMenuKey)
{
string sRet = UserCom.RST_ERR;
try
{
if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return;
// OCB 적립 후 불가
ArrayList alEtc = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM);
foreach (Column.TR_ETC.DATA cEtcItem in alEtc)
{
if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue;
if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.OCB_SAVE)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0555);
return;
}
}
if (sMenuKey == PosKey.MENU_KEY.DC_COUPONS)
{
// 쿠폰할인 화면
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_DC_COUPON, sMenuKey });
}
else if (sMenuKey == PosKey.MENU_KEY.PAY_INSTOR_DC)
{
// 입점매장직원할인 화면
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_INSTOR_DC, sMenuKey });
}
else if (sMenuKey == PosKey.MENU_KEY.PAY_INSTOR_PAY)
{
// 기타결제 화면
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_INSTOR_PAY, sMenuKey });
}
if (sRet != UserCom.RST_OK) return;
CheckSaleComplete(); // 결제완료 체크
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
#endregion
#region iNStorDC
/// <summary>
/// 입점매장직원할인 처리
/// </summary>
/// <param name="sMenuKey"></param>
private void iNStorDC(string sMenuKey)
{
string sRet = UserCom.RST_ERR;
try
{
if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return;
// OCB 적립 후 불가
ArrayList alEtc = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM);
foreach (Column.TR_ETC.DATA cEtcItem in alEtc)
{
if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue;
if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.OCB_SAVE)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0555);
return;
}
}
if (sMenuKey == PosKey.MENU_KEY.PAY_INSTOR_DC || sMenuKey == PosKey.MENU_KEY.PAY_INSTOR_DC_5)
{
// 입점매장직원할인 화면
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_INSTOR_DC, sMenuKey });
}
else if (sMenuKey == PosKey.MENU_KEY.PAY_INSTOR_PAY)
{
// 기타결제
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_INSTOR_PAY, sMenuKey });
}
if (sRet != UserCom.RST_OK) return;
CheckSaleComplete(); // 결제완료 체크
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
#endregion
#region CakeChange
/// <summary>
/// 케익교환권 할인 처리
/// </summary>
/// <param name="sMenuKey"></param>
private void CakeChange(string sMenuKey)
{
string sRet = UserCom.RST_ERR;
try
{
if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return;
// 케익교환권 할인 화면
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_DC_CAKE_VOUCHERS, sMenuKey });
if (sRet != UserCom.RST_OK) return;
CheckSaleComplete(); // 결제완료 체크
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
#endregion
#region SeveranceDC
/// <summary>
/// 세브란스병원 임직원 할인 처리
/// </summary>
/// <param name="sMenuKey"></param>
private void SeveranceDC(string sMenuKey)
{
string sRet = UserCom.RST_ERR;
try
{
if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return;
// OCB 적립 후 불가
ArrayList alEtc = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM);
foreach (Column.TR_ETC.DATA cEtcItem in alEtc)
{
if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue;
if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.OCB_SAVE)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0555);
return;
}
}
if (sMenuKey == PosKey.MENU_KEY.SEVERANCE_PAYMENTS)
{
// 세브란스병원 임직원 결제 화면
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_SEVERANCE, sMenuKey });
}
else if (sMenuKey == PosKey.MENU_KEY.SEVERANCE_DC)
{
// 세브란스병원 임직원 할인 화면
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_SEVERANCE_DC, sMenuKey });
}
if (sRet != UserCom.RST_OK) return;
CheckSaleComplete(); // 결제완료 체크
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
#endregion
#region PayPointMemberUse OK CashBack/ OIL BANK/ BLUE / RED
/// <summary>
/// OK CashBack/ OIL BANK/ BLUE / RED 포인트 사용
/// </summary>
/// <param name="sMenuKey"></param>
/// <param name="sAppType"></param>
/// <param name="iPaycnt"></param>
private void PayPointMemberUse(string sMenuKey)
{
string sRet = UserCom.RST_ERR;
try
{
if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return;
// OCB 적립 후 불가
ArrayList alEtc = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM);
foreach (Column.TR_ETC.DATA cEtcItem in alEtc)
{
if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue;
if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.OCB_SAVE)
{
if (!sMenuKey.Equals(PosKey.MENU_KEY.OKCASHBACK))
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0555);
return;
}
}
}
if (sMenuKey == PosKey.MENU_KEY.HAPPY_POINT_USE || sMenuKey == PosKey.MENU_KEY.HAPPY_POINT_USE_CHINA)
{
// 해피포인트 사용
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_POINT_HAPPY_POINT_USE, sMenuKey });
}
else
{
// 제휴 포인트 사용
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_POINT_MEMBERS_USE, sMenuKey });
}
if (sRet != UserCom.RST_OK) return;
// 디지털메뉴보드 I/F
//#16569 파스쿠찌 드라이브 스루 기능 개발 요청 start
//기존
//if (m_cPosStatus.Base.DmbIf == "1")
//변경
//if (m_cPosStatus.Base.DmbIf == "1" &&
// PosMstManager.GetPosOption(POS_OPTION.OPT554) != "1")
////#16569 파스쿠찌 드라이브 스루 기능 개발 요청 end
//{
// ArrayList alTrPay = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM);
// Column.TR_PAYMENT.DATA cPayItem = (Column.TR_PAYMENT.DATA)alTrPay[alTrPay.Count - 1];
// if (cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.POINT_ITEM && cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.POINT_USE.HAPPY_POINT)
// {
// // 디지털메뉴보드 I/F
// IDataServiceUs cDigitalMenuBoard = (IDataServiceUs)sManager.InitServiceInstance(ServiceLists.BSV_BASIC.DLL, ServiceLists.BSV_BASIC.DMB_IF);
// // 포인트조회
// cDigitalMenuBoard.Execute(new string[] { ItemConst.DMB_IRT_ID.POINT_INFO // 전문 구분
// , "HPC" // POINT_DIV
// , cPayItem.OCCUR_ENTRY_12 // APP_DIV (Y:HPC APP, N:그 외)
// , "4" // DIV(1:조회, 2:적립, 3:할인, 4:사용 ...)
// , cPayItem.PAY_AMT.ToString() // AMOUNT(포인트사용금액)
// , cPayItem.AMT_ENTRY_01.ToString() // POINT(적립,할인,사용포인트)
// , cPayItem.AMT_ENTRY_05.ToString() // R_POINT(잔여포인트)
// , "" //
// , cPayItem.OCCUR_ENTRY_01 // CARD_NO(마스킹 된 카드 번호)
// , "" // CUST_NAME(고객명)
// , "" }); // CAMPAIGN_INFO
// }
//}
CheckSaleComplete(); // 결제완료 체크
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
#endregion
#region PayAliPay
/// <summary>
/// 알리페이
/// </summary>
/// <param name="sMenuKey"></param>
/// <param name="sAppType"></param>
/// <param name="iPaycnt"></param>
private void PayAliPay(string sMenuKey)
{
string sRet = UserCom.RST_ERR;
try
{
if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return;
// 알리페이
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_ALIPAY, sMenuKey });
if (sRet != UserCom.RST_OK) return;
CheckSaleComplete(); // 결제완료 체크
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
#endregion
#region WeChatPay
/// <summary>
/// 위챗페이
/// </summary>
/// <param name="sMenuKey"></param>
/// <param name="sAppType"></param>
/// <param name="iPaycnt"></param>
private void WeChatPay(string sMenuKey)
{
string sRet = UserCom.RST_ERR;
try
{
if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return;
// 위챗페이
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_WECHATPAY, sMenuKey });
if (sRet != UserCom.RST_OK) return;
CheckSaleComplete(); // 결제완료 체크
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
#endregion
#region #20170911.001, Start, girak.kim
/// <summary>
/// 위챗페이 - 바이롱
/// </summary>
/// <param name="sMenuKey"></param>
/// <param name="sAppType"></param>
/// <param name="iPaycnt"></param>
// girak.kim; 2017.09.11.001
private void WeChatPay_BaiRong(string sMenuKey)
{
string sRet = UserCom.RST_ERR;
try
{
if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return;
// 위챗페이
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_WECHATPAY_BAIRONG, sMenuKey });
if (sRet != UserCom.RST_OK) return;
CheckSaleComplete(); // 결제완료 체크
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
#endregion
#region #20170911.001, Start, girak.kim
/// <summary>
/// 중국 샤오청쉬 기프트카드 - 바이롱
/// </summary>
/// <param name="sMenuKey"></param>
/// <param name="sAppType"></param>
/// <param name="iPaycnt"></param>
// girak.kim; 2017.09.11.001
private void XiaoChengxu_GiftCard(string sMenuKey)
{
string sRet = UserCom.RST_ERR;
try
{
if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return;
// 위챗페이
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_XIAOCHENGXU_GIFTCARD, sMenuKey });
if (sRet != UserCom.RST_OK) return;
CheckSaleComplete(); // 결제완료 체크
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
#endregion
#region SmilePay
/// <summary>
/// 스마일페이
/// </summary>
/// <param name="sMenuKey"></param>
/// <param name="sAppType"></param>
/// <param name="iPaycnt"></param>
private void SmilePay(string sMenuKey)
{
string sRet = UserCom.RST_ERR;
try
{
if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return;
// 스마일페이
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_SMILEPAY, sMenuKey });
if (sRet != UserCom.RST_OK) return;
CheckSaleComplete(); // 결제완료 체크
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
#endregion
#region PayHappyPointCouopn
/// <summary>
/// 해피포인트 쿠폰
/// </summary>
private void PayHappyPointCouopn(string sMenukey, string sSelRow)
{
string sRet = UserCom.RST_ERR;
try
{
if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return;
// OCB 적립 후 불가
ArrayList alEtc = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM);
foreach (Column.TR_ETC.DATA cEtcItem in alEtc)
{
if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue;
if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.OCB_SAVE)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0555);
return;
}
}
// 해피포인트 쿠폰 진행
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_POINT_HPCOUPON, sMenukey, sSelRow });
if (sRet != UserCom.RST_OK) return;
//IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN); // 판매화면
//cFormSaleMain.DisplayItem(1, false); // 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus)
CheckSaleComplete(); // 결제완료 체크
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
#endregion
/// <summary>
/// T 페이
/// </summary>
private void PayTPay()
{
try
{
if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return;
#region (SKT)
// 통신사(SKT) 할인 대상금액
var destAmt = 0.0;
// 받은금액이 있으면 통신사(SKT) 할인불가(통합결제 불가)
if (m_cTrnStatus.Sale.RecvedPayAmt > 0) destAmt = -1;
// 결제할인 마스터의 결제할인 중복 가능 여부 체크, 중복이 불가능 하면, 할인불가 (통합결제 불가)
var payWayCd = m_cDataCommon.GetMenuKeyToPayWayCd(PosKey.MENU_KEY.SKT);
var payDtlCd = m_cDataCommon.GetMenuKeyToPayDtlCd(PosKey.MENU_KEY.SKT);
if (m_cDataCommon.PayDcDuplicationCheck(payWayCd, payDtlCd, false) == false) destAmt = -1;
// SKT 할인 미사용 매장이면(기능키 확인), 할인불가(통합결제 불가)
//DataTable dt = m_cDataCommon.SeletFuncKeyGroup(PosKey.MENU_KEY.PAY_DC_MENU);
DataTable dt = m_cDataCommon.SeletFuncKeyGroup("");
if (dt == null || dt.Rows.Count == 0)
{
destAmt = -1;
}
else
{
DataRow[] dr = dt.Select("FUNC_ID = '" + PosKey.MENU_KEY.SKT + "'");
destAmt = (dr == null || dr.Length == 0) ? -1 : 0;
}
// 통신사 할인 대상 상품 체크
if (destAmt == 0)
{
// 할인대상금액 조회
destAmt = m_cDataService.GetPluTagetAmount(PosKey.MENU_KEY.SKT);
if (destAmt < 0)
{
// 캠페인 중복 불가(캠페인과 통신사 할인 중 선택)
ArrayList aSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
double nCampAmt = 0;
foreach (Column.TR_PLU.DATA cPluItem in aSaleItem)
{
if (cPluItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL || cPluItem.CANCEL_DIV_MAIN == PosConst.CANCEL_DIV.CANCEL) continue; // 지정취소
if (cPluItem.BILLSPR_NO != m_cTrnStatus.Sale.BillSplitNo) continue; // 빌분리번호
nCampAmt = CmUtil.DoubleAdd(nCampAmt, cPluItem.CPI_DC_AMT);
}
string sMessage = string.Format(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0370), m_cPosStatus.Global.NumericTOCurrency(nCampAmt));
if (WinManager.QuestionMessage(sMessage) == false) return;
// 캠페인 취소 처리
ICampaignUs cCampaingMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN);
cCampaingMain.ClearCampaignAmt();
// 상품 합계금액 계산(거래해더)
m_cDataService.UpdatePluAmount();
// 결제등록정보 화면표시
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
cFormSaleMain.DisplayPayment();
// 할인대상금액 재 조회
destAmt = m_cDataService.GetPluTagetAmount(PosKey.MENU_KEY.SKT);
}
}
// OCB 적립 후 SKT 할인 불가
ArrayList alEtc = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM);
foreach (Column.TR_ETC.DATA cEtcItem in alEtc)
{
if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue;
if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.OCB_SAVE)
{
destAmt = 0;
}
}
#endregion
// T 페이
string sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_TPAY, PosKey.MENU_KEY.T_PAY, destAmt.ToString() });
if (sRet != UserCom.RST_OK) return;
CheckSaleComplete(); // 결제완료 체크
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
/// <summary>
/// 현금 결제 처리
/// </summary>
private void PayCash(string sMenuKey, string sInputData)
{
try
{
//#20171227 인천공항 포스연동 start, phj
if (PosMstManager.GetPosOption(POS_OPTION.OPT512) == "1")
{
//WinManager.ConfirmMessage("인천공항 연동POS 입니다. 사용할 수 없습니다.");
WinManager.ConfirmMessage(POS_MESSAGE.ERROR.MSG_0745);
return;
}
//#20171227 인천공항 포스연동 end, phj
string sRet = UserCom.RST_ERR;
// -------------------------------------------------------------------------------------------
// 세브란스 직원식 상품 체크
// -------------------------------------------------------------------------------------------
sRet = SeveranceiTemCheck(sMenuKey);
if (sRet != UserCom.RST_OK) return;
// -------------------------------------------------------------------------------------------
//기존소스
//#20170830 해당 기능키 선택시 돈통 오픈 (현금, 상품권, 수표, 식권, 잔액교환권) start
// 돈통 오픈 처리
//m_cCashDrawer.OpenCashDrawer(); // 돈통 OPEN 처리
//#20170830 해당 기능키 선택시 돈통 오픈 (현금, 상품권, 수표, 식권, 잔액교환권) end
//#2018.01.25.001;미국과 그 외 국가의 경우 현금 결제 시 돈통 열리는 시점이 다르게 처리;girak.kim
if (!m_cPosStatus.Base.CmpCd.ToUpper().Equals(PosConst.POS_COMPANY_CODE.PCUS)) m_cCashDrawer.OpenCashDrawer(); // 돈통 OPEN 처리
// 현금 화면 진행
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_CASH, sMenuKey, sInputData });
if (sRet != UserCom.RST_OK) return;
//#2018.01.25.001;미국의 경우 현금 결제 시 돈통 열리는 시점이 현금 결제 후 돈통 열리게 처리;girak.kim
if (m_cPosStatus.Base.CmpCd.ToUpper().Equals(PosConst.POS_COMPANY_CODE.PCUS)) m_cCashDrawer.OpenCashDrawer(); // 돈통 OPEN 처리
CheckSaleComplete(); // 결제완료 체크
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
//170811 dkshin 돈통 오픈 처리 시점 변경(현금영수증 전)
#region
/// <summary>
/// 거래 완료 돈통 열림 체크
/// </summary>
/// <returns></returns>
private bool FinishTradeOpenDrawer()
{
return FinishTradeOpenDrawer(false);
}
/// <summary>
/// 거래 완료 돈통 열림 체크
/// </summary>
/// <returns></returns>
private bool FinishTradeOpenDrawer(bool bDutchPay)
{
bool bOpenDrawer = false;
try
{
if (m_cPosStatus.Base.TrainingFlag != "1") //연습모드가 아니면...
{
// 판매완료시 돈통열림 설정(0:안열림, 1:현금성거래만, 2:전체열림)
string sOpt = CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT021), "1");
//UserLog.WriteLogFile(UserCom.LOG_DEBUG, UserCom.WARNING_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
// System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", "sOpt : " + sOpt);
if (sOpt == "1") //현금성 거래만
{
ArrayList alPayItem = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM);
foreach (Column.TR_PAYMENT.DATA cPayItem in alPayItem)
{
if (cPayItem.CANCEL_DIV == ItemConst.PAY_CANCEL_DIV.CANCEL) continue;
if (bDutchPay == true) //더치페이 체크
{
if (cPayItem.DutchPayPrtDiv == "1") continue;
}
switch (cPayItem.PAY_WAY_CD)
{
case ItemConst.TR_ITEM_ID.CASH_ITEM: //현금
case ItemConst.TR_ITEM_ID.GIFT_ITEM: //상품권
case ItemConst.TR_ITEM_ID.CHECK_ITEM: //수표
case ItemConst.TR_ITEM_ID.FOREIGNEX_ITEM: //외환
case ItemConst.TR_ITEM_ID.PAYETC_ITEM: //기타(잔액교환권, 식권)
bOpenDrawer = true;
break;
}
if (bOpenDrawer == true) break;
}
}
else if (sOpt == "2") //전체열림
{
bOpenDrawer = true;
}
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return bOpenDrawer;
}
#endregion
/// <summary>
/// 묶음상품/쇼킹박스
/// </summary>
private bool BundleiTem(string sMenuKey)
{
try
{
string sRet = UserCom.RST_ERR;
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_SAL_BUNDLE_ITEM, sMenuKey });
if (sRet != UserCom.RST_OK) return false;
// 판매화면
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
//// 판매모드 변경
//m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING;
//cFormSaleMain.DisplayInit(false, true);
// 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus)
cFormSaleMain.DisplayItem(0, false);
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return true;
}
/// <summary>
/// 더치페이
/// </summary>
/// <param name="sMenuKey"></param>
/// <returns></returns>
public bool DutchPay(string sMenuKey, string ReFlag)
{
try
{
string sRet = UserCom.RST_ERR;
// 영업일자 체크
if (CmUtil.LongParse(m_cPosStatus.Base.SaleDate) < CmUtil.LongParse(System.DateTime.Now.ToString("yyyyMMdd")))
{
if (CmUtil.LongParse(System.DateTime.Now.ToString("HH")) > 5)
{
DutchItemClear();
WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0184));
return false;
}
}
ICampaignUs cCampaignMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN);
//캠페인 초기화
cCampaignMain.ClearCampaignAmt();
m_cDataService.UpdatePluAmount();
sRet = WinSale.ShowForm(new string[] { FormManager.FORM_SAL_DUTCH_PAY, sMenuKey, ReFlag });
if (sRet != UserCom.RST_OK)
{
DutchItemClear();
return false;
}
else
{
m_cPosStatus.Sale.DutchPayFlg = "1";
m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING;
RegisterPayment("", "");
// 판매모드 변경
//m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.PAY_WAIT;
//// 판매화면
//IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
//cFormSaleMain.ChangeSalePayMode(false);
//화면 초기화
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return true;
}
/// <summary>
/// 더치페이중 중지 상품 처리
/// </summary>
private void DutchItemClear()
{
try
{
// 상품 내역 불러오기
ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
if (alPluItem.Count > 0)
{
ICampaignUs cCampaignMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN);
//상품 캠페인 재적용
ICampaignUs m_cCampaingMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN);
cCampaignMain.ExecuteCampaignPluHappyPoint("", true, "", "", "", ""); // 상품 캠페인 계산
m_cDataService.UpdatePluAmount();
// 상품 판매가 재계산
m_cPluService.ItemAmountExeccute(true, true);
// 판매화면
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
// 판매모드 변경
m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING;
cFormSaleMain.DisplayInit(true, true);
// 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus)
cFormSaleMain.DisplayItem(0, false);
}
m_cPosStatus.Sale.DutchPayFlg = "";
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
/// <summary>
/// 더치페이(금액)
/// </summary>
/// <param name="sMenuKey"></param>
/// <returns></returns>
private bool DutchPayAmt(string sMenuKey, string ReFlag)
{
try
{
string sRet = UserCom.RST_ERR;
if (m_cPosStatus.Sale.DutchPayFlg == "2")
{
if (WinManager.QuestionMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0295)) == true)
{
m_cPosStatus.Sale.DutchPayFlg = "";
m_cTrnStatus.Head.AmtDutchPayYn = "";
}
return true;
}
m_cTrnStatus.Head.AmtDutchPayYn = "1";
m_cPosStatus.Sale.DutchPayFlg = "2";
RegisterPayment("", "");
//if (ReFlag == "0")
//{
// m_cTrnStatus.Sale.DutchPayTotAmt = m_cTrnStatus.Head.NetSaleAmt;
//}
//sRet = WinSale.ShowForm(new string[] { FormManager.FORM_SAL_DUTCH_PAY_AMT, sMenuKey, ReFlag });
//if (sRet == UserCom.ERROR) return false;
//m_cPosStatus.Sale.DutchPayFlg = "2";
//m_cTrnStatus.Sale.BillSplitNo = m_cTrnStatus.Sale.BillSplitNo + 1; //빌분리번호
//// 총수량, 총매출액
//m_cTrnStatus.Head.TotSaleAmt=m_cDataService.DoubleParse(sRet);
//// 총 할인 금액
//m_cTrnStatus.Head.TotDcAmt=0;
//// 받은금액 표시
//m_cTrnStatus.Sale.RecvedPayAmt=0;
//// 순매출액 표시 처리
//m_cTrnStatus.Sale.RemainPayAmt = m_cDataService.DoubleParse(sRet);
//// 넷 세일
//m_cTrnStatus.Head.NetSaleAmt = m_cDataService.DoubleParse(sRet);
//// 판매모드 변경
//m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.PAY_WAIT;
//// 판매화면
//IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
//cFormSaleMain.ChangeSalePayMode(false);
////화면 초기화
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return true;
}
/// <summary>
/// 수표 조회/결제 처리
/// </summary>
private void PayCheck(string sMenuKey)
{
//#20171227 인천공항 포스연동 start, phj
if (PosMstManager.GetPosOption(POS_OPTION.OPT512) == "1")
{
//WinManager.ConfirmMessage("인천공항 연동POS 입니다. 사용할 수 없습니다.");
WinManager.ConfirmMessage(POS_MESSAGE.ERROR.MSG_0745);
return;
}
//#20171227 인천공항 포스연동 end, phj
try
{
string sRet = UserCom.RST_ERR;
// 수표 화면 진행
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_CHECK, sMenuKey });
if (sRet != UserCom.RST_OK) return;
CheckSaleComplete(); // 결제완료 체크
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
/// <summary>
/// 상품권 조회
/// </summary>
private void PayGiftSearch(string sMenuKey)
{
try
{
string sRet = UserCom.RST_ERR;
// 화면 진행
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_GIFT_SCH, sMenuKey });
if (sRet != UserCom.RST_OK) return;
CheckSaleComplete(); // 결제완료 체크
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
/// <summary>
/// 모바일쿠폰 조회
/// </summary>
private void PayMobileCouponSearch(string sMenuKey)
{
try
{
string sRet = UserCom.RST_ERR;
// 화면 진행
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_MOBILE_COUPON_SCH, sMenuKey });
if (sRet != UserCom.RST_OK) return;
CheckSaleComplete(); // 결제완료 체크
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
//#20170926 일반할인 존재하고 모바일 쿠폰 사용 시 팝업 오픈 start
private bool DC_Check(ref bool pPopup)
{
bool bValue = false;
pPopup = false;
try
{
ArrayList aSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
for (int iRow = 0; iRow < aSaleItem.Count; iRow++)
{
Column.TR_PLU.DATA cSaleItem = (Column.TR_PLU.DATA)aSaleItem[iRow];
if (cSaleItem.CANCEL_DIV != "0") continue;
//if (cSaleItem.DC_DIV != ItemConst.PLU_DC_DIV.NORMAL) continue;// POS 할인 구분
//if (cSaleItem.DC_TYPE != ItemConst.PLU_DC_TYPE.NORMAL) continue;// 할인 유형(0:없음, 1:소계, 2:상품)
//if (cSaleItem.DC_RATE != ItemConst.PLU_DC_DIV.NORMAL) continue;// POS 할인 율
//if (cSaleItem.ITEM_DC_AMT != ItemConst.PLU_DC_DIV.NORMAL) continue;// POS 단품 할인 금액
/*
if ((cSaleItem.DC_RATE > 0) || (cSaleItem.ITEM_DC_AMT > 0) || (cSaleItem.SUM_DC_AMT >= 0))
{
pPopup = true;
}
if (cSaleItem.DC_DIV == ItemConst.PLU_DC_DIV.NORMAL) continue;// POS 할인 구분
if (cSaleItem.DC_DIV == ItemConst.PLU_DC_DIV.POS_DC) continue;// 임의할인
if (cSaleItem.DC_DIV == ItemConst.PLU_DC_DIV.IN_DC_TOTAMT) continue; // 전체금액할인
if (cSaleItem.DC_DIV == ItemConst.PLU_DC_DIV.IN_DC_TOTRATE) continue;// 전체%할인
*/
if ((cSaleItem.DC_DIV == ItemConst.PLU_DC_DIV.NORMAL) || (cSaleItem.DC_DIV == ItemConst.PLU_DC_DIV.POS_DC) ||
(cSaleItem.DC_DIV == ItemConst.PLU_DC_DIV.IN_DC_TOTAMT) || (cSaleItem.DC_DIV == ItemConst.PLU_DC_DIV.IN_DC_TOTRATE))
{
if ((cSaleItem.DC_RATE > 0) || (cSaleItem.ITEM_DC_AMT > 0) || (cSaleItem.SUM_DC_AMT > 0))
{
pPopup = true;
}
continue;
}
bValue = true;
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
bValue = false;
}
return bValue;
}
//#20170926 일반할인 존재하고 모바일 쿠폰 사용 시 팝업 오픈 end
/// <summary>
/// 모바일쿠폰/결제 처리
/// </summary>
private void PayMobileCoupon(string sMenuKey)
{
try
{
string sRet = UserCom.RST_ERR;
if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return;
//#20170926 일반할인 존재하고 모바일 쿠폰 사용 시 팝업 오픈 start
//할인 존재 시 모바일 쿠폰 사용 못함. (일반할인제외)
bool bPopup = false;
if (DC_Check(ref bPopup) == true) return;
//일반할인 (%할인, 금액 할인) 존재 시 아래 팝업 오픈.
if (bPopup == true)
{
if (WinManager.QuestionMessage(POS_MESSAGE.ERROR.MSG_0737) != true) return;
}
//#20170926 일반할인 존재하고 모바일 쿠폰 사용 시 팝업 오픈 end
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_MOBILE_COUPON, sMenuKey });
if (sRet != UserCom.RST_OK) return;
CheckSaleComplete(); // 결제완료 체크
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
/// <summary>
/// 아워홈
/// </summary>
private void PayOurHome(string sMenuKey)
{
try
{
string sRet = UserCom.RST_ERR;
if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return;
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_OURHOME, sMenuKey });
if (sRet != UserCom.RST_OK) return;
CheckSaleComplete(); // 결제완료 체크
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
/// <summary>
/// 해피 기프트
/// </summary>
private void PayHappyGift(string sMenuKey)
{
try
{
string sRet = UserCom.RST_ERR;
if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return;
if (sMenuKey == PosKey.MENU_KEY.HP_GIFT_CHARGED)
// 충전
{
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_SAL_HP_GIFT_CHARGED, sMenuKey, "" });
}
else if (sMenuKey == PosKey.MENU_KEY.HAPPY_GIFTCARD)
{
// 사용
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_HAPPY_GIFTCARD, sMenuKey, "" });
}
if (sRet != UserCom.RST_OK) return;
CheckSaleComplete(); // 결제완료 체크
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
/// <summary>
/// 잔액교환권
/// </summary>
private void PayExchangeTicket(string sMenuKey)
{
try
{
string sRet = UserCom.RST_ERR;
if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return;
//기존 소스
//#20170830 해당 기능키 선택시 돈통 오픈 (현금, 상품권, 수표, 식권, 잔액교환권) start
// 돈통 오픈 처리
//m_cCashDrawer.OpenCashDrawer(); // 돈통 OPEN 처리
//#20170830 해당 기능키 선택시 돈통 오픈 (현금, 상품권, 수표, 식권, 잔액교환권) end
//#2018.01.25.001;미국과 그 외 국가의 경우 현금 결제 시 돈통 열리는 시점이 다르게 처리;girak.kim
if (!m_cPosStatus.Base.CmpCd.ToUpper().Equals(PosConst.POS_COMPANY_CODE.PCUS)) m_cCashDrawer.OpenCashDrawer(); // 돈통 OPEN 처리
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_BALANCE_VOUCHER, sMenuKey });
if (sRet != UserCom.RST_OK) return;
//#2018.01.25.001;미국의 경우 현금 결제 시 돈통 열리는 시점이 현금 결제 후 돈통 열리게 처리;girak.kim
if (m_cPosStatus.Base.CmpCd.ToUpper().Equals(PosConst.POS_COMPANY_CODE.PCUS)) m_cCashDrawer.OpenCashDrawer(); // 돈통 OPEN 처리
CheckSaleComplete(); // 결제완료 체크
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
/// <summary>
/// 외상
/// </summary>
private void PaySaleOnCustomer(string sMenuKey)
{
try
{
string sRet = UserCom.RST_ERR;
if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return;
//#20171016 스퀘어 점포일 때 실점포 코드로 넘기기 start, phj
//판매 제품이 서로 다른 브랜드 일 때, 선불결제 못함.
if (m_cPosStatus.Mst.ComplexShopType == "2") // 0:단독매장,1:복합매장구성점포,2:복합매장점포
{
if (OtherItem_DuplicateCheck() == false) return;
}
//#20171016 스퀘어 점포일 때 실점포 코드로 넘기기 end, phj
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_CREDIT_CUSTOMER, sMenuKey });
if (sRet != UserCom.RST_OK) return;
CheckSaleComplete(); // 결제완료 체크
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
/// <summary>
/// 외화
/// </summary>
private void PayForeign(string sMenuKey)
{
//#20171227 인천공항 포스연동 start, phj
if (PosMstManager.GetPosOption(POS_OPTION.OPT512) == "1")
{
//WinManager.ConfirmMessage("인천공항 연동POS 입니다. 사용할 수 없습니다.");
WinManager.ConfirmMessage(POS_MESSAGE.ERROR.MSG_0745);
return;
}
//#20171227 인천공항 포스연동 end, phj
try
{
string sRet = UserCom.RST_ERR;
if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return;
// 사용여부 체크!
if (CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT305), "0") == "0")
{
WinManager.ErrorMessage(string.Format("{0}({1})", MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0414), POS_OPTION.OPT305));
return;
}
//기존소스
//#20170830 해당 기능키 선택시 돈통 오픈 (현금, 상품권, 수표, 식권, 잔액교환권) start
// 돈통 오픈 처리
//m_cCashDrawer.OpenCashDrawer(); // 돈통 OPEN 처리
//#20170830 해당 기능키 선택시 돈통 오픈 (현금, 상품권, 수표, 식권, 잔액교환권) end
//#2018.01.25.001;미국과 그 외 국가의 경우 현금 결제 시 돈통 열리는 시점이 다르게 처리;girak.kim
if (!m_cPosStatus.Base.CmpCd.ToUpper().Equals(PosConst.POS_COMPANY_CODE.PCUS)) m_cCashDrawer.OpenCashDrawer(); // 돈통 OPEN 처리
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_FOREIGN_CURRENCY, sMenuKey });
if (sRet != UserCom.RST_OK) return;
//#2018.01.25.001;미국의 경우 현금 결제 시 돈통 열리는 시점이 현금 결제 후 돈통 열리게 처리;girak.kim
if (m_cPosStatus.Base.CmpCd.ToUpper().Equals(PosConst.POS_COMPANY_CODE.PCUS)) m_cCashDrawer.OpenCashDrawer(); // 돈통 OPEN 처리
CheckSaleComplete(); // 결제완료 체크
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
/// <summary>
/// 티머니/캐시비
/// </summary>
private void PayTMoneyCashBee(string[] aPara)
{
try
{
string sRet = UserCom.RST_ERR;
if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return;
sRet = WinPay.ShowForm(aPara);
if (sRet != UserCom.RST_OK) return;
CheckSaleComplete(); // 결제완료 체크
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
/// <summary>
/// 선불카드
/// </summary>
private void PayPrepaidCard(string sMenuKey)
{
try
{
string sRet = UserCom.RST_ERR;
//#20171016 스퀘어 점포일 때 실점포 코드로 넘기기 start, phj
//판매 제품이 서로 다른 브랜드 일 때, 선불결제 못함.
if (m_cPosStatus.Mst.ComplexShopType == "2") // 0:단독매장,1:복합매장구성점포,2:복합매장점포
{
if (OtherItem_DuplicateCheck() == false) return;
}
//#20171016 스퀘어 점포일 때 실점포 코드로 넘기기 end, phj
if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return;
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_PREPAID_CARDS, sMenuKey });
if (sRet != UserCom.RST_OK) return;
CheckSaleComplete(); // 결제완료 체크
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
/// <summary>
/// 선불카드 - 중국
/// </summary>
private void PayPrepaidCard_China(string sMenuKey)
{
try
{
string sRet = UserCom.RST_ERR;
if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return;
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_HPJOY, sMenuKey });
if (sRet != UserCom.RST_OK) return;
CheckSaleComplete(); // 결제완료 체크
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
/// <summary>
/// 삼성포인트
/// </summary>
private void PaySamSungPoint(string sMenuKey)
{
try
{
string sRet = UserCom.RST_ERR;
if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return;
// 캠페인 중복 불가(2017.06.05) => 캠페인 적용시 제휴포인트 사용 업무 불가 처리 요청
ArrayList aSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
foreach (Column.TR_PLU.DATA cPluItem in aSaleItem)
{
if (cPluItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL || cPluItem.CANCEL_DIV_MAIN == PosConst.CANCEL_DIV.CANCEL) continue; // 지정취소
if (cPluItem.BILLSPR_NO != m_cTrnStatus.Sale.BillSplitNo) continue; // 빌분리번호
if (cPluItem.CPI_DC_AMT > 0)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0192);
return;
}
}
//#16745 신용카드 포인트 결제 시 해피포인트 취소되는 현상 확인요청 start
//신한포인트는 통신사 할인과 중복 가능 하도록 수정
//기존
#region
/*
// 통신사 제휴 할인 불가(2017.08.28)
ArrayList aPayItem = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM);
foreach (Column.TR_PAYMENT.DATA cPayItem in aPayItem)
{
if (cPayItem.CANCEL_DIV != PosConst.CANCEL_DIV.NORMAL) continue;
if (cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.MOBILE_COM_POINT &&
(cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.MOBILE_COM.MOBILE_SKT ||
cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.MOBILE_COM.MOBILE_KTF ||
cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.MOBILE_COM.MOBILE_LGT ||
cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.MOBILE_COM.MOBILE_KT_DOUBLE ||
//#20180413 웰컴카드 신규기능 추가 start,phj
cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.MOBILE_COM.WELCOMECARD ||
//#20180413 웰컴카드 신규기능 추가 end,phj
cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.MOBILE_COM.MOBILE_KT_VIP))
{
// 이미할인이 등록되어 있습니다.
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0669);
return;
}
}
*/
#endregion
//변경
#region
// 통신사 제휴 할인 불가(2017.08.28)
if (sMenuKey != PosKey.MENU_KEY.SHINHANCARD_POINT)
{
ArrayList aPayItem = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM);
foreach (Column.TR_PAYMENT.DATA cPayItem in aPayItem)
{
if (cPayItem.CANCEL_DIV != PosConst.CANCEL_DIV.NORMAL) continue;
if (cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.MOBILE_COM_POINT &&
(cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.MOBILE_COM.MOBILE_SKT ||
cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.MOBILE_COM.MOBILE_KTF ||
cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.MOBILE_COM.MOBILE_LGT ||
cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.MOBILE_COM.MOBILE_KT_DOUBLE ||
//#20180413 웰컴카드 신규기능 추가 start,phj
cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.MOBILE_COM.WELCOMECARD ||
//#20180413 웰컴카드 신규기능 추가 end,phj
cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.MOBILE_COM.MOBILE_KT_VIP))
{
// 이미할인이 등록되어 있습니다.
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0669);
return;
}
}
}
#endregion
//#16745 신용카드 포인트 결제 시 해피포인트 취소되는 현상 확인요청 end
//#14505 PB 신월곰달래 - 해피포인트 등록 후 현대M포인트 진입안되도록 수정요청 start,phj
//카드 포인트 사용창 진입시 해피포인트 등록이 된 상태이면 안내 메세지 팝업 (예, 아니오)
bool bHPCheck = false;
ArrayList alEtcItem = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM);
foreach (Column.TR_ETC.DATA cEtcItem in alEtcItem)
{
if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue;
if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.SAVEPOINT)
{
bHPCheck = true;
break;
}
}
//#16745 신용카드 포인트 결제 시 해피포인트 취소되는 현상 확인요청 start
//신한포인트는 해피포인트 적립과 중복 가능 하도록 수정
if (sMenuKey == PosKey.MENU_KEY.SHINHANCARD_POINT)
{
bHPCheck = false;
}
//#16745 신용카드 포인트 결제 시 해피포인트 취소되는 현상 확인요청 end
if (bHPCheck == true)
{
//#20180410 메세지 오류 수정 start,phj
//기존
//if (WinManager.QuestionMessage(POS_MESSAGE.GUIDE.MSG_0014) == false)
//변경
if (WinManager.QuestionMessage(MessageManager.GetGuideMessage(POS_MESSAGE.GUIDE.MSG_0014)) == false)
//#20180410 메세지 오류 수정 end,phj
{
return;
}
}
//#14505 PB 신월곰달래 - 해피포인트 등록 후 현대M포인트 진입안되도록 수정요청 end,phj
if (sMenuKey == PosKey.MENU_KEY.SAMSUNG_POINTS)
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_SAMSUNG_POINT, sMenuKey });
else if (sMenuKey == PosKey.MENU_KEY.WOORIMORE_POINTS)
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_WOORIMORE_POINT, sMenuKey });
else if (sMenuKey == PosKey.MENU_KEY.HYUNDAI_M_POINTS)
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_HYUNDAI_M_POINT, sMenuKey });
//*** MoonSeokWoo 2017.12.12 Add
else if (sMenuKey == PosKey.MENU_KEY.SHINHANCARD_POINT)
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_SINHANCARD_POINT, sMenuKey });
//*** MoonSeokWoo 2017.12.12 End
if (sRet != UserCom.RST_OK) return;
CheckSaleComplete(); // 결제완료 체크
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
/// <summary>
/// 신용카드 결제 처리
/// </summary>
private void PayCreditCard(string sMenuKey, string sInputData)
{
//#20171227 인천공항 포스연동 start, phj
if (PosMstManager.GetPosOption(POS_OPTION.OPT512) == "1")
{
//WinManager.ConfirmMessage("인천공항 연동POS 입니다. 사용할 수 없습니다.");
WinManager.ConfirmMessage(POS_MESSAGE.ERROR.MSG_0745);
return;
}
//#20171227 인천공항 포스연동 end, phj
try
{
string sRet = UserCom.RST_ERR;
// -------------------------------------------------------------------------------------------
// 세브란스 직원식 상품 체크
// -------------------------------------------------------------------------------------------
sRet = SeveranceiTemCheck(sMenuKey);
if (sRet != UserCom.RST_OK) return;
// -------------------------------------------------------------------------------------------
// 신용카드 화면 진행
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_CREDITCARD, sMenuKey, "", "", sInputData });
if (sRet != UserCom.RST_OK) return;
CheckSaleComplete(); // 결제완료 체크
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
/// <summary>
/// 현금 영수증 발행
/// </summary>
private bool PayCashbill(string sMenukey)
{
double dCashBillAmt = 0;
string sRet = UserCom.RST_ERR;
//#20171227 인천공항 포스연동 start, phj
if (PosMstManager.GetPosOption(POS_OPTION.OPT512) == "1")
{
//WinManager.ConfirmMessage(POS_MESSAGE.ERROR.MSG_0745);
return true;
}
//#20171227 인천공항 포스연동 end, phj
try
{
if (m_cPosStatus.Mst.CntryDiv != ItemConst.CNTRY_DIV.KR) return true; // 한국에서만 가능(2017.05.26)
if (PosMstManager.GetPosOption(POS_OPTION.OPT315) == "0") return true; // 현금영수증 업무 사용 여부(0:사용안함, 1:사용함)
if (sMenukey == PosKey.MENU_KEY.CASH_APPROVAL)
{
//반품일경우
if (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.REFUND) return true;
////일반판매, 예약완료가 아닐 경우
//if ((m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE || m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.UNDECIDED.RESERVATION_COMPLETE) != true) return;
dCashBillAmt = m_cDataService.GetCashAmt();
if (dCashBillAmt > 0)
{
//부가세 계산
double dTax = m_cDataService.GetPaymentAmtVAT(dCashBillAmt);
// 현금 화면 진행
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_CASH_APPROVAL, sMenukey, dCashBillAmt.ToString(), dTax.ToString() });
if (sRet != UserCom.RST_OK) return false;
}
}
else
{
// 수동 승인(거래후 현금수증)
// 거래구분 설정 => 거래후
m_cTrnStatus.Head.TradeDiv = ItemConst.TRAN_DIV.NORMAL;
m_cTrnStatus.Head.TradeKind = ItemConst.TRAN_KIND.AFTER.CASH_RECEIPT;
// 원거래 정보 설정
m_cTrnStatus.Head.OrgSaleDate = "";
m_cTrnStatus.Head.OrgPosNo = "";
m_cTrnStatus.Head.OrgTradeNo = "";
// 현금 화면 진행
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_CASH_APPROVAL, sMenukey, "0", "0" });
if (sRet == UserCom.RST_OK)
{
// 거래 완료 처리
sRet = m_cSaleComplete.PosSaleExecute(new string[] { });
}
////사용변수 초기화
m_cDataService.TranComplete();
m_cTrnStatus.Head.TradeDiv = ItemConst.TRAN_DIV.NORMAL;
m_cTrnStatus.Head.TradeKind = ItemConst.TRAN_KIND.NORMAL.SALE;
}
return true;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return false;
}
/// <summary>
/// 삼성카드 제휴할인
/// </summary>
private void PaySamsungFamilyCard(string sMenuKey)
{
try
{
string sRet = UserCom.RST_ERR;
ArrayList aPayItem = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM);
foreach (Column.TR_PAYMENT.DATA cPayItem in aPayItem)
{
if (cPayItem.CANCEL_DIV != PosConst.CANCEL_DIV.NORMAL) continue;
if (cPayItem.PAY_WAY_CD == ItemConst.TR_ITEM_ID.EMP_DC_ITEM && cPayItem.PAY_DTL_CD_01 == ItemConst.TR_ITEM_ID.EMP_DC.SAMSUNGCARD)
{
// 이미할인이 등록되어 있습니다.
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0669);
return;
}
}
if (m_cDataCommon.PayDcDuplicationCheck(ItemConst.TR_ITEM_ID.EMP_DC_ITEM, ItemConst.TR_ITEM_ID.EMP_DC.SAMSUNGCARD, true) == false) return;
// 신용카드 화면 진행
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_SAMSUNG_SFC, sMenuKey });
if (sRet == UserCom.ERROR) return;
//승인 요청 처리
CheckSaleComplete(); // 결제완료 체크
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
/// <summary>
/// 식권 처리
/// </summary>
private void PayMealTicket(string sMenuKey)
{
try
{
string sRet = UserCom.RST_ERR;
if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return;
//기존 소스
//#20170830 해당 기능키 선택시 돈통 오픈 (현금, 상품권, 수표, 식권, 잔액교환권) start
// 돈통 오픈 처리
//m_cCashDrawer.OpenCashDrawer(); // 돈통 OPEN 처리
//#20170830 해당 기능키 선택시 돈통 오픈 (현금, 상품권, 수표, 식권, 잔액교환권) end
//#2018.01.25.001;미국과 그 외 국가의 경우 현금 결제 시 돈통 열리는 시점이 다르게 처리;girak.kim
if (!m_cPosStatus.Base.CmpCd.ToUpper().Equals(PosConst.POS_COMPANY_CODE.PCUS)) m_cCashDrawer.OpenCashDrawer(); // 돈통 OPEN 처리
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_MEAL_TICKET, sMenuKey });
if (sRet != UserCom.RST_OK) return;
//#2018.01.25.001;미국의 경우 현금 결제 시 돈통 열리는 시점이 현금 결제 후 돈통 열리게 처리;girak.kim
if (m_cPosStatus.Base.CmpCd.ToUpper().Equals(PosConst.POS_COMPANY_CODE.PCUS)) m_cCashDrawer.OpenCashDrawer(); // 돈통 OPEN 처리
CheckSaleComplete(); // 결제완료 체크
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
/// <summary>
/// 상품권 처리
/// </summary>
private void PayGift(string sMenuKey)
{
try
{
string sRet = UserCom.RST_ERR;
if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return;
//기존소스
//#20170830 해당 기능키 선택시 돈통 오픈 (현금, 상품권, 수표, 식권, 잔액교환권) start
// 돈통 오픈 처리
//m_cCashDrawer.OpenCashDrawer(); // 돈통 OPEN 처리
//#20170830 해당 기능키 선택시 돈통 오픈 (현금, 상품권, 수표, 식권, 잔액교환권) end
//#2018.01.25.001;미국과 그 외 국가의 경우 현금 결제 시 돈통 열리는 시점이 다르게 처리;girak.kim
if (!m_cPosStatus.Base.CmpCd.ToUpper().Equals(PosConst.POS_COMPANY_CODE.PCUS)) m_cCashDrawer.OpenCashDrawer(); // 돈통 OPEN 처리
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_GIFT, sMenuKey });
if (sRet != UserCom.RST_OK) return;
//#2018.01.25.001;미국의 경우 현금 결제 시 돈통 열리는 시점이 현금 결제 후 돈통 열리게 처리;girak.kim
if (m_cPosStatus.Base.CmpCd.ToUpper().Equals(PosConst.POS_COMPANY_CODE.PCUS)) m_cCashDrawer.OpenCashDrawer(); // 돈통 OPEN 처리
CheckSaleComplete(); // 결제완료 체크
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
//#20180202 인천공항 VIP 라운지 기능미사용으로 주석처리 start,phj
/*
// grayber@20180115 인천공항 VIP 라운지 start - VIP 라운지 폼 실행
/// <summary>
/// 인천공항 VIP 라인지 처리
/// </summary>
/// <param name="sMenuKey"></param>
/// <param name="sInputData"></param>
/// <returns></returns>
private string PayInCheonVipLounge(string sMenuKey, string sInputData)
{
string sRet = UserCom.RST_ERR;
try
{
// grayber@20180116 VIP 라운지 옵션 처리 부분 제거 및 돈통 오픈 주석 처리 start
//#20170830 해당 기능키 선택시 돈통 오픈 (현금, 상품권, 수표, 식권, 잔액교환권) start
// 돈통 오픈 처리
//m_cCashDrawer.OpenCashDrawer(); // 돈통 OPEN 처리
//#20170830 해당 기능키 선택시 돈통 오픈 (현금, 상품권, 수표, 식권, 잔액교환권) end
// grayber@20180116 VIP 라운지 옵션 처리 부분 제거 및 돈통 오픈 주석 처리 end
// 현금 화면 진행
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_AIRPORT_VIP_LOUNGE, sMenuKey, sInputData });
if (sRet != UserCom.RST_OK) return UserCom.RST_ERR;
CheckSaleComplete(); // 결제완료 체크
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return sRet;
}
// grayber@20180115 인천공항 VIP 라운지 end
*/
//#20180202 인천공항 VIP 라운지 기능미사용으로 주석처리 end,phj
//grayber@20180208 코레일 마일리지 입력 start - 폼 실행 추가
private string PayKorailMileage(string sMenuKey, string sInputData)
{
string sRet = UserCom.RST_ERR;
try
{
// 코레일 마일리지 입력 화면 진행
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_KORAIL_MILEAGE, sMenuKey, sInputData });
if (sRet != UserCom.RST_OK) return UserCom.RST_ERR;
CheckSaleComplete(); // 결제완료 체크
}
catch(Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return sRet;
}
//grayber@20180208 코레일 마일리지 입력 end
// <summary>
/// 결제 완료 체크
/// </summary>
public string CheckSaleComplete()
{
string sRet = UserCom.RST_ERR;
try
{
// 적립 예정 포인트 계산
ArrayList alEtcItem = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM);
foreach (Column.TR_ETC.DATA cEtcItem in alEtcItem)
{
#region
if (cEtcItem.CANCEL_DIV == ItemConst.PAY_CANCEL_DIV.CANCEL) continue;
if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.SAVEPOINT)
{
// 해피포인트 기본적립 대상 금액 획득
m_cTrnStatus.Head.AftSavePoint = cEtcItem.AMT_ENTRY_08 = m_cDataService.GetPluTagetAmount(PosKey.MENU_KEY.HAPPY_POINT);
// 캠페인(해피포인트 적립) 설정 처리
ICampaignUs cCampaingMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN);
cCampaingMain.ExecuteCampaignHappyPointSave(PosConst.CAMPAIGN_PAY_KEY.HP_SAVE, null);
// 적립예정포인트
cEtcItem.ETC_AMT = (long)CmUtil.MathRounds(CmUtil.MathAmtPercent(cEtcItem.AMT_ENTRY_08, m_cPosStatus.Mst.HpyPntAccumRate), PosConst.MATH_ROUND.CEILING, 0);
//cEtcItem.ETC_AMT = m_cDataCommon.ExecTermCoopCmpPayDc(cEtcItem.ETC_WAY_CD, cEtcItem.ETC_DTL_CD_01, "", cEtcItem.AMT_ENTRY_08); // 적립예정 포인트
if (m_cTrnStatus.Head.AftSaveAddInfo != "")
{
if (m_cTrnStatus.Head.AftSaveAddInfo.Substring(25).StartsWith("N") == true) cEtcItem.ETC_AMT = 0;
}
}
// 해피포인트 예상적립 포인트 계산 중국 추가(2017.06.23)
else if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.POINT_SAVE_CHINA)
{
// 해피포인트 기본적립 대상 금액 획득
m_cTrnStatus.Head.AftSavePoint = cEtcItem.AMT_ENTRY_08 = m_cDataService.GetPluTagetAmount(PosKey.MENU_KEY.HAPPY_POINT_SAVE_CHINA);
// 캠페인(해피포인트 적립) 설정 처리
ICampaignUs cCampaingMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN);
cCampaingMain.ExecuteCampaignHappyPointSave(PosConst.CAMPAIGN_PAY_KEY.HP_SAVE, null);
// 적립예정포인트
cEtcItem.ETC_AMT = CmUtil.MathRounds(CmUtil.MathAmtPercent(cEtcItem.AMT_ENTRY_08, m_cPosStatus.Mst.HpyPntAccumRate), PosConst.MATH_ROUND.CEILING, 2);
if (m_cTrnStatus.Head.AftSaveAddInfo != "")
{
if (m_cTrnStatus.Head.AftSaveAddInfo.Substring(25).StartsWith("N") == true) cEtcItem.ETC_AMT = 0;
}
}
#endregion
}
// 판매화면
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
cFormSaleMain.DisplayItem(1, false); // 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus)
cFormSaleMain.DisplayPayment(); // 결제등록정보 화면표시
//더치페이 금액 체크!
if (m_cPosStatus.Sale.DutchPayFlg == "2")
{
// 결제 금액 계산 처리
ArrayList alPayment = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM);
if (alPayment.Count > 0)
{
int iRow = alPayment.Count - 1;
Column.TR_PAYMENT.DATA cPayItem = (Column.TR_PAYMENT.DATA)alPayment[iRow];
if (cPayItem.CANCEL_DIV == PosConst.CANCEL_DIV.NORMAL && cPayItem.PAY_DTL_CD_05 == PosConst.PAY_DC_TYPE.PAY)
m_cSaleComplete.DutchPayReceiptPrint(new string[] { "" }); //금액 더치페이 영수증 출력! - 결제일 경우!
}
}
sRet = UserCom.RST_OK;
// 결제 완료 체크
//#Rhee, 20171222 결제금액이 0원이고 미국 예약등록이면 0원으로도 결제가능하게 추가 start
// 기존
//if (m_cTrnStatus.Sale.RemainPayAmt == 0)
// 변경
if ((m_cTrnStatus.Sale.RemainPayAmt == 0) || ((m_cTrnStatus.Sale.RemainPayAmt > 0) &&
(m_cPosStatus.Base.CmpCd.Equals("PCUS") && m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.UNDECIDED.RESERVATION_REG)))
//#Rhee, 20171222 결제금액이 0원이고 미국 예약등록이면 0원으로도 결제가능하게 추가 end
{
//#20171227 인천공항 포스연동 start, phj
if (PosMstManager.GetPosOption(POS_OPTION.OPT512) == "1")
{
sRet = IncheonAireportPayClose(PosKey.MENU_KEY.INCHEON_AIRPORT);
if (sRet == UserCom.RST_ERR) return sRet;
}
//#20171227 인천공항 포스연동 end, phj
//#Rhee, 20180212 거스름돈 안내 팝업 start
if( (m_cPosStatus.Base.CmpCd.Equals("PCUS") && (m_cPosStatus.Sale.ChangeCashAmt > 0)))
{
string sMsg = string.Format(MessageManager.GetGuideMessage(POS_MESSAGE.GUIDE.MSG_0013), Convert.ToString(m_cPosStatus.Sale.PayRecvedAmt), Convert.ToString(m_cPosStatus.Sale.ChangeCashAmt));
WinManager.ConfirmMessage(sMsg, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0212));
}
//#Rhee, 20180212 거스름돈 안내 팝업 start
//낱개 반품 이나 판매 로스 일경우 결제 버튼 클릭시 현금 자동 결제 2016-12-05 문성진대리 요청 사항!
if ((m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.REFUND && m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE) ||
(m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL && m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.ETC.LOSS))
{
// 결제완료 처리
sRet = ExecuteSaleComplete();
}
else if (PosMstManager.GetPosOption(POS_OPTION.OPT322) != "1")
{
// 결제완료 처리
sRet = ExecuteSaleComplete();
}
}
return sRet;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return sRet;
}
//결제완료 체크(키오스크 사용) (해피스테이션)
public string CheckSaleComplete(bool kiosk)
{
string sRet = UserCom.RST_ERR;
try
{
// 적립 예정 포인트 계산
ArrayList alEtcItem = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM);
foreach (Column.TR_ETC.DATA cEtcItem in alEtcItem)
{
#region
if (cEtcItem.CANCEL_DIV == ItemConst.PAY_CANCEL_DIV.CANCEL) continue;
if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.SAVEPOINT)
{
// 해피포인트 기본적립 대상 금액 획득
m_cTrnStatus.Head.AftSavePoint = cEtcItem.AMT_ENTRY_08 = m_cDataService.GetPluTagetAmount(PosKey.MENU_KEY.HAPPY_POINT);
// 캠페인(해피포인트 적립) 설정 처리
ICampaignUs cCampaingMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN);
cCampaingMain.ExecuteCampaignHappyPointSave(PosConst.CAMPAIGN_PAY_KEY.HP_SAVE, null);
// 적립예정포인트
cEtcItem.ETC_AMT = (long)CmUtil.MathRounds(CmUtil.MathAmtPercent(cEtcItem.AMT_ENTRY_08, m_cPosStatus.Mst.HpyPntAccumRate), PosConst.MATH_ROUND.CEILING, 0);
//cEtcItem.ETC_AMT = m_cDataCommon.ExecTermCoopCmpPayDc(cEtcItem.ETC_WAY_CD, cEtcItem.ETC_DTL_CD_01, "", cEtcItem.AMT_ENTRY_08); // 적립예정 포인트
if (m_cTrnStatus.Head.AftSaveAddInfo != "")
{
if (m_cTrnStatus.Head.AftSaveAddInfo.Substring(25).StartsWith("N") == true) cEtcItem.ETC_AMT = 0;
}
}
// 해피포인트 예상적립 포인트 계산 중국 추가(2017.06.23)
else if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.POINT_SAVE_CHINA)
{
// 해피포인트 기본적립 대상 금액 획득
m_cTrnStatus.Head.AftSavePoint = cEtcItem.AMT_ENTRY_08 = m_cDataService.GetPluTagetAmount(PosKey.MENU_KEY.HAPPY_POINT_SAVE_CHINA);
// 캠페인(해피포인트 적립) 설정 처리
ICampaignUs cCampaingMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN);
cCampaingMain.ExecuteCampaignHappyPointSave(PosConst.CAMPAIGN_PAY_KEY.HP_SAVE, null);
// 적립예정포인트
cEtcItem.ETC_AMT = CmUtil.MathRounds(CmUtil.MathAmtPercent(cEtcItem.AMT_ENTRY_08, m_cPosStatus.Mst.HpyPntAccumRate), PosConst.MATH_ROUND.CEILING, 2);
if (m_cTrnStatus.Head.AftSaveAddInfo != "")
{
if (m_cTrnStatus.Head.AftSaveAddInfo.Substring(25).StartsWith("N") == true) cEtcItem.ETC_AMT = 0;
}
}
#endregion
}
// 판매화면 사용안함(해피스테이션)
//IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
//cFormSaleMain.DisplayItem(1, false); // 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus)
//cFormSaleMain.DisplayPayment(); // 결제등록정보 화면표시
//더치페이 금액 체크! 사용안함(해피스테이션)
//if (m_cPosStatus.Sale.DutchPayFlg == "2")
//{
// // 결제 금액 계산 처리
// ArrayList alPayment = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM);
// if (alPayment.Count > 0)
// {
// int iRow = alPayment.Count - 1;
// Column.TR_PAYMENT.DATA cPayItem = (Column.TR_PAYMENT.DATA)alPayment[iRow];
// if (cPayItem.CANCEL_DIV == PosConst.CANCEL_DIV.NORMAL && cPayItem.PAY_DTL_CD_05 == PosConst.PAY_DC_TYPE.PAY)
// m_cSaleComplete.DutchPayReceiptPrint(new string[] { "" }); //금액 더치페이 영수증 출력! - 결제일 경우!
// }
//}
sRet = UserCom.RST_OK;
// 결제 완료 체크
//#Rhee, 20171222 결제금액이 0원이고 미국 예약등록이면 0원으로도 결제가능하게 추가 start
// 기존
//if (m_cTrnStatus.Sale.RemainPayAmt == 0)
// 변경
if ((m_cTrnStatus.Sale.RemainPayAmt == 0) || ((m_cTrnStatus.Sale.RemainPayAmt > 0) &&
(m_cPosStatus.Base.CmpCd.Equals("PCUS") && m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.UNDECIDED.RESERVATION_REG)))
//#Rhee, 20171222 결제금액이 0원이고 미국 예약등록이면 0원으로도 결제가능하게 추가 end
{
//#20171227 인천공항 포스연동 start, phj
if (PosMstManager.GetPosOption(POS_OPTION.OPT512) == "1")
{
sRet = IncheonAireportPayClose(PosKey.MENU_KEY.INCHEON_AIRPORT);
if (sRet == UserCom.RST_ERR) return sRet;
}
//#20171227 인천공항 포스연동 end, phj
//#Rhee, 20180212 거스름돈 안내 팝업 start
if ((m_cPosStatus.Base.CmpCd.Equals("PCUS") && (m_cPosStatus.Sale.ChangeCashAmt > 0)))
{
string sMsg = string.Format(MessageManager.GetGuideMessage(POS_MESSAGE.GUIDE.MSG_0013), Convert.ToString(m_cPosStatus.Sale.PayRecvedAmt), Convert.ToString(m_cPosStatus.Sale.ChangeCashAmt));
WinManager.ConfirmMessage(sMsg, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0212));
}
//#Rhee, 20180212 거스름돈 안내 팝업 start
//낱개 반품 이나 판매 로스 일경우 결제 버튼 클릭시 현금 자동 결제 2016-12-05 문성진대리 요청 사항!
if ((m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.REFUND && m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE) ||
(m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL && m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.ETC.LOSS))
{
// 결제완료 처리
sRet = ExecuteSaleComplete(true);
}
else if (PosMstManager.GetPosOption(POS_OPTION.OPT322) != "1")
{
// 결제완료 처리
sRet = ExecuteSaleComplete(true);
}
}
else // 거래금액과 상품금액 차이로(RemainAmt에 금액존재) 거래완료가 안된 경우 리턴 ERR로..2019.04.17
{
return UserCom.ERROR;
}
//if (kiosk)
//{
// // 결제완료 처리
// //sRet = ExecuteSaleComplete(true);
// m_cTrnStatus.Head.OrderNo = m_cTableSvr.GetOrderNoForDb();
//}
return sRet;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return sRet;
}
// <summary>
/// 결제 완료 처리
/// </summary>
public string ExecuteSaleComplete()
{
string sRet = UserCom.RST_ERR;
string sDucthFloor = ""; //더치페이 후불용 층 백업
string sDucthTableNo = ""; //더치페이 후불용 테이블 번호 백업
string sHpSaveCompleteMsg = "";
try
{
if (m_cPosStatus.Sale.DutchPayFlg == "2") m_cPosStatus.Sale.DutchPayFlg = "";
// 판매화면
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
if (m_cPosStatus.Sale.SaleFlow != PosConst.SALE_FLOW.SALE_END)
{
// 판매상태 변경
m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_END;
// 주문번호(대기번호) 등록
if (SetOrderNo() == false)
{
m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.PAY_DOING;
cFormSaleMain.DisplayPayment(); // 결제등록정보 화면표시
return sRet;
}
//일반판매, 예약완료가 아닐 경우
if ((m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE || m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.UNDECIDED.RESERVATION_COMPLETE) != true)
{
//적립, 현금 영수증 안함!
}
else
{
#region
//#20170830 해당 기능키 선택시 돈통 오픈 (현금, 상품권, 수표, 식권, 잔액교환권) start
//170811 dkshin 돈통 오픈 처리 시점 변경(현금영수증 전)
// 돈통 오픈 처리
/*
if (FinishTradeOpenDrawer() == true)
{
UserLog.WriteLogFile(UserCom.LOG_IOS, UserCom.WARNING_LEVEL, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name, "OpenCashDrawer");
m_cCashDrawer.OpenCashDrawer(); // 돈통 OPEN 처리
}
*/
//#20170830 해당 기능키 선택시 돈통 오픈 (현금, 상품권, 수표, 식권, 잔액교환권) end
// 현금 영수증 발행
if (PayCashbill(PosKey.MENU_KEY.CASH_APPROVAL) == false)
{
m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.PAY_DOING;
m_cTrnStatus.Head.OrderNo = "";
cFormSaleMain.DisplayPayment(); // 결제등록정보 화면표시
return sRet;
}
// 해피포인트 적립 완료 처리
CompleteHappyPointSave();
//// 현금 영수증 발행
//PayCashbill(PosKey.MENU_KEY.CASH_APPROVAL);
// 결제 고객 등록 체크
SetPayGuest("2");
cFormSaleMain.DisplayPayment(); // 결제등록정보 화면표시
//#13173 PB 부산수안_해피쿠폰 할인 후 대상금액 '0'원으로 표시되는 증상 start, phj
/*
// 추후적립 초기화
Column.TR_ETC.DATA cEtcItemHP = null;
ArrayList alTrEtc = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM);
foreach (Column.TR_ETC.DATA cEtcItem in alTrEtc)
{
if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue;
if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM
&& (cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.SAVEPOINT || cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.POINT_SAVE_CHINA))
{
// 해피포인트 적립 완료시 추후적립 정보 초기화
m_cTrnStatus.Head.AftSavePoint = 0;
m_cTrnStatus.Head.AftSaveAddInfo = "";
break;
}
}
// 추가적립의 추후적립 불가시 초기화
if (m_cTrnStatus.Head.AftSaveAddDiv != "1") m_cTrnStatus.Head.AftSaveAddInfo = "";
// 1000원 이하 추후적립 안함.
if (m_cTrnStatus.Head.AftSavePoint < 1000 && m_cTrnStatus.Head.AftSaveAddInfo == "")
{
m_cTrnStatus.Head.AftSavePoint = 0;
m_cTrnStatus.Head.AftSaveAddInfo = "";
}
*/
//#13173 PB 부산수안_해피쿠폰 할인 후 대상금액 '0'원으로 표시되는 증상 end, phj
// 해피포인트 적립 완료 안내 메시지 추출
ArrayList alEtcItem = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM);
foreach (Column.TR_ETC.DATA cEtcItem in alEtcItem)
{
if (cEtcItem.CANCEL_DIV == ItemConst.PAY_CANCEL_DIV.CANCEL) continue;
if ((cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.SAVEPOINT)
|| (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.POINT_SAVE_CHINA))
{
//#20180821 해피포인트 고객이름 마스킹 start
if (cEtcItem.HP_CUST_NAME != "") { cEtcItem.HP_CUST_NAME = m_cDataCommon.NameMasking(cEtcItem.HP_CUST_NAME); }
//#20180821 해피포인트 고객이름 마스킹 end
sHpSaveCompleteMsg = string.Format(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0690),
cEtcItem.HP_CUST_NAME,
m_cPosStatus.Global.NumericTOCurrency(cEtcItem.ETC_AMT));
}
}
// #20170616, 해피앱 스탬프 Start
//20171025 dkshin 전문 영수증번호 전거래의 영수증번호로 중복등록되는 문제 수정-> 거래 완료(PosSaleExecute) 후 처리
/*IHappyAppStamp m_cHappyAppStamp = (IHappyAppStamp)sManager.InitServiceInstance(ServiceLists.BSV_SALE.DLL, ServiceLists.BSV_SALE.HPAPP_STAMP);
m_cTrnStatus.Sale.HappyAppMemNo = m_cHappyAppStamp.CheckHappyAppStamp();
if (m_cPosStatus.Base.TrainingFlag == "0" && // 운영모드
PosMstManager.GetPosOption(POS_OPTION.OPT327) == "1" && // 해피앱 스탬프 사용
m_cTrnStatus.Sale.HappyAppMemNo != "") // 해피앱 회원번호 존재(해피앱 고객)
{
// 해피앱 스탬프 등록
m_cHappyAppStamp.SetHappyAppStamp();
}
*/
// #20170616, 해피앱 스탬프 End
#endregion
}
//상품권 판매 or 선불카드 판매 경우!
if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.REFUND
&& m_cTrnStatus.Head.TradeKind != ItemConst.TRAN_KIND.CHARGESALE.PREPAID && m_cTrnStatus.Head.TradeKind != ItemConst.TRAN_KIND.CHARGESALE.GIFT)
{
#region
// 영수 캠페인 실행
ICampaignUs cCampaingMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN);
cCampaingMain.ExecuteCampaignPrint(new string[] { });
if (m_cPosStatus.Mst.CntryDiv == ItemConst.CNTRY_DIV.CN)
{
// 온라인쿠폰 발행(중국) 실행
IPaymentUs cOnLineCpn = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.ONLINE_COUPON_PRT);
cOnLineCpn.SetPayment(new string[] { });
}
#endregion
}
//// 주문번호 등록
//SetOrderNo();
// Add, 2017.01.24
// 주방프린터 수동출력 처리 0:자동 1:수동(프린터선택) 2:수동(상품선택)
//주방프린터는 자동으로 처리함 (해피스테이션)
//MenualOrderKtchProcess();
// 테이블 거래 완료 처리
sRet = m_cTableSvr.CompleteSaleOrder();
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 더치페이면....
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ArrayList ctmpSaleItem = new ArrayList();
if (m_cPosStatus.Sale.DutchPayFlg == "1")
{
#region
//1.상품백업
ArrayList aSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
for (int iRow = 0; iRow < aSaleItem.Count; iRow++)
{
Column.TR_PLU.DATA cSaleItem = (Column.TR_PLU.DATA)aSaleItem[iRow];
cSaleItem.ORG_ITEM_SEQ = iRow;
ctmpSaleItem.Add(cSaleItem.Clone());
}
sDucthFloor = m_cTrnStatus.Head.FloorCd;
sDucthTableNo = m_cTrnStatus.Head.TableNo;
m_cPosStatus.Sale.PayingDutchFlag = "1";
#endregion
}
//결제완료 시점에 현금영수증 승인버튼 누르면 음성 플레이 되는 기능 --> 무조건 결제완료 시점에 플레이 되도록 수정! - #20180212 start,phj
if ((m_cTrnStatus.Head.CmpCd == "PCKR") &&
//#13753 POS MOT음성 기능 추가 개발요청 - 20180222 음성MOT 옵션처리 start,phj
(PosMstManager.GetPosOption(POS_OPTION.OPT331) == "1") &&
//#13753 POS MOT음성 기능 추가 개발요청 - 20180222 음성MOT 옵션처리 end,phj
(m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE && CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT309), "1") == "2"))
{
frmSaleMain fMain = (frmSaleMain)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
fMain.SetPlayMotMsg(PosConst.MOT_MSG_TYPE.DSP_SCN_MSG, PosKey.MENU_KEY.PHRASE_RECEIPT_INPUT, "");
}
//결제완료 시점에 현금영수증 승인버튼 누르면 음성 플레이 되는 기능 --> 무조건 결제완료 시점에 플레이 되도록 수정! - #20180212 end,phj
((Form)cFormSaleMain).Refresh();
// ##########거래 완료 처리########## //
sRet = m_cSaleComplete.PosSaleExecute(new string[] { });
if (sRet != UserCom.RST_OK) return sRet;
// 판매상태 변경
m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_WAIT;
// 거래 완료 후 초기화 처리
cFormSaleMain.DisplayInit(false, true);
//cFormSaleMain.DisplayInit(true, true);
frmSaleMain fSalMain = (frmSaleMain)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
fSalMain.SubPriorReadingVarClear(true);
// 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus)
cFormSaleMain.DisplayItem(0, true);
// 상품등록 화면 표시
cFormSaleMain.ChangeSalePayMode(true);
// 거래완료 로그 출력
UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
, "SaleDate : " + m_cPosStatus.Base.SaleDate + ", StoreNo : " + m_cPosStatus.Base.StoreNo + ", PosNo : " + m_cPosStatus.Base.PosNo + ", TranNo : " + m_cPosStatus.Base.TradeNo);
// 해피포인트 적립 완료 안내메시지 표시
if (sHpSaveCompleteMsg != "") WinSale.ShowForm(new string[] { FormManager.FORM_HP_SAVE_COMPLETE_MSG, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0108), sHpSaveCompleteMsg });
//현금 알림 체크
if (CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT310), "0") != "0")
{
if (m_cPosStatus.Mst.CashAlarmAmt > m_cDataService.DoubleParse(PosMstManager.GetPosOption(POS_OPTION.OPT310)))
{
WinManager.ConfirmMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0325));
}
}
//#20180605 해피오더 개선 start - 20180618
m_cPosStatus.Sale.bPayCompleteYN = true;
//#20180605 해피오더 개선 end - 20180618
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 더치페이면....
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if (m_cPosStatus.Sale.DutchPayFlg == "1")
{
#region
ArrayList aSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
for (int iRow = 0; iRow < ctmpSaleItem.Count; iRow++)
{
#region
Column.TR_PLU.DATA cSaleItem = (Column.TR_PLU.DATA)ctmpSaleItem[iRow];
cSaleItem.CANCEL_DIV = cSaleItem.DUTCH_PAY_CAN_DIV;
cSaleItem.CANCEL_DIV_MAIN = cSaleItem.DUTCH_PAY_MAIN_CAN_DIV;
cSaleItem.DUTCH_PAY_CAN_DIV = "";
cSaleItem.DUTCH_PAY_MAIN_CAN_DIV = "";
if (cSaleItem.DUTCH_PAY_SELQTY == cSaleItem.DUTCH_PAY_TOTQTY)
{
cSaleItem.CANCEL_DIV = PosConst.CANCEL_DIV.CANCEL;
cSaleItem.CANCEL_DIV_MAIN = PosConst.CANCEL_DIV.CANCEL;
}
else
{
cSaleItem.SALE_QTY = cSaleItem.DUTCH_PAY_TOTQTY - cSaleItem.DUTCH_PAY_SELQTY;
}
if (cSaleItem.CANCEL_DIV == PosConst.CANCEL_DIV.NORMAL)
{
aSaleItem.Add(cSaleItem.Clone());
}
#endregion
}
if (aSaleItem.Count > 0)
{
m_cTrnStatus.Head.FloorCd = sDucthFloor;
m_cTrnStatus.Head.TableNo = sDucthTableNo;
m_cPluService.ItemDcAllClear(true);
m_cPluService.ItemAmountExeccute(true, true);
//더치페이 호출!
DutchPay("", "1");
}
else
{
m_cPosStatus.Sale.DutchPayFlg = "";
m_cPosStatus.Sale.PayingDutchFlag = "";
}
#endregion
}
if (m_cPosStatus.Base.PosType == PosConst.POS_TYPE.DEFERRED_PAYMENT && m_cPosStatus.Sale.DutchPayFlg == "")
{
//테이블 서비스 이면 판매화면 종료 처리
cFormSaleMain.SaleMainExit();
}
//#20181016 메모리 사용량 로그남기기 start
//20181108 주석처리
//m_cDataCommon.MemoryCheckLog();
//#20181016 메모리 사용량 로그남기기 end
//if (m_cPosStatus.Base.DmbIf == "1")
//{
// // 디지털메뉴보드 I/F
// IDataServiceUs cDigitalMenuBoard = (IDataServiceUs)sManager.InitServiceInstance(ServiceLists.BSV_BASIC.DLL, ServiceLists.BSV_BASIC.DMB_IF);
// // 판매완료
// //#16569 파스쿠찌 드라이브 스루 기능 개발 요청 start
// //기존
// //cDigitalMenuBoard.Execute(new string[] { ItemConst.DMB_IRT_ID.SALE_END });
// //변경
// if (PosMstManager.GetPosOption(POS_OPTION.OPT554) != "1")
// {
// cDigitalMenuBoard.Execute(new string[] { ItemConst.DMB_IRT_ID.SALE_END });
// }
// cDigitalMenuBoard = null;
// //#16569 파스쿠찌 드라이브 스루 기능 개발 요청 end
//}
sRet = UserCom.RST_OK;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
ex.Message);
}
return sRet;
}
//kiosk용 거래완료처리 2019.04.17(해피스테이션)
public string ExecuteSaleComplete(bool kiosk)
{
string sRet = UserCom.RST_ERR;
string sHpSaveCompleteMsg = "";
try
{
if (m_cPosStatus.Sale.DutchPayFlg == "2") m_cPosStatus.Sale.DutchPayFlg = "";
if (m_cPosStatus.Sale.SaleFlow != PosConst.SALE_FLOW.SALE_END)
{
// 판매상태 변경
m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_END;
// 주문번호(대기번호) 등록
if (string.IsNullOrEmpty(m_cTrnStatus.Head.OrderNo))
{
if (SetOrderNo() == false)
{
m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.PAY_DOING;
return sRet;
}
}
//일반판매, 예약완료가 아닐 경우
if ((m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE || m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.UNDECIDED.RESERVATION_COMPLETE) != true)
{
//적립, 현금 영수증 안함!
}
else
{
#region
// 현금 영수증 발행
//해피스테이션에서는 중복 처리됨 2019.05.10
//if (PayCashbill(PosKey.MENU_KEY.CASH_APPROVAL) == false)
//{
// m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.PAY_DOING;
// m_cTrnStatus.Head.OrderNo = "";
// return sRet;
//}
// 해피포인트 적립 완료 처리
CompleteHappyPointSave();
//// 현금 영수증 발행
//PayCashbill(PosKey.MENU_KEY.CASH_APPROVAL);
// 결제 고객 등록 체크
//SetPayGuest("2");
// 해피포인트 적립 완료 안내 메시지 추출 --필요없음(해피스테이션)
//ArrayList alEtcItem = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM);
//foreach (Column.TR_ETC.DATA cEtcItem in alEtcItem)
//{
// if (cEtcItem.CANCEL_DIV == ItemConst.PAY_CANCEL_DIV.CANCEL) continue;
// if ((cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.SAVEPOINT)
// || (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.POINT_SAVE_CHINA))
// {
// //#20180821 해피포인트 고객이름 마스킹 start
// if (cEtcItem.HP_CUST_NAME != "") { cEtcItem.HP_CUST_NAME = m_cDataCommon.NameMasking(cEtcItem.HP_CUST_NAME); }
// //#20180821 해피포인트 고객이름 마스킹 end
// sHpSaveCompleteMsg = string.Format(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0690),
// cEtcItem.HP_CUST_NAME,
// m_cPosStatus.Global.NumericTOCurrency(cEtcItem.ETC_AMT));
// }
//}
#endregion
}
//상품권 판매 or 선불카드 판매 경우!(상품권 /선불 카드 없음 (해피스테이션)
//if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.REFUND
// && m_cTrnStatus.Head.TradeKind != ItemConst.TRAN_KIND.CHARGESALE.PREPAID && m_cTrnStatus.Head.TradeKind != ItemConst.TRAN_KIND.CHARGESALE.GIFT)
//{
// #region
// // 영수 캠페인 실행
// ICampaignUs cCampaingMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN);
// cCampaingMain.ExecuteCampaignPrint(new string[] { });
// if (m_cPosStatus.Mst.CntryDiv == ItemConst.CNTRY_DIV.CN)
// {
// // 온라인쿠폰 발행(중국) 실행
// IPaymentUs cOnLineCpn = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.ONLINE_COUPON_PRT);
// cOnLineCpn.SetPayment(new string[] { });
// }
// #endregion
//}
// KtchOrderSheetToBillPrint();
// 테이블 거래 완료 처리
sRet = m_cTableSvr.CompleteSaleOrder();
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 더치페이면....없음(해피스테이션
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//ArrayList ctmpSaleItem = new ArrayList();
//if (m_cPosStatus.Sale.DutchPayFlg == "1")
//{
// #region
// //1.상품백업
// ArrayList aSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
// for (int iRow = 0; iRow < aSaleItem.Count; iRow++)
// {
// Column.TR_PLU.DATA cSaleItem = (Column.TR_PLU.DATA)aSaleItem[iRow];
// cSaleItem.ORG_ITEM_SEQ = iRow;
// ctmpSaleItem.Add(cSaleItem.Clone());
// }
// sDucthFloor = m_cTrnStatus.Head.FloorCd;
// sDucthTableNo = m_cTrnStatus.Head.TableNo;
// m_cPosStatus.Sale.PayingDutchFlag = "1";
// #endregion
//}
//폼호출 안함..(해피스테이션)
//결제완료 시점에 현금영수증 승인버튼 누르면 음성 플레이 되는 기능 --> 무조건 결제완료 시점에 플레이 되도록 수정! - #20180212 start,phj
//if ((m_cTrnStatus.Head.CmpCd == "PCKR") &&
// //#13753 POS MOT음성 기능 추가 개발요청 - 20180222 음성MOT 옵션처리 start,phj
// (PosMstManager.GetPosOption(POS_OPTION.OPT331) == "1") &&
// //#13753 POS MOT음성 기능 추가 개발요청 - 20180222 음성MOT 옵션처리 end,phj
// (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE && CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT309), "1") == "2"))
//{
// frmSaleMain fMain = (frmSaleMain)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
// fMain.SetPlayMotMsg(PosConst.MOT_MSG_TYPE.DSP_SCN_MSG, PosKey.MENU_KEY.PHRASE_RECEIPT_INPUT, "");
//}
#region 2019.05.16
//비회원 적립예상포인트 구하기 2019.05.16
// 해피포인트 기본적립 대상 금액 획득
//var chkHappy = false;
//ArrayList alEtcItem = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM);
//foreach (Column.TR_ETC.DATA cEtcItem in alEtcItem)
//{
// if (cEtcItem.CANCEL_DIV == ItemConst.PAY_CANCEL_DIV.CANCEL) continue;
// if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.SAVEPOINT)
// {
// if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.SAVEPOINT)
// {
// chkHappy = true;
// break;
// }
// }
//}
//if (!chkHappy)
//{
// var AfterSavePoint = m_cDataService.GetPluTagetAmount(PosKey.MENU_KEY.HAPPY_POINT);
// // 캠페인(해피포인트 적립) 설정 처리
// ICampaignUs cCampaingMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN);
// cCampaingMain.ExecuteCampaignHappyPointSave(PosConst.CAMPAIGN_PAY_KEY.HP_SAVE, null);
// // 적립예정포인트
// m_cTrnStatus.Head.SavingHpPoint = (long)CmUtil.MathRounds(CmUtil.MathAmtPercent(AfterSavePoint, m_cPosStatus.Mst.HpyPntAccumRate), PosConst.MATH_ROUND.CEILING, 0);
//}
#endregion
// ##########거래 완료 처리########## //
sRet = m_cSaleComplete.PosSaleExecute(new string[] { });
if (sRet != UserCom.RST_OK) return sRet;
// 판매상태 변경
m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_WAIT;
// 거래완료 로그 출력
UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()"
, "SaleDate : " + m_cPosStatus.Base.SaleDate + ", StoreNo : " + m_cPosStatus.Base.StoreNo + ", PosNo : " + m_cPosStatus.Base.PosNo + ", TranNo : " + m_cPosStatus.Base.TradeNo);
// 해피포인트 적립 완료 안내메시지 표시(해피스테이션에서 막음 2019.04.22)
//if (sHpSaveCompleteMsg != "") WinSale.ShowForm(new string[] { FormManager.FORM_HP_SAVE_COMPLETE_MSG, MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0108), sHpSaveCompleteMsg });
//현금 알림 체크(현금 사용안함 (해피스테이션)
//if (CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT310), "0") != "0")
//{
// if (m_cPosStatus.Mst.CashAlarmAmt > m_cDataService.DoubleParse(PosMstManager.GetPosOption(POS_OPTION.OPT310)))
// {
// WinManager.ConfirmMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0325));
// }
//}
//#20180605 해피오더 개선 start - 20180618
m_cPosStatus.Sale.bPayCompleteYN = true;
//#20180605 해피오더 개선 end - 20180618
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 더치페이면....더치페이 없음(해피스테이션)
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//if (m_cPosStatus.Sale.DutchPayFlg == "1")
//{
// #region
// ArrayList aSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
// for (int iRow = 0; iRow < ctmpSaleItem.Count; iRow++)
// {
// #region
// Column.TR_PLU.DATA cSaleItem = (Column.TR_PLU.DATA)ctmpSaleItem[iRow];
// cSaleItem.CANCEL_DIV = cSaleItem.DUTCH_PAY_CAN_DIV;
// cSaleItem.CANCEL_DIV_MAIN = cSaleItem.DUTCH_PAY_MAIN_CAN_DIV;
// cSaleItem.DUTCH_PAY_CAN_DIV = "";
// cSaleItem.DUTCH_PAY_MAIN_CAN_DIV = "";
// if (cSaleItem.DUTCH_PAY_SELQTY == cSaleItem.DUTCH_PAY_TOTQTY)
// {
// cSaleItem.CANCEL_DIV = PosConst.CANCEL_DIV.CANCEL;
// cSaleItem.CANCEL_DIV_MAIN = PosConst.CANCEL_DIV.CANCEL;
// }
// else
// {
// cSaleItem.SALE_QTY = cSaleItem.DUTCH_PAY_TOTQTY - cSaleItem.DUTCH_PAY_SELQTY;
// }
// if (cSaleItem.CANCEL_DIV == PosConst.CANCEL_DIV.NORMAL)
// {
// aSaleItem.Add(cSaleItem.Clone());
// }
// #endregion
// }
// if (aSaleItem.Count > 0)
// {
// m_cTrnStatus.Head.FloorCd = sDucthFloor;
// m_cTrnStatus.Head.TableNo = sDucthTableNo;
// m_cPluService.ItemDcAllClear(true);
// m_cPluService.ItemAmountExeccute(true, true);
// //더치페이 호출!
// DutchPay("", "1");
// }
// else
// {
// m_cPosStatus.Sale.DutchPayFlg = "";
// m_cPosStatus.Sale.PayingDutchFlag = "";
// }
// #endregion
//}
//테이블 서비스 없음(해피스테이션)
//if (m_cPosStatus.Base.PosType == PosConst.POS_TYPE.DEFERRED_PAYMENT && m_cPosStatus.Sale.DutchPayFlg == "")
//{
// //테이블 서비스 이면 판매화면 종료 처리
// cFormSaleMain.SaleMainExit();
//}
//#20181016 메모리 사용량 로그남기기 start
//20181108 주석처리
//m_cDataCommon.MemoryCheckLog();
//#20181016 메모리 사용량 로그남기기 end
if (m_cPosStatus.Base.DmbIf == "1")
{
//// 디지털메뉴보드 I/F
//IDataServiceUs cDigitalMenuBoard = (IDataServiceUs)sManager.InitServiceInstance(ServiceLists.BSV_BASIC.DLL, ServiceLists.BSV_BASIC.DMB_IF);
//if (PosMstManager.GetPosOption(POS_OPTION.OPT554) != "1")
//{
// cDigitalMenuBoard.Execute(new string[] { ItemConst.DMB_IRT_ID.SALE_END });
//}
//cDigitalMenuBoard = null;
try
{
var sUrl = m_cPosStatus.Base.DmbSvrIp;
var sWorkType = "/api/ods";
Hashtable htRequest = new Hashtable();
Hashtable htDummy = new Hashtable();
string nowDate = DateTime.Now.ToString("yyyymmdd");
string nowTime = DateTime.Now.ToString("HHmmss");
htRequest.Add("cmpCode", m_cPosStatus.Base.CmpCd);
htRequest.Add("brandCode",m_cPosStatus.Base.BrandCd);
htRequest.Add("storeCode", m_cPosStatus.Base.StoreNo);
htRequest.Add("deviceCode", "");
htRequest.Add("saleDiv", "");
htRequest.Add("saleDt", nowDate);
htRequest.Add("saleTm", nowTime);
htRequest.Add("soldDt", "");
htRequest.Add("soldTm", "");
htRequest.Add("saleResult", "");
htRequest.Add("posNo", "");
htRequest.Add("billNo", "");
htRequest.Add("beforeBillNo", "");
htRequest.Add("takeDiv", "");
htRequest.Add("waitNo", m_cTrnStatus.Head.OrderNo);
htRequest.Add("totalPrice", "");
htRequest.Add("totalSalePrice", "");
htRequest.Add("totalService", "");
htRequest.Add("totalVat", "");
htRequest.Add("totalEnr", "");
htRequest.Add("itemName", "");
htRequest.Add("itemCount", "");
htRequest.Add("payType", "");
htRequest.Add("payAmount", "");
htRequest.Add("payPointUse", "");
htRequest.Add("payPointSave", "");
htRequest.Add("saleItemList", htDummy);
htRequest.Add("salePayList", htDummy);
Hashtable htResponse = null;
Hashtable[] htReturn = null;
int iRet = 0;
string sResp = string.Empty;
if ((iRet = m_cNetworkHttp.HttpJsonPOST_SendReceive(sUrl, sWorkType, htRequest, ref htResponse, ref sResp)) == BaseCom.OK)
{
htReturn = JsonConvert.DeserializeObject<Hashtable[]>(sResp);
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR,
System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name, // Project Name (프로젝트명)
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + // Class Name (Class Name (클래스명))
System.Reflection.MethodBase.GetCurrentMethod().Name + "()", // Function Name (Function Name (함수명))
ex.Message);
}
}
sRet = UserCom.RST_OK;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
ex.Message);
}
return sRet;
}
/// <summary>
/// 금액 더치페이 남은 금액 체크
/// </summary>
/// <returns></returns>
private bool GetDutchPayRemain()
{
bool bRet = false;
double dAvancePay = 0;
try
{
// 결제 금액 계산 처리
ArrayList alPayment = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM);
for (int iRow = 0; iRow < alPayment.Count; iRow++)
{
Column.TR_PAYMENT.DATA cPayItem = (Column.TR_PAYMENT.DATA)alPayment[iRow];
if (cPayItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue;
if (cPayItem.PAY_DTL_CD_05 != "" && cPayItem.PAY_DTL_CD_05 != "1") continue;
// 받은금액 계산 처리
dAvancePay += cPayItem.PAY_AMT;
}
// 받을금액
if (m_cTrnStatus.Sale.DutchPayTotAmt > dAvancePay)
{
bRet = true;
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return bRet;
}
/// <summary>
/// 주문번호등록
/// </summary>
/// 2019-04-17 - 1997fx11 : 대기번호 출력 참조.
public bool SetOrderNo()
{
// grayber@20180110 전자영수증 주문(대기)번호표 출력 start - string 선언 이동
// 선언 이동
string sRet = ""; // grayber@20180110 string 선언 이동
// grayber@20180110 전자영수증 주문(대기)번호표 출력 end
try
{
//정상 && 일반 거래 일때만 처리! => 로스거래 주방출력 함(2017.05.25)
if (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL
&& (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE || m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.ETC.LOSS))
{
// Add, 2017.04.11, 후불-판매모드는 주문번호 자동채번 처리 (점별일련번호)
if (m_cPosStatus.Base.PosType == PosConst.POS_TYPE.DEFERRED_PAYMENT)
{
if (m_cPosStatus.Sale.EtcOperateMode == PosConst.ETC_OPERATION_MODE.NO_ORDER_SALE || string.IsNullOrWhiteSpace(m_cTrnStatus.Head.OrderNo))
m_cTrnStatus.Head.OrderNo = m_cTableSvr.GetOrderNoForDb();
// 후불일 경우에도 판매모드에서는 대기번호 자동체번 안함(2017.05.24)
if (m_cPosStatus.Sale.EtcOperateMode != PosConst.ETC_OPERATION_MODE.NO_ORDER_SALE)
return true;
}
if (PosMstManager.GetPosOption(POS_OPTION.OPT008) == "1") //대기번호 사용여부
{
// 자동채번일 경우!
if (PosMstManager.GetPosOption(POS_OPTION.OPT042) == "1")
{
m_cTrnStatus.Head.OrderNo = m_cDataCommon.GetWaitNoForDb();
}
else
{
//sCardNo = GetHappyAppNo();
// Add, 2017.04.25, KPS => 주방출력 대상 상품이 존재 할 때만 대기번호 입력
// KDS => 무조건 대기번호 입력
var isGetOrderNo = false;
if (PosMstManager.GetPosOption(POS_OPTION.OPT027) == "1" || PosMstManager.GetPosOption(POS_OPTION.OPT507) == "1")
{
// KDS => 무조건 대기번호 입력
isGetOrderNo = true;
}
//#20181024 대기(주문)번호표 출력 start
/*
else if (PosMstManager.GetPosOption(POS_OPTION.OPT432) == "1")
{
// 대기(주문)번호표 출력여부 => 무조건 대기번호 입력
isGetOrderNo = true;
}
*/
//#20181024 대기(주문)번호표 출력 end
else
{
// KPS => 주방출력 대상 상품이 존재 할 때만 대기번호 입력
isGetOrderNo = IsExistKtchItem();
}
//isGetOrderNo = true; //지우자!!!!
// Mod, 2017.04.25, KPS => 주방출력 대상 상품이 존재 할 때만 대기번호 입력
if (isGetOrderNo)
{
if (m_cTrnStatus.Sale.HappyBuzzMemNo != "" && m_cPosStatus.Mst.HappyBuzzUseYn == "1")
{
//해피버즈 처리!
sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_HAPPY_BUZZ, PosKey.MENU_KEY.HAPPY_BUZ_REG, m_cTrnStatus.Sale.HappyBuzzMemNo });
if (sRet != UserCom.RST_ERR)
{
m_cTrnStatus.Head.OrderNo = sRet;
}
else
{
//실패시 일반 받기!
sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_USER_INPUT_DATA, PosConst.FRM_INPUT_DATA.ORDERNO });
if (sRet != UserCom.RST_ERR)
{
//m_cTrnStatus.Head.OrderNo = sRet;
var tmp = sRet.Split('|');
if (tmp.Length > 0) m_cTrnStatus.Head.OrderNo = tmp[0];
if (tmp.Length > 1) m_cTrnStatus.Sale.MenualOrderMemo = tmp[1];
}
else
return false;
}
}
else
{
sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_USER_INPUT_DATA, PosConst.FRM_INPUT_DATA.ORDERNO });
if (sRet != UserCom.RST_ERR)
{
//m_cTrnStatus.Head.OrderNo = sRet;
var tmp = sRet.Split('|');
if (tmp.Length > 0) m_cTrnStatus.Head.OrderNo = tmp[0];
if (tmp.Length > 1) m_cTrnStatus.Sale.MenualOrderMemo = tmp[1];
}
else
return false;
}
}
// grayber@20180110 전자영수증 주문(대기)번호표 출력 start - 주문(대기번호) 입력 창 처리
// 추가
// grayber@20180122 전자영수증 주문(대기)번호표 출력 start - 브랜드구분을 회사구분으로 변경, if -> else if 변경
//if (m_cPosStatus.Base.BrandDiv.Equals(ItemConst.CORP_DIV.BR) == true ) // 기존
else if (m_cPosStatus.Mst.CorpDiv.Equals(ItemConst.CORP_DIV.BR) == true ) // 변경
// grayber@20180122 전자영수증 주문(대기)번호표 출력 start
{
sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_USER_INPUT_DATA, PosConst.FRM_INPUT_DATA.ORDERNO });
if (sRet != UserCom.RST_ERR)
{
//m_cTrnStatus.Head.OrderNo = sRet;
var tmp = sRet.Split('|');
if (tmp.Length > 0) m_cTrnStatus.Head.OrderNo = tmp[0];
if (tmp.Length > 1) m_cTrnStatus.Sale.MenualOrderMemo = tmp[1];
}
else
return false;
}
// grayber@20180110 전자영수증 주문(대기)번호표 출력 end
}
}
//else if (m_cPosStatus.Base.PosType == PosConst.POS_TYPE.DEFERRED_PAYMENT && m_cPosStatus.Sale.EtcOperateMode == PosConst.ETC_OPERATION_MODE.NO_ORDER_SALE)
//{
// // 후불-판매모드 일때
// //m_cTrnStatus.Head.OrderNo = m_cDataCommon.GetWaitNoForDb();
// m_cTrnStatus.Head.OrderNo = m_cTrnStatus.Head.TradeNo;
//}
}
return true;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return false;
}
/// <summary>
/// 주방출력(KPS) 대상 상품 존재여부
/// </summary>
/// <returns></returns>
private bool IsExistKtchItem()
{
try
{
// 일반주문 일때
var lstktchItems = new List<string>();
var pluItems = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
foreach (Column.TR_PLU.DATA item in pluItems)
{
if (item.ORDER_OK_FLAG == PosConst.PLU_ORDER_OK_FLAG.ORDER_OK) continue;
if (string.IsNullOrWhiteSpace(m_cTrnStatus.Head.FloorCd) == false)
lstktchItems.Add(string.Format("'{0}{1}{2}'", m_cTrnStatus.Head.FloorCd, item.SUB_SHOP_CD, item.ITEM_PLU_CD));
lstktchItems.Add(string.Format("'{0}{1}{2}'", "999", item.SUB_SHOP_CD, item.ITEM_PLU_CD));
}
if (lstktchItems.Count == 0) return false;
var fmt = "SELECT A.SUB_STOR_CD, A.ITEM_CD, COUNT(B.KTCH_SYS_CD) KTCH_CNT \n"
+ " FROM MST_KTCH_DEVICE_ITEM A WITH(NOLOCK) \n"
+ " , MST_KTCH_DEVICE B WITH(NOLOCK) \n"
+ " WHERE A.CMP_CD = B.CMP_CD AND A.STOR_CD = B.STOR_CD \n"
+ " AND CASE WHEN A.KTCH_SYS_CD = '99' THEN '1' ELSE A.SUB_STOR_CD + A.KTCH_SYS_CD END \n"
+ " = CASE WHEN A.KTCH_SYS_CD = '99' THEN '1' ELSE B.SUB_STOR_CD + B.KTCH_SYS_CD END \n"
+ " AND A.CMP_CD = '{0}' \n"
+ " AND A.STOR_CD = '{1}' \n"
+ " AND A.FLOOR_CD + A.SUB_STOR_CD + A.ITEM_CD IN ({2}) \n"
+ " AND A.USE_YN = '{3}' \n"
+ " AND B.USE_YN = '{3}' \n"
+ " AND B.KTCH_SYS_DIV = '" + PosConst.KTCH_SYS_DIV.KPS + "' \n"
+ " AND B.KTCH_SYS_CD <> '99' \n"
+ " GROUP BY A.SUB_STOR_CD, A.ITEM_CD "
;
var sql = string.Format(fmt, m_cPosStatus.Base.CmpCd
, m_cPosStatus.Base.StoreNo
, string.Join(",", lstktchItems.ToArray())
, PosConst.MST_USE_YN.YES);
DataTable dt = m_cMstService.Select(new string[] { sql });
if (dt == null || dt.Rows.Count == 0) return false;
return true;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
return false;
}
}
private string GetHappyAppNo()
{
string sCardNo = "";
try
{
ArrayList alEtcItem = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM);
foreach (Column.TR_ETC.DATA cEtcItem in alEtcItem)
{
if (cEtcItem.CANCEL_DIV == ItemConst.PAY_CANCEL_DIV.CANCEL) continue;
if (cEtcItem.BILLSPR_NO != m_cTrnStatus.Sale.BillSplitNo) continue;
if (cEtcItem.ETC_WAY_CD != ItemConst.TR_ITEM_ID.ETC_INFO_ITEM || cEtcItem.ETC_DTL_CD_01 != ItemConst.TR_ITEM_ID.ETC_INFO.SAVEPOINT) continue;
if (cEtcItem.OCCUR_ENTRY_12 == "Y")
{
sCardNo = cEtcItem.CanFiller3;
}
break;
}
if (sCardNo == "")
{
ArrayList alPayItem = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM);
foreach (Column.TR_PAYMENT.DATA cPayItem in alPayItem)
{
if (cPayItem.CANCEL_DIV == ItemConst.PAY_CANCEL_DIV.CANCEL) continue;
if (cPayItem.BILLSPR_NO != m_cTrnStatus.Sale.BillSplitNo) continue;
if (cPayItem.PAY_WAY_CD != ItemConst.TR_ITEM_ID.POINT_ITEM || cPayItem.PAY_DTL_CD_01 != ItemConst.TR_ITEM_ID.POINT_USE.HAPPY_POINT) continue;
if (cPayItem.OCCUR_ENTRY_12 == "Y")
{
sCardNo = cPayItem.CanFiller3;
}
break;
}
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return sCardNo;
}
/// <summary>
/// 해피포인트/OCB 적립 완료 처리
/// </summary>
public void CompleteHappyPointSave()
{
string sRet;
try
{
// 반품모드
if (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.REFUND) return;
// 상품권 판매 or 선불카드 판매
if (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.CHARGESALE.PREPAID || m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.CHARGESALE.GIFT) return;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// OKCASHBACK 포인트 적립 처리
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ArrayList alEtc = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM);
foreach (Column.TR_ETC.DATA cEtcItem in alEtc)
{
if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue;
// OKCASHBACK 적립
if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.OCB_SAVE)
{
if (cEtcItem.OCCUR_ENTRY_08 == ItemConst.PAY_APP_DIV.CAT_TERMINAL)
{
// OCB 적립 완료시 추후적립 정보 초기화
m_cTrnStatus.Head.AftSavePoint = 0;
m_cTrnStatus.Head.AftSaveAddInfo = "";
return;
}
// OCB 포인트 적립 완료 처리
IPaymentExpUs cOcbPntSave = (IPaymentExpUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.PNT_OCB_SAVE);
sRet = cOcbPntSave.CompletePayment(new string[] { });
if (sRet == UserCom.RST_OK)
{
// OCB 적립 완료시 추후적립 정보 초기화
m_cTrnStatus.Head.AftSavePoint = 0;
m_cTrnStatus.Head.AftSaveAddInfo = "";
return;
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 해피 포인트 적립 처리
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if (PosMstManager.GetPosOption(POS_OPTION.OPT316) == "0") return; // 해피포인트 업무 사용 여부(0:사용안함, 1:사용함(한국), 2:사용함(중국))
// 해피포인트 카드 등록 여부 체크
Column.TR_ETC.DATA cEtcItemHP = null;
ArrayList alTrEtc = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM);
foreach (Column.TR_ETC.DATA cEtcItem in alTrEtc)
{
if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue;
if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM
&& (cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.SAVEPOINT || cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.POINT_SAVE_CHINA))
{
cEtcItemHP = cEtcItem;
break;
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 해피포인트 적립 금액 계산
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 해피포인트 기본적립 대상 금액 획득
if (PosMstManager.GetPosOption(POS_OPTION.OPT316) == "2") // 해피포인트 업무 사용 여부(0:사용안함, 1:사용함(한국), 2:사용함(중국))
{
m_cTrnStatus.Head.AftSavePoint = m_cDataService.GetPluTagetAmount(PosKey.MENU_KEY.HAPPY_POINT_SAVE_CHINA);
// 캠페인(해피포인트 적립) 설정 처리
//ICampaignUs cCampaingMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN);
//cCampaingMain.ExecuteCampaignHappyPointSave(PosConst.CAMPAIGN_PAY_KEY.HP_SAVE, null);
if (m_cTrnStatus.Head.AftSavePoint < 1 && m_cTrnStatus.Head.AftSaveAddInfo == "")
{
if (cEtcItemHP != null) cEtcItemHP.CANCEL_DIV = PosConst.CANCEL_DIV.CANCEL;
}
else
{
IPaymentUs cHappyPoint = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.POINTHAPPYPOINT_SAVE_CHINA);
if (cEtcItemHP != null && PosMstManager.GetPosOption(POS_OPTION.OPT030) == "1") // HP 자동적립 처리(0:사용안함, 1:사용함)
{
// 해피포인트 적립 완료 처리
sRet = cHappyPoint.SetPayment(new string[] { PosKey.MENU_KEY.HAPPY_POINT_SAVE_CHINA, cEtcItemHP.OCCUR_ENTRY_05, cEtcItemHP.OCCUR_ENTRY_01, m_cTrnStatus.Head.AftSavePoint.ToString(), "1" });
if (sRet != UserCom.RST_OK)
{
ArrayList alEtcItem = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM); // 기타 내역 받아 오기
foreach (Column.TR_ETC.DATA cEtcItem in alEtcItem)
{
if (cEtcItem.CANCEL_DIV == ItemConst.PAY_CANCEL_DIV.CANCEL) continue;
if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.SAVEPOINT)
{
cEtcItem.CANCEL_DIV = PosConst.CANCEL_DIV.CANCEL;
}
}
}
}
else
{
// 거래완료시 HP미등록 적립화면 사용여부(0:사용안함, 1:사용함)(2017.06.05)
//해피스테이션 삭제 2019.04.22
//if (cEtcItemHP != null || PosMstManager.GetPosOption(POS_OPTION.OPT047) != "0")
//{
// // 해피포인트 카드 등록 화면 진행
// sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_POINT_HAPPY_POINT, PosKey.MENU_KEY.HAPPY_POINT, "1" });
//}
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 적립 완료 후 처리
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//// 스템프 캠페인 미적용 정보 삭제
//cCampaingMain.SetCampaignHappyStampInfo("", "", "");
// 적립 완료 시 추후 적립 정보 삭제
cEtcItemHP = null;
foreach (Column.TR_ETC.DATA cEtcItem in alTrEtc)
{
if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue;
if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM
&& (cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.SAVEPOINT || cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.POINT_SAVE_CHINA))
{
// 해피포인트 적립 완료시 추후적립 정보 초기화
m_cTrnStatus.Head.AftSavePoint = 0;
m_cTrnStatus.Head.AftSaveAddInfo = "";
cEtcItemHP = cEtcItem;
break;
}
}
// 추가적립의 추후적립 불가시 초기화
if (m_cTrnStatus.Head.AftSaveAddDiv != "1") m_cTrnStatus.Head.AftSaveAddInfo = "";
// 1원 이하 추후적립 안함.
if (m_cTrnStatus.Head.AftSavePoint < 1 && m_cTrnStatus.Head.AftSaveAddInfo == "")
{
m_cTrnStatus.Head.AftSavePoint = 0;
m_cTrnStatus.Head.AftSaveAddInfo = "";
}
}
else
{
m_cTrnStatus.Head.AftSavePoint = m_cDataService.GetPluTagetAmount(PosKey.MENU_KEY.HAPPY_POINT);
// 캠페인(해피포인트 적립) 설정 처리
ICampaignUs cCampaingMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN);
cCampaingMain.ExecuteCampaignHappyPointSave(PosConst.CAMPAIGN_PAY_KEY.HP_SAVE, null);
// 적립 대상금액 없음
if (m_cTrnStatus.Head.AftSavePoint < 1000 && m_cTrnStatus.Head.AftSaveAddInfo == "")
{
if (cEtcItemHP != null) cEtcItemHP.CANCEL_DIV = PosConst.CANCEL_DIV.CANCEL;
}
else
{
IPaymentExpUs cHappyPoint = (IPaymentExpUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.POINTHAPPYPOINT);
//MoonSeokWoo 2017.11.15 Edit
//자동적립이고 HP 추가 적립 화면 사용을 하는 경우 HP 등록이 되어 있으면 추가 적립화면 체크가 되어 있어도 자동적립 ,
//자동적립이고 HP 추가 적립 화면 사용을 하는 경우 HP 등록이 되어 있지 않으면 추가 적립 화면 활성화
//if (cEtcItemHP != null && PosMstManager.GetPosOption(POS_OPTION.OPT030) == "1") // HP 자동적립 처리(0:사용안함, 1:사용함)
if (PosMstManager.GetPosOption(POS_OPTION.OPT030) == "1") // HP 자동적립 처리(0:사용안함, 1:사용함)
{
if (PosMstManager.GetPosOption(POS_OPTION.OPT047) != "0" && cEtcItemHP == null)
{
//sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_POINT_HAPPY_POINT, PosKey.MENU_KEY.HAPPY_POINT, "1" });
}
//MoonSeokWoo 2017.11.15 Edit
//else if (cEtcItemHP != null && PosMstManager.GetPosOption(POS_OPTION.OPT047) == "0")
else if (cEtcItemHP != null)
{
// 해피포인트 적립 완료 처리
sRet = cHappyPoint.CompletePayment(new string[] { });
if (sRet != UserCom.RST_OK)
{
ArrayList alEtcItem = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM); // 기타 내역 받아 오기
foreach (Column.TR_ETC.DATA cEtcItem in alEtcItem)
{
if (cEtcItem.CANCEL_DIV == ItemConst.PAY_CANCEL_DIV.CANCEL) continue;
if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.SAVEPOINT)
{
cEtcItem.CANCEL_DIV = PosConst.CANCEL_DIV.CANCEL;
}
}
}
}
}
else
{
// 거래완료시 HP미등록 적립화면 사용여부(0:사용안함, 1:사용함)(2017.06.05)
//해피스테이션 삭제 2019.04.22
//if (PosMstManager.GetPosOption(POS_OPTION.OPT047) != "0")
//{
// // 해피포인트 카드 등록 화면 진행
// sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_POINT_HAPPY_POINT, PosKey.MENU_KEY.HAPPY_POINT, "1" });
//}
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 적립 완료 후 처리
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 스템프 캠페인 미적용 정보 삭제
cCampaingMain.SetCampaignHappyStampInfo("", "", "");
// 적립 완료 시 추후 적립 정보 삭제
cEtcItemHP = null;
foreach (Column.TR_ETC.DATA cEtcItem in alTrEtc)
{
if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue;
if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM
&& (cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.SAVEPOINT || cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.POINT_SAVE_CHINA))
{
// 해피포인트 적립 완료시 추후적립 정보 초기화
m_cTrnStatus.Head.AftSavePoint = 0;
m_cTrnStatus.Head.AftSaveAddInfo = "";
cEtcItemHP = cEtcItem;
break;
}
}
// 추가적립의 추후적립 불가시 초기화
if (m_cTrnStatus.Head.AftSaveAddDiv != "1") m_cTrnStatus.Head.AftSaveAddInfo = "";
// 1000원 이하 추후적립 안함.
if (m_cTrnStatus.Head.AftSavePoint < 1000 && m_cTrnStatus.Head.AftSaveAddInfo == "")
{
m_cTrnStatus.Head.AftSavePoint = 0;
m_cTrnStatus.Head.AftSaveAddInfo = "";
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 디지털메뉴보드 I/F
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//#16569 파스쿠찌 드라이브 스루 기능 개발 요청 start
//기존
//if (m_cPosStatus.Base.DmbIf == "1")
//변경
//if (m_cPosStatus.Base.DmbIf == "1" &&
// PosMstManager.GetPosOption(POS_OPTION.OPT554) != "1")
////#16569 파스쿠찌 드라이브 스루 기능 개발 요청 end
//{
// if (cEtcItemHP != null)
// {
// // 디지털메뉴보드 I/F
// IDataServiceUs cDigitalMenuBoard = (IDataServiceUs)sManager.InitServiceInstance(ServiceLists.BSV_BASIC.DLL, ServiceLists.BSV_BASIC.DMB_IF);
// // 포인트적립
// cDigitalMenuBoard.Execute(new string[] { ItemConst.DMB_IRT_ID.POINT_INFO // 전문 구분
// , "HPC" // POINT_DIV
// , cEtcItemHP.OCCUR_ENTRY_12 // APP_DIV (Y:HPC APP, N:그 외)
// , "2" // DIV(1:조회, 2:적립, 3:할인, 4:사용 ...)
// , "" // AMOUNT(포인트사용금액)
// , cEtcItemHP.AMT_ENTRY_01.ToString() // POINT(적립,할인,사용포인트)
// , cEtcItemHP.AMT_ENTRY_05.ToString() // R_POINT(잔여포인트)
// , "" //
// , cEtcItemHP.OCCUR_ENTRY_01 // CARD_NO(마스킹 된 카드 번호)
// , "" // CUST_NAME(고객명)
// , "" }); // CAMPAIGN_INFO
// }
//}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
///// <summary>
///// 해피포인트 적립 완료 처리
///// </summary>
//public void CompleteHappyPointSave()
//{
// string sRet;
// try
// {
// if (PosMstManager.GetPosOption(POS_OPTION.OPT316) == "0") return; // 해피포인트 업무 사용 여부(0:사용안함, 1:사용함)
// if (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.REFUND) return;
// // 상품권 판매 or 선불카드 판매 경우!
// if (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.CHARGESALE.PREPAID || m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.CHARGESALE.GIFT) return;
// IPaymentExpUs cHappyPoint = (IPaymentExpUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.POINTHAPPYPOINT);
// // 해피포인트 카드 등록 여부 체크
// Column.TR_ETC.DATA cEtcItemHP = null;
// ArrayList alTrEtc = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM);
// foreach (Column.TR_ETC.DATA cEtcItem in alTrEtc)
// {
// if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue;
// if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.SAVEPOINT)
// {
// cEtcItemHP = cEtcItem;
// break;
// }
// }
// if (cEtcItemHP == null)
// {
// // 해피포인트 사용 해피포포인트 적립 처리
// ArrayList alPayment = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM);
// foreach (Column.TR_PAYMENT.DATA cPayItem in alPayment)
// {
// if (cPayItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue;
// if (cPayItem.PAY_WAY_CD != ItemConst.TR_ITEM_ID.POINT_ITEM || cPayItem.PAY_DTL_CD_01 != ItemConst.TR_ITEM_ID.POINT_USE.HAPPY_POINT) continue;
// // 해피포인트 조회
// string[] saRecvdData = null;
// sRet = cHappyPoint.SearchPayment(new string[] { cPayItem.OCCUR_ENTRY_05, cPayItem.OCCUR_ENTRY_01, cPayItem.CanFiller1, "0" }, ref saRecvdData);
// if (sRet == UserCom.RST_OK)
// {
// // 해피포인트 카드 등록 처리
// sRet = cHappyPoint.SetPayment(new string[] { cPayItem.OCCUR_ENTRY_05, cPayItem.OCCUR_ENTRY_01, cPayItem.CanFiller1, "0", cPayItem.OCCUR_ENTRY_23 });
// if (sRet == UserCom.RST_OK)
// {
// cEtcItemHP = (Column.TR_ETC.DATA)cHappyPoint.GetPayment(new string[] { });
// break;
// }
// }
// }
// }
// // 해피포인트 카드가 등록되어 있지 않다면 제휴 카드 체크
// bool bCoopCardExist = false;
// if (cEtcItemHP == null)
// {
// // 제휴카드 해피포포인트 적립 처리
// ArrayList alPayment = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM);
// foreach (Column.TR_PAYMENT.DATA cPayItem in alPayment)
// {
// if (cPayItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue;
// if (cPayItem.PAY_WAY_CD != ItemConst.TR_ITEM_ID.CREDITCARD_ITEM || cPayItem.PAY_DTL_CD_01 != ItemConst.TR_ITEM_ID.CREDITCARD.CREDIT_CARD) continue;
// // 제휴카드 체크
// if (cPayItem.PAY_DTL_CD_03 != "M")
// {
// // 해피포인트 제휴카드 체크
// DataTable dtCardInfo = m_cMstPayDcService.Select(new string[] { PosMst.MST_CARD_PREFIX.TABLE_NAME, cPayItem.OCCUR_ENTRY_01.Substring(0, 6), "H" });
// if (dtCardInfo != null && dtCardInfo.Rows.Count > 0)
// {
// foreach (DataRow dr in dtCardInfo.Rows)
// {
// int nLoc = CmUtil.GetDataRowInt(dr, PosMst.MST_CARD_PREFIX.DATA.LOC);
// string sCheckValue = CmUtil.GetDataRowStr(dr, PosMst.MST_CARD_PREFIX.DATA.CHECK_VAL).Trim();
// if (nLoc >= 33 && sCheckValue != "")
// {
// if (cPayItem.OCCUR_ENTRY_23 != "" && cPayItem.OCCUR_ENTRY_23.Substring(33 - nLoc).StartsWith(sCheckValue) == true)
// {
// bCoopCardExist = true;
// }
// }
// else
// {
// bCoopCardExist = true;
// }
// if ( bCoopCardExist == true ) break;
// }
// }
// }
// // 마이원카드 이거나 제휴카드 이면
// if (cPayItem.PAY_DTL_CD_03 == "M" || bCoopCardExist == true)
// {
// // 해피포인트 조회
// string[] saRecvdData = null;
// sRet = cHappyPoint.SearchPayment(new string[] { cPayItem.OCCUR_ENTRY_05, cPayItem.OCCUR_ENTRY_01, cPayItem.CanFiller1, "0" }, ref saRecvdData);
// if (sRet == UserCom.RST_OK)
// {
// // 해피포인트 카드 등록 처리
// sRet = cHappyPoint.SetPayment(new string[] { cPayItem.OCCUR_ENTRY_05, cPayItem.OCCUR_ENTRY_01, cPayItem.CanFiller1, "0", cPayItem.OCCUR_ENTRY_23 });
// if (sRet == UserCom.RST_OK) cEtcItemHP = (Column.TR_ETC.DATA)cHappyPoint.GetPayment(new string[] { });
// }
// }
// }
// }
// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// // 해피포인트 적립 금액 계산
// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// // 해피포인트 기본적립 대상 금액 획득
// m_cTrnStatus.Head.AftSavePoint = m_cDataService.GetPluTagetAmount(PosKey.MENU_KEY.HAPPY_POINT);
// if (cEtcItemHP == null)
// {
// //if (m_cTrnStatus.Head.AftSavePoint == 0 && m_cTrnStatus.Head.AftSaveAddInfo == "") return; // 적립 대상금액 없음
// if (PosMstManager.GetPosOption(POS_OPTION.OPT029) != "0") // HP 적립확인 처리(0:사용안함, 1:사용함)
// {
// // 해피포인트 카드 등록 화면 진행
// sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_POINT_HAPPY_POINT, PosKey.MENU_KEY.HAPPY_POINT, "1" });
// }
// }
// else
// {
// // 캠페인(해피포인트 적립) 설정 처리
// ICampaignUs cCampaingMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN);
// cCampaingMain.ExecuteCampaignHappyPointSave(PosConst.CAMPAIGN_PAY_KEY.HP_SAVE, null);
// if (m_cTrnStatus.Head.AftSavePoint == 0 && cEtcItemHP.HP_ADD_ACCUME == "") // 적립 대상금액 없음
// {
// cEtcItemHP.CANCEL_DIV = PosConst.CANCEL_DIV.CANCEL;
// return;
// }
// if (PosMstManager.GetPosOption(POS_OPTION.OPT030) != "1") // HP 자동적립 처리(0:사용안함, 1:사용함)
// {
// // 해피포인트 카드 등록 화면 진행
// sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_POINT_HAPPY_POINT, PosKey.MENU_KEY.HAPPY_POINT, "1" });
// }
// else
// {
// // 해피포인트 적립 완료 처리
// sRet = cHappyPoint.CompletePayment(new string[] { });
// }
// }
// }
// catch (Exception ex)
// {
// WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
// System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
// }
//}
private bool ItemSearch()
{
bool bRet = false;
try
{
//충전, 판매 거래 경우 아닌 경우 만 사용 가능!
if (m_cTrnStatus.Head.TradeKind.StartsWith(ItemConst.TRAN_KIND.CHARGESALE.DELIMITER) == true)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0364);
}
else
{
string sLossCode = string.Empty;
sLossCode = WinBasic.ShowForm(new string[] { FormManager.FORM_SAL_ITEM_SEARCH });
//코드 받아 오기
if (sLossCode != UserCom.RST_ERR)
{
string[] aParam = sLossCode.Split(new string[] { "^" }, StringSplitOptions.None);
if (aParam.Length > 0)
{
for (int iRow = 0; iRow < aParam.Length; iRow++)
{
if (string.IsNullOrEmpty(aParam[iRow]) == false)
RegisterPluItem("", PosConst.SALE_PLU_INPUT_TYPE.MENUKEY + aParam[iRow], "");
}
}
}
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return bRet;
}
/// <summary>
/// 직전 영수증 발행
/// </summary>
/// <returns></returns>
private bool LastDealPrint()
{
bool bRet = false;
try
{
string sRet = m_cSaleComplete.PosSaleLastRePrint(new string[] { });
if (sRet == UserCom.RST_OK)
{
bRet = true;
}
else
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0003);
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return bRet;
}
/// <summary>
/// 예약 등록
/// </summary>
/// <returns></returns>
private bool RegSaleReservations()
{
bool bRet = false;
try
{
// 판매LOSS 셋팅
if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_WAIT)
{
string sRet = WinSale.ShowForm(new string[] { FormManager.FORM_SAL_RESERVATION_REG });
if (sRet != UserCom.RST_OK) return false;
ArrayList alReservedCustInfo = (ArrayList)StateObject.GetItemObject(Column.TR_RESERV_INFO.ITEM);
if (alReservedCustInfo.Count == 0)
{
//에러
return false;
}
else
{
Column.TR_RESERV_INFO.DATA clReservedCustInfo = (Column.TR_RESERV_INFO.DATA)alReservedCustInfo[0];
m_cTrnStatus.Head.ReserveNo = clReservedCustInfo.RESERV_NO;
m_cTrnStatus.Head.ReserveYmd = clReservedCustInfo.RESERV_DT;
}
m_cTrnStatus.Head.TradeDiv = ItemConst.TRAN_DIV.NORMAL;
m_cTrnStatus.Head.TradeKind = ItemConst.TRAN_KIND.UNDECIDED.RESERVATION_REG;
// 판매화면
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
cFormSaleMain.DisplayInit(false, true);
bRet = true;
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return bRet;
}
/// <summary>
/// 예약 결제 등록
/// </summary>
/// <returns></returns>
private void RegPayReservations()
{
try
{
string sRet = UserCom.RST_ERR;
if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return;
//예약 완료일때는 등록 할 수 없음
if (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.UNDECIDED.RESERVATION_COMPLETE)
{
//예약 완료 거래에서는 등록 할 수 없습니다
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0639);
return;
}
IPaymentUs m_ReservedPay = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.RESERVED_PAY);
sRet = m_ReservedPay.SetPayment(new string[] { m_cTrnStatus.Sale.RemainPayAmt.ToString() });
if (sRet != UserCom.RST_OK) return;
CheckSaleComplete(); // 결제완료 체크
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
/// <summary>
/// 예약 결제 완료
/// </summary>
/// <returns></returns>
private bool RegSaleReservedFinish()
{
bool bRet = false;
try
{
//정상 거래 인지 체크
if (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL && m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE)
{
string sRet = WinSale.ShowForm(new string[] { FormManager.FORM_SAL_RESERVATION_FNS });
if (sRet != UserCom.RST_OK)
{
// 판매화면
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
// 판매모드 변경
cFormSaleMain.DisplayInit(false, true);
return false;
}
// 상품 내역 불러오기
ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
if (alPluItem.Count > 0)
{
// 상품 판매가 재계산
m_cPluService.ItemAmountExeccute(false, false);
// 판매화면
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
// 판매모드 변경
m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING;
cFormSaleMain.DisplayInit(false, true);
// 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus)
cFormSaleMain.DisplayItem(0, false);
m_cTrnStatus.Head.TradeDiv = ItemConst.TRAN_DIV.NORMAL;
m_cTrnStatus.Head.TradeKind = ItemConst.TRAN_KIND.UNDECIDED.RESERVATION_COMPLETE;
m_cDataService.UpdatePayAmount();
ExecuteSaleMainProcess(PosKey.MENU_KEY.PAYMENTS, "", "", "");
}
}
else
{
//판매 거래에서만 가능합니다.
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return bRet;
}
/// <summary>
/// TakeInOut
/// </summary>
/// <returns></returns>
private bool SetTakeInOut()
{
try
{
if (CmUtil.IsNull(PosMstManager.GetPosOption(POS_OPTION.OPT304), "1") == "0")
{
//해당 기능은 POS 옵션에서 미사용으로 되어 있습니다.
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0414);
return false;
}
//Take In/Out
string sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_SAL_TAKE_IN_OUT });
if (sRet.Equals(UserCom.RST_OK))
{
ISalePluItemUs m_cPluService = (ISalePluItemUs)sManager.InitServiceInstance(ServiceLists.BSV_SALE.DLL, ServiceLists.BSV_SALE.SALE_PLU_ITEM);
m_cPluService.ItemAmountExeccute(true, true);
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
//m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING;
//cFormSaleMain.DisplayInit(false, true);
cFormSaleMain.DisplayItem(1, false);
//cFormSaleMain.DisplayItem(0, false);
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return true;
}
/// <summary>
/// 영수증 재발행
/// </summary>
/// <returns></returns>
private bool SaleReReceiptRePrint()
{
try
{
// 영수증 재발행 시 프린터 데몬 Stop / Start(2017.09.04)
//#20180329 프린터 간헐적 미출력 증상 수정 start
//출력 할때 마다 open, close 하는 부분 한번만 하도록 수정
//기존
/*
if (m_cPosStatus.Base.OlePosPrinterController == PosConst.POS_DEVICE_CONTROLLER.RS232)
{
IPosPrinterUs cPrinterDaemon = (IPosPrinterUs)sManager.InitServiceInstance(ServiceLists.AGENT_OLEDEVICE.DLL, ServiceLists.AGENT_OLEDEVICE.DEVICE_POSPRINTER);
cPrinterDaemon.StopPrinterDaemon();
System.Threading.Thread.Sleep(300);
cPrinterDaemon.StartPrinterDaemon();
}
*/
//변경
#if(PRT_OPENCLOSE) //프린터 포트 동작 변경시
#else
//#20180530 영수증 재발행시 프린터 데몬 stop 기능 주석 start
/*
if (m_cPosStatus.Base.OlePosPrinterController == PosConst.POS_DEVICE_CONTROLLER.RS232)
{
IPosPrinterUs cPrinterDaemon = (IPosPrinterUs)sManager.InitServiceInstance(ServiceLists.AGENT_OLEDEVICE.DLL, ServiceLists.AGENT_OLEDEVICE.DEVICE_POSPRINTER);
cPrinterDaemon.StopPrinterDaemon();
System.Threading.Thread.Sleep(300);
cPrinterDaemon.StartPrinterDaemon();
}
*/
//#20180530 영수증 재발행시 프린터 데몬 stop 기능 주석 end
#endif
//#20180329 프린터 간헐적 미출력 증상 수정 end
// string sRet = WinSale.ShowForm(new string[] { FormManager.FORM_SAL_RECEIPT_REPRINT, "SALE" });
var arg = m_cPosStatus.Sale.EtcOperateMode == PosConst.ETC_OPERATION_MODE.MENU_EXECUTE ? "" : "SALE";
string sRet = WinSale.ShowForm(new string[] { FormManager.FORM_SAL_RECEIPT_REPRINT, arg });
if (m_cPosStatus.Sale.EtcOperateMode == PosConst.ETC_OPERATION_MODE.MENU_EXECUTE) return true;
if (sRet != UserCom.RST_OK)
{
// 판매화면
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
// 판매모드 변경
cFormSaleMain.DisplayInit(false, true);
return false;
}
// 상품 내역 불러오기
ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
if (alPluItem.Count > 0)
{
// 상품 판매가 재계산
m_cPluService.ItemAmountExeccute(true, true);
// 판매화면
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
// 판매모드 변경
m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING;
cFormSaleMain.DisplayInit(false, true);
// 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus)
cFormSaleMain.DisplayItem(0, false);
}
return true;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return true;
}
/// <summary>
/// 교통카드 조회
/// </summary>
private void SchTMoney(string sMenuKey)
{
try
{
string sRet = UserCom.RST_ERR;
// 신용카드 화면 진행
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_TMONEY_SEARCH, sMenuKey });
if (sRet != UserCom.RST_OK) return;
//승인 요청 처리
CheckSaleComplete(); // 결제완료 체크
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
/// <summary>
/// 영수증 반품
/// </summary>
/// <returns></returns>
private bool SaleRefundReceipt()
{
try
{
string sRet = WinSale.ShowForm(new string[] { FormManager.FORM_SAL_RETURN_RECEIPT });
if (m_cPosStatus.Sale.EtcOperateMode == PosConst.ETC_OPERATION_MODE.MENU_EXECUTE) return true;
if (sRet != UserCom.RST_OK)
{
// 판매화면
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
// 판매모드 변경
cFormSaleMain.DisplayInit(false, true);
return false;
}
// 상품 내역 불러오기
ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
if (alPluItem.Count > 0)
{
// 상품 판매가 재계산
m_cPluService.ItemAmountExeccute(true, true);
// 판매화면
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
// 판매모드 변경
m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING;
cFormSaleMain.DisplayInit(false, true);
// 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus)
cFormSaleMain.DisplayItem(0, false);
}
return true;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return false;
}
/// <summary>
/// 수정 고객수
/// </summary>
/// <returns></returns>
private bool EditCustCnt()
{
bool bRet = false;
try
{
// 고객수 입력
if (PosMstManager.GetPosOption(POS_OPTION.OPT004) == "0")
{
//옵션 미사용
WinManager.ErrorMessage(string.Format("{0}({1})", MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0414), POS_OPTION.OPT004));
}
else if (PosMstManager.GetPosOption(POS_OPTION.OPT033) != "2" && PosMstManager.GetPosOption(POS_OPTION.OPT033) != "3")
{
//옵션 미사용
WinManager.ErrorMessage(string.Format("{0}({1})", MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0414), POS_OPTION.OPT033));
}
else
{
if (PosMstManager.GetPosOption(POS_OPTION.OPT033) == "2") //상세고객수
{
string sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_SAL_AGE, "" });
}
else if (PosMstManager.GetPosOption(POS_OPTION.OPT033) == "3") //고객수
{
string sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_USER_INPUT_DATA, PosConst.FRM_INPUT_DATA.GUEST_CNT });
if (sRet != UserCom.RST_ERR)
{
m_cTrnStatus.Head.CustCnt = CmUtil.IntParse(sRet);
}
}
bRet = true;
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return bRet;
}
#region
/// <summary>
/// 세브란스 직원식 상품 등록 체크
/// </summary>
/// <param name="sFuncCode"></param>
/// <returns></returns>
public string SeveranceiTemCheck(string sMenuKey)
{
string sRet = UserCom.RST_ERR;
try
{
// -------------------------------------------------------------------------------------------
if (sMenuKey != PosKey.MENU_KEY.SEVERANCE_PAYMENTS && sMenuKey != PosKey.MENU_KEY.OTHER_PAYMENTS)
{
if (PosMstManager.GetPosOption(POS_OPTION.OPT034) == "1") //세브란스 일 경우
{
ArrayList aSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
m_cTrnStatus.Sale.SetSeveranceiTemUse = false;
for (int iLoop = 0; iLoop < aSaleItem.Count; iLoop++)
{
Column.TR_PLU.DATA cSaleItem = (Column.TR_PLU.DATA)aSaleItem[iLoop];
if (cSaleItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL || cSaleItem.CANCEL_DIV_MAIN == PosConst.CANCEL_DIV.CANCEL) continue; // 지정취소
if (cSaleItem.SEVERANCE_MENU_DIV == "1" && cSaleItem.NONSALES_RSN_CD == "0")
{
// 세브란스 직원식 상품 존재 여부
m_cTrnStatus.Sale.SetSeveranceiTemUse = true;
break;
}
}
if (m_cTrnStatus.Sale.SetSeveranceiTemUse == true && m_cTrnStatus.Sale.SetSeveranceNormalPay != true)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0265);
return sRet;
}
}
}
sRet = UserCom.RST_OK;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return sRet;
}
#endregion
/// <summary>
/// 해피포인트 추후 적립
/// </summary>
/// <returns></returns>
private bool HappyPointAfterSave()
{
try
{
string sRet = WinSale.ShowForm(new string[] { FormManager.FORM_SAL_HPP_APPROVAL_LATER });
if (sRet != UserCom.RST_OK) return false;
return true;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return false;
}
/// <summary>
/// 단골매장등록
/// </summary>
/// <returns></returns>
private bool HappyPointRegularCust()
{
try
{
string sRet = WinPay.ShowForm(new string[] { FormManager.FORM_HPP_REGULAR_CUST });
if (sRet != UserCom.RST_OK) return false;
return true;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return false;
}
/// <summary>
/// 배달(콜센터, 배달의민족) 등록 처리
/// </summary>
/// <returns></returns>
private void PayOrderDelivery(string sMenuKey)
{
string sRet = UserCom.RST_ERR;
try
{
if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return;
if (m_cTrnStatus.Head.TradeKind != ItemConst.TRAN_KIND.NORMAL.SALE) return;
IPaymentUs cPaySvr = (IPaymentUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.SALEDELIVERY);
sRet = cPaySvr.SetPayment(new string[] { sMenuKey });
if (sRet != UserCom.RST_OK) return;
//IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
//cFormSaleMain.DisplayItem(1, false);
CheckSaleComplete(); // 결제완료 체크
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
/// <summary>
/// 수동 돈통 오픈
/// </summary>
private void OpenManualCashdrawer()
{
try
{
if (m_cPosStatus.Base.TrainingFlag == "1") //연습모드이면...
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0491);
}
else
{
m_cSaleComplete.OpenManualCashdrawer();
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
/// <summary>
/// 해피포인트 현황 조회
/// </summary>
private void HappyBuzzSearch()
{
try
{
WinBasic.ShowForm(new string[] { FormManager.FORM_HAPPY_BUZZ, PosKey.MENU_KEY.HAPPY_BUZ_SEARCH, "" });
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
/// <summary>
/// 온라인쿠폰(중국)
/// </summary>
private void PayOnLineCoupon(string sMenuKey)
{
string sRet = UserCom.RST_ERR;
try
{
if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return;
if (sMenuKey == PosKey.MENU_KEY.ONLINE_COUPONS)
{
// 온라인쿠폰 등록
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_ONLINE_COUPON, sMenuKey });
if (sRet != UserCom.RST_OK) return;
//// 판매화면
//IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
//cFormSaleMain.DisplayItem(1, false); // 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus)
CheckSaleComplete(); // 결제완료 체크
}
else
{
// 온라인쿠폰 조회
sRet = WinSale.ShowForm(new string[] { FormManager.FORM_PAY_ONLINE_COUPON_SCH, sMenuKey });
if (sRet != UserCom.RST_OK) return;
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
/// <summary>
/// 수동주방출력처리
/// </summary>
/// <remarks>
/// 주방프린터 수동출력 처리 0:자동 1:수동(프린터선택) 2:수동(상품선택)
/// </remarks>
public void MenualOrderKtchProcess()
{
try
{
//#20171020 log 추가
UserLog.WriteLogFile(UserCom.LOG_IOS, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
"주방프린트사용여부 : " + PosMstManager.GetPosOption(POS_OPTION.OPT506));
// 주방프린트 사용(0 : 미사용, 1 : 사용)
if (PosMstManager.GetPosOption(POS_OPTION.OPT506) != "1") return;
string arg = string.Empty;
switch (PosMstManager.GetPosOption(POS_OPTION.OPT425))
{
case "1": arg = FormManager.FORM_MENUAL_ORDER_KPS; break;
case "2": arg = FormManager.FORM_MENUAL_ORDER_ITEM; break;
default: return;
}
WinBasic.ShowForm(new string[] { arg });
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
ex.Message);
}
}
/// <summary>
/// 주문내역서 출력
/// </summary>
/// <returns></returns>
private bool OrderBillPrint()
{
try
{
ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
if (alPluItem.Count == 0) return false;
// 주문 내역서 출력 처리
ISaleCompleteUs cSaleComplete = (ISaleCompleteUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.SALE_COMPLETE);
string sReturn = cSaleComplete.ExecuteOrderBillReceipt();
return true;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return false;
}
/// <summary>
/// ServiceCharge 등록
/// </summary>
/// <returns></returns>
private bool RegServiceChrge(string sFuncCode)
{
try
{
if (m_cPosStatus.Mst.SeriveFreeApplyDiv != ItemConst.SERVICE_CHARGE_APPLY_DIV.NONE)
{
//점포 마스터에 봉사료 적용대상 구분이 적용 안함으로 되어 있어야 사용 가능합니다.
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0629);
return false;
}
string sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_SERVICE_CHARGE, sFuncCode });
if (sRet != UserCom.RST_OK) return false;
m_cDataService.UpdatePluAmount(true);
// 판매화면
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
cFormSaleMain.DisplayPayment(); // 결제등록정보 화면표시
return true;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return false;
}
/// <summary>
/// 주방주문서 영수증프린터 출력
/// </summary>
public void KtchOrderSheetToBillPrint()
{
try
{
// 주방장치 출력여부 확인
if (PosMstManager.GetPosOption(POS_OPTION.OPT506) != "1") return;
// 영수증프린터 사용여부 확인
if (m_cDevStatus.Printer.UseYn == false) return;
// Mod, 2017.04.10,
// KPS 데몬실행여부 확인
//if (m_cPosStatus.Base.PosType == PosConst.POS_TYPE.DEFERRED_PAYMENT &&
// m_cPosStatus.Base.PosCommunicationType != PosConst.MAIN_POS_DIV.MAIN_POS) return;
// 주방프린터 오류코드 취득 및 초기화
//잠시주석 2019.04.25
string ktchErrorCode = m_cPosStatus.Sale.KtchPrintErrorCode;
//if (string.IsNullOrWhiteSpace(ktchErrorCode)) return;
m_cPosStatus.Sale.KtchPrintErrorCode = string.Empty;
string ret = UserCom.RST_ERR;
// 주방프린터와 영수증프린터가 동일장치의 경우 주문서 출력
ret = m_cOrderSheetSvr.Execute(new string[] { "ORDER_SHEET" });
if (ktchErrorCode.StartsWith("XXXX"))
{
if (ret != UserCom.RST_OK) m_cPosStatus.Sale.KtchPrintErrorCode = ktchErrorCode;
return;
}
// 주방프린터 오류 시 영수증프린터에 주문서 출력
var msg = MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0642);
var tmp = ktchErrorCode.Split('|');
if (tmp.Length >= 3)
{
var err = string.Empty;
//switch (tmp[0])
//{
// case "0001": err = "(Printer open failed)"; break;
// case "0002": err = "(Printer open failed)"; break;
// case "0003": err = "(Printer power off)"; break;
// case "0004": err = "(No paper)"; break;
// case "0005": err = "(Printer cover open)"; break;
//}
msg += string.Format("\n#Kitchen Printer No. [{0}] {1} {2})", tmp[1], tmp[2], err);
}
// 주방프린터 에러 시 팝업 띄우지 않고 메인에서 무조건 출력(20170520)
//if (WinManager.QuestionMessage(msg) == false)
//{
// WinManager.ConfirmMessage(POS_MESSAGE.ERROR.MSG_0643);
// m_cOrderSheetSvr.Execute(new string[] { "CANCEL_BILLPRT" });
// return;
//}
ret = m_cOrderSheetSvr.Execute(new string[] { "ORDER_REPRINT" });
if (ret != UserCom.RST_OK)
{
m_cPosStatus.Sale.KtchPrintErrorCode = ktchErrorCode;
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
ex.Message);
}
}
/// <summary>
/// 베트남 신용카드(VIP POINT) - 프리픽스 캠페인 적용
/// </summary>
/// <returns></returns>
private bool PayVipPoint(string sFuncCode)
{
try
{
string sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_VIP_POINT, sFuncCode });
if (sRet != UserCom.RST_OK) return false;
CheckSaleComplete(); // 결제완료 체크
return true;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return false;
}
/// <summary>
/// 선택 상품 할인
/// </summary>
/// <returns></returns>
private bool MultiItemDc(string sFuncCode)
{
try
{
string sRet = WinPay.ShowForm(new string[] { FormManager.FORM_MULTI_DCITEM, sFuncCode });
//if (sRet != UserCom.RST_OK) return false;
// 상품 판매가 재계산
m_cPluService.ItemAmountExeccute(true, true);
// 판매화면
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
// 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus)
cFormSaleMain.DisplayItem(0, false);
return true;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return false;
}
/// <summary>
/// 판매 대기중 기능키 판매일자 체크
/// </summary>
/// <returns></returns>
private bool WaitSaleDataCheck(string sMenuKey)
{
try
{
bool bTradeCheck = false;
switch (sMenuKey)
{
//체크
case PosKey.MENU_KEY.GIFT_SALE: // 상품권판매
case PosKey.MENU_KEY.PREPAID_CARD: // 선불카드판매
case PosKey.MENU_KEY.RETURN_ITEM: // 낱개반품
case PosKey.MENU_KEY.SALE_LOSS: // 판매로스
case PosKey.MENU_KEY.CASH_APPROVAL_LATER: // 사후 현금영수증
case PosKey.MENU_KEY.LAST_DEAL_PRINT: // 직전영수증 출력
case PosKey.MENU_KEY.RESERVATIONS_REGISTER: // 예약등록
case PosKey.MENU_KEY.RESERVATION_COMPLETED: // 예약완료
case PosKey.MENU_KEY.HP_GIFT_CHARGED: // 해피 기프트 충전
case PosKey.MENU_KEY.RETURN_RECEIPT: // 영수증 반품
case PosKey.MENU_KEY.HPP_APPROVAL_LATER: // 추후적립
case PosKey.MENU_KEY.HAPPY_ORDERS: // 해피오더
case PosKey.MENU_KEY.HP_REGULAR_CUST: // 단골매장등록
case PosKey.MENU_KEY.ORDER_COMPLETED: // 주문완료
bTradeCheck = true;
break;
}
if (bTradeCheck == true)
{
// 영업일자 체크
if (CmUtil.LongParse(m_cPosStatus.Base.SaleDate) < CmUtil.LongParse(System.DateTime.Now.ToString("yyyyMMdd")))
{
//#13342 개점/마감시간 허용 시간 제한 start, phj
//기존
/*
if (CmUtil.LongParse(System.DateTime.Now.ToString("HH")) > 5)
{
WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0184));
return false;
}
*/
//변경
IDataCommonUs m_cMstCmm = (IDataCommonUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_COMMON);
string sOpenTime = string.Empty;
sOpenTime = m_cMstCmm.MstCmmSearch("T0032", "1"); //POS 개점 필수시간
if (sOpenTime != "")
{
if (CmUtil.LongParse(System.DateTime.Now.ToString("HHMM")) > CmUtil.LongParse(sOpenTime))
{
WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0184));
return false;
}
}
else
{
if (CmUtil.LongParse(System.DateTime.Now.ToString("HH")) > 5)
{
WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0184));
return false;
}
}
//#13342 개점/마감시간 허용 시간 제한 end, phj
}
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return true;
}
/// <summary>
/// 생일초 계산
/// </summary>
/// <param name="sFuncCode"></param>
/// <returns></returns>
private bool BrithDayCandle(string sFuncCode)
{
try
{
string sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_BRITHDAY_CANDLE, sFuncCode });
if (sRet != UserCom.RST_OK) return false;
return true;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return false;
}
/// <summary>
/// 결제 상단 MOT 변경
/// </summary>
/// <param name="sFuncCode"></param>
private void SetPayMainTopMot(string sFuncCode)
{
try
{
// 판매화면
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
cFormSaleMain.SetTopMot(sFuncCode);
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
#region
/// <summary>
/// 시리얼 변환 프로그램 체크
/// </summary>
private void SerialMsrToEmul()
{
try
{
//#20171019 IC리더기 사용시 O2MSR 실행 안하도록 수정 start
//기존
//if (m_cDevStatus.Msr.UseYn == true && m_cPosStatus.Base.OlePosMsrController == "2")
//변경
if (m_cDevStatus.Msr.UseYn == true && m_cPosStatus.Base.OlePosMsrController == "2" && m_cDevStatus.ICReader.UseYn == false)
//#20171019 IC리더기 사용시 O2MSR 실행 안하도록 수정 end
{
System.Diagnostics.Process[] p = System.Diagnostics.Process.GetProcessesByName(PosConst.MSR_SERIAL_EMULATOR.APP_PROCESS);
if (p.GetLength(0) > 0) return;
string strappname = BaseCom.NxBinPath + PosConst.MSR_SERIAL_EMULATOR.APP_FILE;
System.Diagnostics.Process.Start(strappname);
}
}
catch (Exception ex)
{
UserLog.WriteLogFile(UserCom.LOG_ERROR, System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
#endregion
//#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 start
//기존
/*
//17.05.18 dkshin 쇼킹박스 추가
/// <summary>
/// 쇼킹박스 - 영수증 출력
/// </summary>
//private ISaleReceipt m_cTradeDeal = null;
private bool ShockingBox(string sInPutData)
*/
//변경
private bool ShockingBox(string sMenuKey, string sInPutData)
//#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 end
{
try
{
//#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 start
#region
/*
//쇼킹박스 영수증 출력
//m_cTradeDeal.PrintReceipt("test");
//sPrtData = string.Format("{0:#,##0}", m_cTrnStatus.Sale.RemainPayAmt);
if (sInPutData != string.Empty)
{//쇼킹박스 상품 불러오기
IHoldDeal m_cHoldDeal = (IHoldDeal)sManager.InitServiceInstance(ServiceLists.BSV_SALE.DLL, ServiceLists.BSV_SALE.HOLD_DEAL);
DataTable dt = m_cHoldDeal.SearchShockingBoxDealList(sInPutData);
if (dt == null || dt.Rows.Count == 0)
{
// 거래내역이 존재하지 않습니다.
WinManager.ConfirmMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0269));
return false;
}
else
{
DataRow dr = dt.Rows[0];
//m_cTrnStatus.Head.TradeKind = ItemConst.TRAN_KIND.LOG.SHOCKING_BOX;
m_cHoldDeal.LoadLocalTranPlu(dr["SALE_DT"].ToString(), dr["POS_NO"].ToString(), dr["REG_NO"].ToString());
m_cHoldDeal.UpdateHoldDeal(dr["SALE_DT"].ToString(), dr["POS_NO"].ToString(), dr["REG_NO"].ToString(), "1", 0, 0);
// 상품 판매가 재계산
m_cPluService.ItemAmountExeccute(true, true);
// 쇼킹박스건 결제인지 체크하기 위해 설정
//m_cTrnStatus.Head.TradeKind = ItemConst.TRAN_KIND.LOG.SHOCKING_BOX;
m_cTrnStatus.Head.ShockingBoxStat = "1";//0:쇼킹박스 완성 1:쇼킹방스불러오기
m_cTrnStatus.Head.ShockingBoxBarcodeData = dr["SALE_DT"].ToString() + dr["REG_NO"].ToString();
// 판매화면
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
// 판매모드 변경
m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING;
cFormSaleMain.DisplayInit(false, true);
// 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus)
cFormSaleMain.DisplayItem(0, false);
}
}
else// 쇼킹박스 처리
{
//정상 거래 인지 체크
if (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL
&& (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE || m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.ETC.LOSS))
{
// 영업일자 체크
if (CmUtil.LongParse(m_cPosStatus.Base.SaleDate) < CmUtil.LongParse(System.DateTime.Now.ToString("yyyyMMdd")))
{
if (CmUtil.LongParse(System.DateTime.Now.ToString("HH")) > 5)
{
WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0184));
return false;
}
}
m_cTrnStatus.Head.TradeKind = ItemConst.TRAN_KIND.LOG.SHOCKING_BOX;
m_cTrnStatus.Head.ShockingBoxStat = "0";
// 쇼킹박스 처리
string sRet = m_cSaleComplete.PosShockingBoxExecute();
if (sRet != UserCom.RST_OK) return false;
// 판매상태 변경
m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_WAIT;
// 판매화면
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
// 거래 완료 후 초기화 처리
cFormSaleMain.DisplayInit(true, true);
// 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus)
cFormSaleMain.DisplayItem(0, true);
}
}
*/
#endregion
#region
string sTradeKind = "";
string sTrade_Stat = "";
string sSale_dt = "";
string sPos_no = "";
string sReg_no = "";
string sOrg_Bill_PosNo = "";
string sOrg_Bill_Dt = "";
string sOrg_Bill_No = "";
string sShockingBoxBarcodeData = "";
string sShockingBoxTradeKind = "";
if (sMenuKey == PosKey.MENU_KEY.ITEMINFO_PRINT)
{
// 상품정보출력(해피오더 랜덤박스)
sTradeKind = ItemConst.TRAN_KIND.HPO_LOG.LANDOM_BOX;
}
else if (sMenuKey == PosKey.MENU_KEY.SHOCKING_BOX)
{
// 쇼킹박스
sTradeKind = ItemConst.TRAN_KIND.LOG.SHOCKING_BOX;
}
IHoldDeal m_cHoldDeal = (IHoldDeal)sManager.InitServiceInstance(ServiceLists.BSV_SALE.DLL, ServiceLists.BSV_SALE.HOLD_DEAL);
if (sInPutData != string.Empty)
{
DataTable dt = m_cHoldDeal.SearchShockingBoxDealList(sInPutData, sTradeKind, "0");
if (dt == null || dt.Rows.Count == 0)
{
// 거래내역이 존재하지 않습니다.
WinManager.ConfirmMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0269));
return false;
}
else
{
DataRow dr = dt.Rows[0];
sTrade_Stat = dr["TRADE_STAT"].ToString();
sSale_dt = dr["SALE_DT"].ToString();
sPos_no = dr["POS_NO"].ToString();
sReg_no = dr["REG_NO"].ToString();
m_cHoldDeal.LoadLocalTranPlu(sSale_dt, sPos_no, sReg_no);
m_cHoldDeal.UpdateHoldDeal(sSale_dt, sPos_no, sReg_no, "1", 0, 0);
// 상품 판매가 재계산
m_cPluService.ItemAmountExeccute(true, true);
// 쇼킹박스건 결제인지 체크하기 위해 설정
m_cTrnStatus.Head.ShockingBoxStat = "1";//0:쇼킹박스 완성 1:쇼킹방스불러오기
m_cTrnStatus.Head.ShockingBoxBarcodeData = sSale_dt + sReg_no;
m_cTrnStatus.Head.ShockingBoxTradeKind = sTradeKind;
// 판매화면
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
// 판매모드 변경
m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_DOING;
cFormSaleMain.DisplayInit(false, true);
// 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus)
cFormSaleMain.DisplayItem(0, false);
}
}
else// 쇼킹박스 처리
{
//정상 거래 인지 체크
if (m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL
&& (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE || m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.ETC.LOSS))
{
// 영업일자 체크
if (CmUtil.LongParse(m_cPosStatus.Base.SaleDate) < CmUtil.LongParse(System.DateTime.Now.ToString("yyyyMMdd")))
{
if (CmUtil.LongParse(System.DateTime.Now.ToString("HH")) > 5)
{
WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0184));
return false;
}
}
sShockingBoxBarcodeData = m_cTrnStatus.Head.ShockingBoxBarcodeData; // 리딩한 바코드번호
sShockingBoxTradeKind = m_cTrnStatus.Head.ShockingBoxTradeKind; // 리딩한 거래종별
m_cTrnStatus.Head.TradeKind = sTradeKind; // 거래종별
m_cTrnStatus.Head.ShockingBoxStat = "0"; //상태
// 쇼킹박스 처리
string sRet = m_cSaleComplete.PosShockingBoxExecute();
if (sRet != UserCom.RST_OK) return false;
// 판매상태 변경
m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_WAIT;
// 판매화면
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
// 거래 완료 후 초기화 처리
cFormSaleMain.DisplayInit(true, true);
// 상품등록 내역 화면 표시(0:LastItem, 1::OldFocus)
cFormSaleMain.DisplayItem(0, true);
//
DataTable dt = m_cHoldDeal.SearchShockingBoxDealList(sShockingBoxBarcodeData, sShockingBoxTradeKind, "1");
if (dt != null && dt.Rows.Count > 0)
{
DataRow dr = dt.Rows[0];
sTrade_Stat = dr["TRADE_STAT"].ToString();
sSale_dt = dr["SALE_DT"].ToString();
sPos_no = dr["POS_NO"].ToString();
sReg_no = dr["REG_NO"].ToString();
sOrg_Bill_PosNo = dr["ORG_BILL_POSNO"].ToString();
sOrg_Bill_Dt = dr["ORG_BILLDT"].ToString();
sOrg_Bill_No = dr["ORG_BILL_NO"].ToString();
// 쇼킹박스 불러오면 trade_stat 1로 변경 -> 쇼킹박스 기능키 클릭하면
// 이 전에 읽어왔던 쇼킹박스건이 trade_stat 0으로 업데이트 안되고 1로 남아있기 때문에
// 다시 바코드 리딩 했을 때 읽어올 수 가 없었음.
// 그렇기 때문에 이 전에 리딩했던번호 trade_stat 0으로 업데이트.
// (trade_stat 1 이고 매출처리가 안된 것)
if (sTrade_Stat == "1" && (sOrg_Bill_PosNo == "" && sOrg_Bill_Dt == "" && sOrg_Bill_No == ""))
{
m_cHoldDeal.UpdateHoldDeal(sSale_dt, sPos_no, sReg_no, "0", 0, 0);
}
}
}
}
#endregion
//#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 end
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return true;
}
//#20170731, 해피기프트카드(코나머니) 개발 Start, srlee
#region ()
/// <summary>
/// 해피기프트카드(코나머니)
/// </summary>
/// <param name="sMenuKey"></param>
private void PayHappyGiftCard(string sMenuKey)
{
string sRet = UserCom.RST_ERR;
try
{
if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return;
// 해피기프트카드(코나머니)
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_HPGIFTCARD, sMenuKey });
if (sRet != UserCom.RST_OK) return;
CheckSaleComplete(); // 결제완료 체크
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
#endregion
//#20170731, 해피기프트카드(코나머니) 개발 End, srlee
//20171013 dkshin 해피기프트(신) IC/RF 충전 및 승인
#region ()
/// <summary>
/// 해피기프트(신) 충전
/// </summary>
/// <param name="sMenuKey"></param>
//private void HappyGiftCardRecharge(string sMenuKey)
private void HappyGiftNewRecharge(string sMenuKey)
{
string sRet = UserCom.RST_ERR;
try
{
if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return;
// 해피기프트(신) 충전
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_SAL_HP_GIFT_NEW_CHARGED, sMenuKey });
if (sRet != UserCom.RST_OK) return;
CheckSaleComplete(); // 결제완료 체크
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
#endregion
#region PayPointMobileUnity () (2017.08.29) -- START
/// <summary>
/// 제휴카드(통합) 할인 처리
/// </summary>
/// <param name="sMenuKey"></param>
private void PayPointMobileUnity(string sMenuKey)
{
string sRet = UserCom.RST_ERR;
try
{
if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return;
if (m_cPosStatus.Mst.CorpDiv == ItemConst.CORP_DIV.PC)
{
ArrayList alPayItem = (ArrayList)StateObject.GetItemObject(Column.TR_PAYMENT.ITEM);
foreach (Column.TR_PAYMENT.DATA cPayItem in alPayItem)
{
if (cPayItem.CANCEL_DIV != PosConst.CANCEL_DIV.NORMAL) continue;
//#20171012 해피포인트 사용 후 통신사 할인 중복 가능 start
//기존
//if (cPayItem.PAY_WAY_CD != ItemConst.TR_ITEM_ID.MOBILECON_ITEM) // 통신사할인 모바일쿠폰과 중복 가능
//변경
if ((cPayItem.PAY_WAY_CD != ItemConst.TR_ITEM_ID.MOBILECON_ITEM) &&
((cPayItem.PAY_WAY_CD != ItemConst.TR_ITEM_ID.POINT_ITEM) || (cPayItem.PAY_DTL_CD_01 != ItemConst.TR_ITEM_ID.POINT_USE.HAPPY_POINT)))
//#20171012 해피포인트 사용 후 통신사 할인 중복 가능 end
{
///////////////////////////////////////
//#20180618_웰컴카드 수정_grayber
// 기존
//WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0392);
// 변경
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0792);
///////////////////////////////////////
return;
}
}
}
else
{
if (m_cTrnStatus.Sale.RecvedPayAmt > 0)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0392);
return;
}
}
// OCB 적립 후 불가
ArrayList alEtc = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM);
foreach (Column.TR_ETC.DATA cEtcItem in alEtc)
{
if (cEtcItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue;
if (cEtcItem.ETC_WAY_CD == ItemConst.TR_ITEM_ID.ETC_INFO_ITEM && cEtcItem.ETC_DTL_CD_01 == ItemConst.TR_ITEM_ID.ETC_INFO.OCB_SAVE)
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0555);
return;
}
}
// 제휴카드(통합) 할인 처리
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_PAY_POINT_MOBILE_UNITY, sMenuKey });
if (sRet != UserCom.RST_OK) return;
CheckSaleComplete(); // 결제완료 체크
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
}
#endregion
//#20171016 스퀘어 점포일 때 실점포 코드로 넘기기 start, phj
#region () , .
private bool OtherItem_DuplicateCheck()
{
bool bResult = true;
string sFrtShopCD = string.Empty;
ArrayList aSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
for (int iRow = 0; aSaleItem.Count > iRow; iRow++)
{
Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)aSaleItem[iRow];
if (cPluItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL) continue;
if (sFrtShopCD == string.Empty)
{
sFrtShopCD = cPluItem.SUB_SHOP_CD;
}
if (sFrtShopCD != cPluItem.SUB_SHOP_CD)
{
bResult = false;
break;
}
}
if (bResult == false)
{
//한 종류의 브랜드 제품만 선택 시 사용할 수 있습니다.
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0738);
}
return bResult;
}
#endregion
//#20171016 스퀘어 점포일 때 실점포 코드로 넘기기 end, phj
//#20171227, 예약증 양식 출력 Start
/// <summary>
/// 예약증 양식 출력
/// </summary>
/// <param name="sFuncCode"></param>
/// <returns></returns>
private bool ReservationFormPrint()
{
try
{
string sRet = m_cSaleComplete.ExecuteReservationForm();
if (sRet != UserCom.RST_OK) return false;
return true;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return false;
}
//#20171227, 예약증 양식 출력 End
//#20180413 웰컴카드 신규기능 추가 start,phj
private bool WelcomeCard_Issue(string sMenuKey, string sOpenKey)
{
string sRet = UserCom.RST_ERR;
if (PosMstManager.GetPosOption(POS_OPTION.OPT516) != "1")
{
WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0790);
return false;
}
try
{
if (m_cTrnStatus.Head.TradeDiv != ItemConst.TRAN_DIV.NORMAL) return false;
sRet = WinPay.ShowForm(new string[] { FormManager.FORM_WELCOMECARD_ISSUE, sMenuKey, sOpenKey }); //sOpenKey 1: 영업메뉴, 2: 결제화면
if (sRet != UserCom.RST_OK) return false;
//CheckSaleComplete(); // 결제완료 체크
return true;
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
ex.Message);
return false;
}
}
//#20180413 웰컴카드 신규기능 추가 end,phj
//#15884 해피오더 실시간 추가재고 등록메뉴 및 알람기능 개발 start
private void HappyOrder_AddInventory_Menu(string sFuncCode)
{
try
{
WinBasic.ShowWebPos(sFuncCode);
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." +
System.Reflection.MethodBase.GetCurrentMethod().Name + "()",
ex.Message);
}
}
//#15884 해피오더 실시간 추가재고 등록메뉴 및 알람기능 개발 end
//#16232 환경부 1회용컵 사용줄이기 관련 테이크인아웃 설정 start
#region
/// <summary>
/// 제조음료 포함 여부 체크
/// </summary>
/// <returns></returns>
public bool ChkProdItemTakeInOutYN()
{
bool bRet = false;
string sQuery = "";
try
{
// 상품정보
ArrayList xSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
for (int iRow = 0; iRow < xSaleItem.Count; iRow++)
{
Column.TR_PLU.DATA cSaleItem = (Column.TR_PLU.DATA)xSaleItem[iRow];
//Take In/Out 부가상품으로 추가된 상품들 일괄 삭제 처리
if (cSaleItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.OPT_MENU &&
(cSaleItem.ITEM_PLU_CD == "9901" || cSaleItem.ITEM_PLU_CD == "9902"))
{
xSaleItem.RemoveAt(iRow);
//삭제된 경우 for문에서 나가지 않도록 row '-' 처리
iRow--;
}
}
// 상품정보
ArrayList aSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM);
for (int iRow = 0; iRow < aSaleItem.Count; iRow++)
{
Column.TR_PLU.DATA cSaleItem = (Column.TR_PLU.DATA)aSaleItem[iRow];
//결제창 진입 전 설정된 Take In/Out 관련 설정값 초기화
//cSaleItem.PROD_TAKEINOUT_YN = "0";
//cSaleItem.PROD_TAKEINOUT_DIV = "";
if (cSaleItem.CANCEL_DIV == PosConst.CANCEL_DIV.CANCEL || cSaleItem.CANCEL_DIV_MAIN == PosConst.CANCEL_DIV.CANCEL)
{
continue; // 지정취소
}
else
{
//공통코드에서 해당 상품이 TakeIn/Out 선택이 필요한 상품인지 대분류 + 중분류로 체크
sQuery = "SELECT * FROM POSMST..MST_CMM \n";
sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' \n";
sQuery += " AND CMM_GRP_CD = 'S0110' \n";
sQuery += " AND SALES_ORG_CD = '" + m_cPosStatus.Base.BrandCd + "' \n";
sQuery += " AND '" + cSaleItem.M_CLSS + "' LIKE (CHAR_VAL_TITLE_VAL_01 + CHAR_VAL_TITLE_VAL_02) + '%' \n";
sQuery += " AND USE_YN = '" + PosConst.MST_USE_YN.YES + "'\n";
DataTable dtTakeInOutInfo = m_cMstService.Select(new string[] { sQuery });
if (dtTakeInOutInfo != null && dtTakeInOutInfo.Rows.Count > 0)
{
cSaleItem.PROD_TAKEINOUT_YN = "1";
bRet = true;
//break;
}
else
{
cSaleItem.PROD_TAKEINOUT_YN = "0";
}
}
}
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
cFormSaleMain.DisplayItem(1, false);
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return bRet;
}
#endregion
#region Take In/Out
/// <summary>
/// 제조음료 Take In/Out 사용여부 체크
/// </summary>
/// <returns></returns>
public bool ChkProdItemTakeInUse()
{
bool sRet = false;
string sQuery = "";
string sCmmTakeInOutUse = "";
string sCmmTakeInOutDiv = "";
try
{
//환경설정 정보가 없으면 공통코드의 기본값으로 설정
if (m_cPosStatus.Base.ProdTakeInOutUse.Trim() == "" || m_cPosStatus.Base.ProdTakeInOutDiv.Trim() == "")
{
//공통코드의 해당 영업조직 기본값 가져오기
sQuery += "SELECT TOP 1 * FROM POSMST..MST_CMM \n";
sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "' \n";
sQuery += " AND CMM_GRP_CD = 'T0040' \n";
sQuery += " AND SALES_ORG_CD = '" + m_cPosStatus.Base.BrandCd + "' \n";
sQuery += " AND USE_YN = '" + PosConst.MST_USE_YN.YES + "'\n";
DataTable dtTakeInOutInfo = m_cMstService.Select(new string[] { sQuery });
if (dtTakeInOutInfo != null && dtTakeInOutInfo.Rows.Count > 0)
{
DataRow drData = dtTakeInOutInfo.Rows[0];
sCmmTakeInOutUse = CmUtil.GetDataRowStr(drData, PosMst.MST_COMMON.DATA.CHAR_VAL_TITLE_VAL_01);
sCmmTakeInOutDiv = CmUtil.GetDataRowStr(drData, PosMst.MST_COMMON.DATA.CHAR_VAL_TITLE_VAL_02);
}
//Take In/Out 사용여부
if (m_cPosStatus.Base.ProdTakeInOutUse.Trim() == "")
{
m_cPosStatus.Base.ProdTakeInOutUse = sCmmTakeInOutUse;
}
//Take In/Out 기본값
if (m_cPosStatus.Base.ProdTakeInOutDiv.Trim() == "")
{
m_cPosStatus.Base.ProdTakeInOutDiv = sCmmTakeInOutDiv;
}
}
if (m_cPosStatus.Base.ProdTakeInOutUse == "1")
{
sRet = true;
}
else
{
sRet = false;
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return sRet;
}
#endregion Take In/Out
#region Take In/Out
/// <summary>
/// 제조음료 Take In/Out 창 표시
/// </summary>
/// <returns></returns>
private bool SetProdTakeInOut()
{
try
{
//Take In/Out
string sRet = WinBasic.ShowForm(new string[] { FormManager.FORM_SAL_TAKE_IN_OUT_PROD });
if (sRet.Equals(UserCom.RST_OK))
{
ISalePluItemUs m_cPluService = (ISalePluItemUs)sManager.InitServiceInstance(ServiceLists.BSV_SALE.DLL, ServiceLists.BSV_SALE.SALE_PLU_ITEM);
m_cPluService.ItemAmountExeccute(true, true);
IFormSaleMainUs cFormSaleMain = (IFormSaleMainUs)FormManager.GetForm(FormManager.FORM_SAL_MAIN);
cFormSaleMain.DisplayItem(1, false);
}
}
catch (Exception ex)
{
WinManager.ExceptionMessage(System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name,
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name + "." + System.Reflection.MethodBase.GetCurrentMethod().Name + "()", ex.Message);
}
return true;
}
#endregion Take In/Out
//#16232 환경부 1회용컵 사용줄이기 관련 테이크인아웃 설정 end
}
}