using System; using System.Text; using System.Collections; using System.Data; using Cosmos.BaseFrame; using Cosmos.UserFrame; using Cosmos.ServiceProvider; using Cosmos.Common; using Cosmos.CommonManager; using System.Windows.Forms; /*-----------------------------------------------------------------------------------------------*/ // 설 명 : 상품등록 관리 기본 기능 // 작 성 자 : // 변경 이력 : /*-----------------------------------------------------------------------------------------------*/ namespace Cosmos.Service { /// /// 상품등록 관리 기본 클래스 /// class SalePluItemBase { protected SManager sManager = new SManager(); // 이 객체를 통해 업무 Service 호출 protected StateServer StateObject = (StateServer)StateServer.GetInstance(); // StateObject : StateServer Object (객체) protected PosStatus m_cPosStatus = new PosStatus(); // 기본정보 참조 protected TranStatus m_cTrnStatus = new TranStatus(); // 거래정보 참조 protected IDatabaseSQL m_cSqlDbService = null; // 데이터베이스 관리 protected IDataProcessUs m_cDataService = null; // 거래데이터 합계금액 계산 및 관리 protected IMasterUs m_cMstService = null; // 마스터 인터페이스 protected IDataCommonUs m_cDataCommon = null; // POS 공통함수 인터페이스 protected ICampaignUs m_cCampaingMain = null; // 캠페인 관리 protected ICustDisplayUs m_cCustDisp = null; // 고객용 화면 관리 frmInputPrc m_cfInPrc = new frmInputPrc(); // 단가 입력 폼 /// /// 상품등록 트란 정보 /// //protected ArrayList m_alTrPluItem = null; public ArrayList m_alTrPluItem = null; /// /// 생성자 /// public SalePluItemBase() { m_cPosStatus = (PosStatus)StateObject.POS; m_cTrnStatus = (TranStatus)StateObject.TRAN; 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_cMstService = (IMasterUs)sManager.InitServiceInstance(ServiceLists.ASV_MASTER.DLL, ServiceLists.ASV_MASTER.POS_MASTER); m_cDataCommon = (IDataCommonUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_COMMON); m_cCampaingMain = (ICampaignUs)sManager.InitServiceInstance(ServiceLists.ASV_CAMPAIGN.DLL, ServiceLists.ASV_CAMPAIGN.CAMPAIGN_MAIN); m_cCustDisp = (ICustDisplayUs)sManager.InitServiceInstance(ServiceLists.ASV_CUSTDISPLAY.DLL, ServiceLists.ASV_CUSTDISPLAY.CUST_DISPLAY); // 상품등록 정보 m_alTrPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); } ///// ///// 상품 등록 처리 ///// ///// 선택행 ///// (0:수입력, 1:메뉴, 2:스켄, 3:플레이버) + (메뉴코드,스캔코드) ///// 입력데이터(수량) ///// //public string SetItemCode(string sSelRow, string sInPutTypeCode, string sInPutData) //{ // string sSubStoreNo = "", sItemCode = "", sScanCode = ""; //점포코드, 상품코드, 스켄코드 // string sRet = UserCom.RST_ERR; // try // { // string sInPutType = PosConst.SALE_PLU_INPUT_TYPE.MENUKEY; // if (sInPutTypeCode.Length > 0) sInPutType = sInPutTypeCode.Substring(0, 1); // if (sInPutTypeCode.StartsWith(PosConst.SALE_PLU_INPUT_TYPE.MENUKEY) || sInPutTypeCode.StartsWith(PosConst.SALE_PLU_INPUT_TYPE.FLAVOUR)) // 메뉴코드 // { // // 메뉴코드 = (점포코드(10)+상품코드) // sSubStoreNo = sInPutTypeCode.Substring(1, 10).Trim(); // 점포코드 // sItemCode = sInPutTypeCode.Substring(11); // 상품코드 // } // else if (sInPutTypeCode.StartsWith(PosConst.SALE_PLU_INPUT_TYPE.KEY_IN) || sInPutTypeCode.StartsWith(PosConst.SALE_PLU_INPUT_TYPE.SCANNER)) // 스캔입력 // { // sSubStoreNo = m_cPosStatus.Base.StoreNo; // 점포코드 // sScanCode = sInPutTypeCode.Substring(1); // 스캔코드 // } // else // { // sSubStoreNo = m_cPosStatus.Base.StoreNo; // 점포코드 // sItemCode = sInPutTypeCode.Substring(1); // 상품코드 // } // sRet = SetItemCode(sSelRow, sInPutType, sSubStoreNo, sItemCode, sScanCode , sInPutData); // } // 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; //} /// /// 상품 등록 처리 /// /// 선택행 /// (0:수입력, 1:메뉴, 2:스켄, 3:플레이버 /// 서브점포코드 /// 메뉴코드 /// 스캔코드 /// 입력데이터(수량) /// public string SetItemCode(string sSelRow, string sInPutType, string sSubStoreNo, string sItemCode, string sScanCode, string sInPutData) { int nSelRow = 0; string sRet = UserCom.RST_ERR; //string sRetItem = ""; string sRetScan = ""; string sShtcutItemNm = ""; string sItemNm = string.Empty; //#20171120 유통기한 바코드 인식률 start, phj string sBar_No = string.Empty; //#20171120 유통기한 바코드 인식률 end, phj try { string sCampignFreeGift = sInPutType; // 캠페인 사은품 여부(B:사은품, C:사은품(HP)) if (sInPutType == PosConst.SALE_PLU_INPUT_TYPE.FREEGIFT || sInPutType == PosConst.SALE_PLU_INPUT_TYPE.FREEGIFT_HP) sInPutType = PosConst.SALE_PLU_INPUT_TYPE.MENUKEY; //#20171018 상품등록 유통기한 체크하기 start, phj bool TimeStampBarCodeYN = false; //#20171018 상품등록 유통기한 체크하기 end, phj // 바코드 체크 if (sScanCode.Length >= 6) { // 브랜드별 바코드 규칙 체크(유통기간 및 상품코드 변경!) string sRetItem = ""; string sRetScan = ""; string sShtcutItemNm = ""; #region //#20171018 상품등록 유통기한 체크하기 start, phj //기존 //string sItemRet = m_cDataCommon.SeletItemMstToBarCode(sSubStoreNo, sScanCode, ref sRetItem, ref sRetScan, ref sShtcutItemNm); //변경 string sItemRet = string.Empty; //#20171207 유통기한 바코드 CHECK DIGIT 체크 기능 start //기존 /* if ((sScanCode.Length == 13) && (sScanCode.Substring(0, 1) == "2") && (sScanCode.Substring(12, 1) == "1")) */ //변경 if ((sScanCode.Length == 13) && (sScanCode.Substring(0, 1) == "2") && (sScanCode.Substring(12, 1) == TimeStampBarCode_CheckDigit(sScanCode))) //#20171207 유통기한 바코드 CHECK DIGIT 체크 기능 end { //#20171120 유통기한 바코드 인식률 start, phj sBar_No = sScanCode; //#20171120 유통기한 바코드 인식률 end, phj sItemRet = m_cDataCommon.TimeStampBarCodeCheck(sSubStoreNo, sScanCode, ref sRetItem); TimeStampBarCodeYN = true; } else { // grayber@20171129 필터 추가 및 바코드 상품 검색 조건 개선 start sItemRet = m_cDataCommon.SeletItemMstToBarCode(sSubStoreNo, sScanCode, ref sRetItem, ref sRetScan, ref sShtcutItemNm); if (sScanCode.Length == 6 && sScanCode.StartsWith("N") == true && m_cPosStatus.Mst.CorpDiv.Equals(ItemConst.CORP_DIV.BR) == true) { TimeStampBarCodeYN = true; //grayber@20171207 BR N코드에 대하여 유통기한 바코드 인식률 대한 무시 처리 sBar_No = sScanCode; //grayber@20171207 BR N코드에 대하여 유통기한 바코드 인식률 대한 무시 처리 } else { TimeStampBarCodeYN = false; } // grayber@20171129 필터 추가 및 바코드 상품 검색 조건 개선 start } //#20171018 상품등록 유통기한 체크하기 end, phj #endregion #region if (sItemRet == UserCom.RST_ERR) { //#16401 해피오더)주문내역 바코드 리딩 시 자동 완료처리 start - 20180829 //기존 /* //#20171120 유통기한 바코드 인식률 start, phj //0 : 실패 1 : 성공 if (TimeStampBarCodeYN == true) { m_cDataCommon.BarCodeSuccessRate(sBar_No, "0"); } //#20171120 유통기한 바코드 인식률 end, phj */ //변경 if (sShtcutItemNm != "HP_ORD") { //#20171120 유통기한 바코드 인식률 start, phj if (TimeStampBarCodeYN == true) { //0 : 실패 1 : 성공 m_cDataCommon.BarCodeSuccessRate(sBar_No, "0"); } //#20171120 유통기한 바코드 인식률 end, phj } //#16401 해피오더)주문내역 바코드 리딩 시 자동 완료처리 end - 20180829 return sRet; } else if (sItemRet == UserCom.RST_OK) //정상이면 넘어온값으로 셋팅 { sItemCode = sRetItem; sScanCode = sRetScan; } #endregion } //#20171018 상품등록 유통기한 체크하기 start, phj //기존 //상품 마스터 조회 //DataTable dtDataInfo = m_cDataCommon.SearchItemCode(sSubStoreNo, sItemCode, sScanCode); //변경 DataTable dtDataInfo = m_cDataCommon.SearchItemCode(sSubStoreNo, sItemCode, sScanCode, TimeStampBarCodeYN); //#20171018 상품등록 유통기한 체크하기 end, phj if (dtDataInfo == null || dtDataInfo.Rows.Count == 0) { #region //#20171120 유통기한 바코드 인식률 start, phj //0 : 실패 1 : 성공 if (TimeStampBarCodeYN == true) { m_cDataCommon.BarCodeSuccessRate(sBar_No, "0"); } //#20171120 유통기한 바코드 인식률 end, phj WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0010); // 등록되지 않은 상품 입니다 return sRet; #endregion } //#20171120 유통기한 바코드 인식률 start, phj //0 : 실패 1 : 성공 if (TimeStampBarCodeYN == true) { m_cDataCommon.BarCodeSuccessRate(sBar_No, "1"); } //#20171120 유통기한 바코드 인식률 end, phj DataRow drPlu = dtDataInfo.Rows[0]; if (PosMstManager.GetPosOption(POS_OPTION.OPT041) == "1") { #region if (CmUtil.LongParse(CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.SALE_START_DT)) > 0 && CmUtil.LongParse(CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.SALE_FNSH_DT)) > 0) { if (CmUtil.LongParse(CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.SALE_START_DT)) > CmUtil.LongParse(m_cPosStatus.Base.SaleDate) || CmUtil.LongParse(CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.SALE_FNSH_DT)) < CmUtil.LongParse(m_cPosStatus.Base.SaleDate)) { // 판매 불가 상품 입니다 WinManager.ErrorMessage(MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0011) + PosConst.CRLF + MessageManager.GetLabelMessage(POS_MESSAGE.LABEL.MSG_0870) + " : " + CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.SALE_START_DT) + " - " + CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.SALE_FNSH_DT)); return sRet; } } if (CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.SALE_PRMT_YN) == "0") { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0011); // 판매 불가 상품 입니다 return sRet; } //if (sInPutType == PosConst.SALE_PLU_INPUT_TYPE.KEY_IN || sInPutType == PosConst.SALE_PLU_INPUT_TYPE.MENUKEY || sInPutType == PosConst.SALE_PLU_INPUT_TYPE.SCANNER) //{ //} #endregion } //#15347 주류 경고메시지 출력 start //if (m_cPosStatus.Mst.CorpDiv == ItemConst.CORP_DIV.PC && m_cPosStatus.Mst.CntryDiv == ItemConst.CNTRY_DIV.KR) //if (m_cTrnStatus.Head.CmpCd == "PBKR") if (m_cPosStatus.Base.BrandCd == PosConst.MST_BRAND_CODE.PC_PB) { if (CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.ALCOHOL_ITEM_TYPE) != "0" && CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.ALCOHOL_ITEM_TYPE) != "") { bool bItemRegister = false; ArrayList alSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); foreach (Column.TR_PLU.DATA cPluItem in alSaleItem) { if (cPluItem.ITEM_PLU_CD == CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.ITEM_CD)) { bItemRegister = true; break; } } if (bItemRegister == false) { if (CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.ALCOHOL_ITEM_TYPE) == "5") { //성인용 음료로 미성년자에게 판매할 수 없습니다. 신분증을 확인해주세요. WinManager.ErrorMessage(MessageManager.GetGuideMessage(POS_MESSAGE.GUIDE.MSG_0015)); } else { //주류상품은 미성년자에게 판매할 수 없습니다. 신분증을 확인해주세요. WinManager.ErrorMessage(MessageManager.GetGuideMessage(POS_MESSAGE.GUIDE.MSG_0016)); } } } } //#15347 주류 경고메시지 출력 end if (CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.TIME_BAR_CD_YN) == "1") { #region if (sScanCode.Length == 15 && sScanCode.StartsWith("S88") == true) { if ( CmUtil.LongParse(sScanCode.Substring(9, 6)) > CmUtil.LongParse( DateTime.Now.ToString("yyMMdd"))) { WinManager.ErrorMessage( MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0011) + PosConst.CRLF + MessageManager.GetErrorMessage(POS_MESSAGE.ERROR.MSG_0329)); // 판매 불가 상품 입니다 return sRet; } } #endregion } if (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.CHARGESALE.PREPAID) { } else { if (m_cTrnStatus.Head.TradeKind != ItemConst.TRAN_KIND.CHARGESALE.GIFT) { #region //상품권 판매가 아닌경우 상품권 상품이 들어올 경우 에러! if (CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.ITEM_TYPE).Equals(PosConst.ITEM_TYPE.GIFT.ToString())) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0076); return sRet; } //선불카드 판매가 아닌경우 선불카드 상품이 들어올 경우 에러! if (CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.ITEM_TYPE).Equals(PosConst.ITEM_TYPE.PREPAID.ToString())) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0077); return sRet; } #endregion } } // 같은 상품 등록 여부 체크(수량증가) bool bQtyAdd = false; //nSelRow = m_alTrPluItem.Count - 1; //if ((m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING && sInPutType.StartsWith(PosConst.SALE_PLU_INPUT_TYPE.SUBMENU)) // || sInPutType.StartsWith(PosConst.SALE_PLU_INPUT_TYPE.FLAVOUR)) //{ // nSelRow = CmUtil.IntParse(sSelRow); //} //if (m_alTrPluItem.Count > 0 && sInPutData == "" // && (PosMstManager.GetPosOption(POS_OPTION.OPT031) == "1" || PosMstManager.GetPosOption(POS_OPTION.OPT031) == "2")) // 수량 합산 처리(0:미합산, 1:최종상품합산, 2:전체상품합산) //{ // #region // if ( (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING && sInPutType.StartsWith(PosConst.SALE_PLU_INPUT_TYPE.SUBMENU)) // || sInPutType.StartsWith(PosConst.SALE_PLU_INPUT_TYPE.FLAVOUR)) // { // nSelRow = CmUtil.IntParse(sSelRow); // if (nSelRow + 1 < m_alTrPluItem.Count) // { // #region // Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)m_alTrPluItem[nSelRow + 1]; // if (cPluItem.SUB_SHOP_CD == CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.SUB_STOR_CD) // && cPluItem.ITEM_PLU_CD == CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.ITEM_CD) // && cPluItem.ORDER_OK_FLAG == PosConst.PLU_ORDER_OK_FLAG.ORDER_ING // //#20170825 오픈 상품은 무조건 새 row로 입력 start // //기존 // //&& cPluItem.CANCEL_DIV == "0" && cPluItem.DC_DIV == ItemConst.PLU_DC_DIV.NORMAL && cPluItem.SALE_QTY < 99999) // //변경 // && cPluItem.CANCEL_DIV == "0" && cPluItem.DC_DIV == ItemConst.PLU_DC_DIV.NORMAL && cPluItem.SALE_QTY < 99999 // && CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.OPEN_ITEM_DIV) != "1") // //#20170825 오픈 상품은 무조건 새 row로 입력 end // { // // 수량 증가 // cPluItem.SALE_QTY += 1; // bQtyAdd = true; // } // #endregion // } // } // else // { // Column.TR_PLU.DATA cPluItem = (Column.TR_PLU.DATA)m_alTrPluItem[nSelRow]; // if (cPluItem.SUB_SHOP_CD == CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.SUB_STOR_CD) // && cPluItem.ITEM_PLU_CD == CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.ITEM_CD) // && cPluItem.ORDER_OK_FLAG == PosConst.PLU_ORDER_OK_FLAG.ORDER_ING // && cPluItem.CANCEL_DIV == "0" //&& cPluItem.DC_DIV == ItemConst.PLU_DC_DIV.NORMAL // && cPluItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.NORMAL && cPluItem.SALE_QTY < 99999 // && cPluItem.EXCEP_DC_AMT == 0 && cPluItem.SET_DC_AMT == 0 && cPluItem.ITEM_DC_AMT == 0 && cPluItem.SUM_DC_AMT == 0 // //#20170825 오픈 상품은 무조건 새 row로 입력 start // //기존 // //&& cPluItem.NOTAX_DIV != PosConst.ITEM_NOTAX_DIV.YES ) // //변경 // && cPluItem.NOTAX_DIV != PosConst.ITEM_NOTAX_DIV.YES // && CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.OPEN_ITEM_DIV) != "1") // //#20170825 오픈 상품은 무조건 새 row로 입력 end // //&& cPluItem.ITEM_DIV == ItemConst.PLU_ITEM_DIV.NORMAL) // { // // 수량 증가 // cPluItem.SALE_QTY += 1; // bQtyAdd = true; // } // } // #endregion //} if (bQtyAdd == false) { // 상품등록 한거래에 99이상 안되도록 수정(2017.05.20) if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING) { #region if (sCampignFreeGift.StartsWith(PosConst.SALE_PLU_INPUT_TYPE.MENUKEY) || sCampignFreeGift.StartsWith(PosConst.SALE_PLU_INPUT_TYPE.KEY_IN) || sCampignFreeGift.StartsWith(PosConst.SALE_PLU_INPUT_TYPE.SCANNER)) { if (m_alTrPluItem.Count >= 99) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0499); return sRet; } } #endregion } // 상품 정보 생성 Column.TR_PLU.DATA cPluItem = new Column.TR_PLU.DATA(); cPluItem.ITEM_BRAND_CD = ""; //CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.ITEM_BRAND_CD); 마스터 추가 필요!!!! cPluItem.SUB_SHOP_CD = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.SUB_STOR_CD); cPluItem.ITEM_PLU_CD = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.ITEM_CD); cPluItem.ITEM_DIV = "0"; cPluItem.SALE_QTY = 1; //#Rhee, 20180209 미국 상품검색 후 상품 추가시 상품의 중분류로 이동 Start if (m_cPosStatus.Base.CmpCd.ToUpper().Equals(PosConst.POS_COMPANY_CODE.PCUS) && CmUtil.GetDataRowStr(drPlu, "GRP_SEQ") != string.Empty) { cPluItem.GRP_SEQ = CmUtil.GetDataRowStr(drPlu, "GRP_SEQ"); } //#Rhee, 20180209 미국 상품검색 후 상품 추가시 상품의 중분류로 이동 End //금액 과 세금 구분은 옵션으로 변경 해야함!!!! #region if (PosMstManager.GetPosOption(POS_OPTION.OPT005) == "0") { cPluItem.SALE_PRC = CmUtil.GetDataRowDouble(drPlu, PosMst.MST_ITEM.DATA.TAKE_OUT_SALE_AMT); cPluItem.TAXRATE_CD = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.TAKE_OUT_VAT_CD); } else { cPluItem.SALE_PRC = CmUtil.GetDataRowDouble(drPlu, PosMst.MST_ITEM.DATA.TAKE_IN_SALE_AMT); cPluItem.TAXRATE_CD = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.TAKE_IN_VAT_CD); } #endregion cPluItem.ITEM_TAKE_IN_VAT_CD = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.TAKE_IN_VAT_CD); cPluItem.ITEM_TAKE_OUT_VAT_CD = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.TAKE_OUT_VAT_CD); // 상품권 or 선불카드 판매 일때! #region if (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.CHARGESALE.GIFT || m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.CHARGESALE.PREPAID) { cPluItem.SALE_GIFT_NO = sInPutData.Trim(); } else { cPluItem.SALE_GIFT_NO = ""; } #endregion cPluItem.SALE_AMT = 0; #region if (sInPutType == PosConst.SALE_PLU_INPUT_TYPE.FLAVOUR) { if (CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.FLAVOUR_DIV) != ItemConst.PLU_FLAVOUR_DIV.FLAVOUR) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0029); return UserCom.RST_ERR; } } else { if (CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.FLAVOUR_DIV) == ItemConst.PLU_FLAVOUR_DIV.FLAVOUR) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0011); // 판매 불가 상품 입니다 return UserCom.RST_ERR; } } #endregion #region cPluItem.FLAVOUR_DIV = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.FLAVOUR_DIV) == "" ? ItemConst.PLU_FLAVOUR_DIV.NORMAL : CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.FLAVOUR_DIV); cPluItem.FLAVOUR_QTY = CmUtil.GetDataRowLong(drPlu, PosMst.MST_ITEM.DATA.FLAVOUR_QTY); cPluItem.FLAVOUR_STOCK = CmUtil.GetDataRowDouble(drPlu, PosMst.MST_ITEM.DATA.FLAVOUR_STOCK); cPluItem.ITEM_INPUT_DIV = (sInPutType.StartsWith("0") == true) ? "2" : "1"; cPluItem.ITEM_BAR_CD = sScanCode; cPluItem.TAKE_IN_OUT_DIV = "1"; cPluItem.ITEM_TAX_DIV = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.ITEM_TAX_AMT_DIV); cPluItem.NOTAX_DIV = PosConst.ITEM_NOTAX_DIV.NO; //2018.01.04;미주 상품별 부가세 적용 처리;girak.kim;Start //cPluItem.TAX_AMT_INCLUDE_YN = m_cPosStatus.Mst.TaxAmtIncludeYn;//기존 소스 if( m_cPosStatus.Base.CmpCd.ToUpper().Equals(PosConst.POS_COMPANY_CODE.PCUS) ) { cPluItem.TAX_AMT_INCLUDE_YN = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.TAX_AMT_INCLUDE_YN); } else { cPluItem.TAX_AMT_INCLUDE_YN = m_cPosStatus.Mst.TaxAmtIncludeYn; } //2018.01.04;미주 상품별 부가세 적용 처리;girak.kim;End cPluItem.APPLY_TAX_AMT = 0; cPluItem.SVC_FEE_AMT = 0; cPluItem.SVC_FEE_VAT = 0; cPluItem.BILL_AMT = 0; cPluItem.SUM_DC_AMT = 0; cPluItem.CPI_DC_AMT = 0; cPluItem.COOP_CARD_DC_AMT = 0; cPluItem.SET_DC_AMT = 0; cPluItem.SET_DC_GROUP_CD = 0; cPluItem.ETC_DC_DIV = "0000"; cPluItem.ETC_DC_AMT = 0; cPluItem.EXCEP_DC_DIV = "0000"; cPluItem.EXCEP_DC_AMT = 0; cPluItem.PACK_DIV = "0"; cPluItem.SET_MENU_CD = ""; cPluItem.CPI_PRESENT_DIV = "0"; cPluItem.BILLSPR_NO = 0; cPluItem.CANCEL_DIV = "0"; cPluItem.CANCEL_DATE = ""; cPluItem.SUB_MENU_MAIN_CD = ""; cPluItem.DISPO_ITEM_DIV = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.DISPO_ITEM_DIV); cPluItem.SUB_SET_MNG_TYPE = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.SUB_SET_MNG_TYPE); //#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 start cPluItem.ITEM_INFO = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.ITEM_INFO); // 영양성분 cPluItem.ITEM_EXPLN = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.ITEM_EXPLN); // 상품설명 cPluItem.ALLERGY = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.ALLERGY); // 알레르기성분 cPluItem.PLACE_ORIGIN = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.PLACE_ORIGIN); // 원산지 //#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 end //#20180903 해피오더 매출 생성 시 tr_sale_detail에 구분자 추가 start cPluItem.HPO_REG_YN = "0"; //#20180903 해피오더 매출 생성 시 tr_sale_detail에 구분자 추가 end #endregion #region if (m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING_SET) { // 세트 하위 메뉴 cPluItem.ITEM_DIV = ItemConst.PLU_ITEM_DIV.SET_DETL; cPluItem.ITEM_NAME = ">" + CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.SHTCUT_ITEMNM); cPluItem.SET_MENU_CD = m_cTrnStatus.Sale.SetPluSetMainCode; cPluItem.SALE_PRC = m_cTrnStatus.Sale.SetPluUpSalePrc; cPluItem.SET_PLU_SET_GROUP_CODE = m_cTrnStatus.Sale.SetPluSetGroupCode; } else if (sInPutType.StartsWith(PosConst.SALE_PLU_INPUT_TYPE.SUBMENU) == true) { // 부가메뉴 cPluItem.ITEM_DIV = ItemConst.PLU_ITEM_DIV.OPT_MENU; cPluItem.ITEM_NAME = ">>" + CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.SHTCUT_ITEMNM); cPluItem.SUB_MENU_MAIN_CD = m_cTrnStatus.Sale.SubMenuMainCode; cPluItem.SUBPRC_MENU_KEY_DIV = m_cTrnStatus.Sale.SubMenuKeyDiv; // 부가메뉴구분(1:속성,2:업차지,3:선택메뉴) if (cPluItem.SUBPRC_MENU_KEY_DIV != "2") { //cPluItem.SALE_PRC = 0; // 2019-05-03 - 1997fx11 : 부가옵션에 대한 금액부여, 파라미터 'sInPutData' 에 Take in / out 구분을 가져올 예정. string[] stemp = sInPutData.Split('|'); if (stemp[0] == "1002") { cPluItem.SALE_PRC = CmUtil.DoubleParse(CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.TAKE_IN_SALE_AMT)); } else { cPluItem.SALE_PRC = CmUtil.DoubleParse(CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.TAKE_OUT_SALE_AMT)); } } else { cPluItem.SALE_PRC = m_cTrnStatus.Sale.SubMenuUpSalePrc; } } else if (cPluItem.FLAVOUR_DIV == ItemConst.PLU_FLAVOUR_DIV.FLAVOUR) { // 플레이버 cPluItem.ITEM_NAME = ">" + CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.SHTCUT_ITEMNM); } else { #region if (cPluItem.SUB_SET_MNG_TYPE == PosConst.MST_SUB_SET_MNG_TYPE.SET_MENU) { cPluItem.ITEM_DIV = ItemConst.PLU_ITEM_DIV.SET_MAIN; } else { if (m_cTrnStatus.Head.TradeKind != ItemConst.TRAN_KIND.CHARGESALE.GIFT && m_cTrnStatus.Head.TradeKind != ItemConst.TRAN_KIND.CHARGESALE.PREPAID) { // 상품 수량 입력된 수량으로 변경 if (sInPutData.Length > 0 && sInPutData.Length <= 5 && CmUtil.LongParse(sInPutData) > 0 ) cPluItem.SALE_QTY = CmUtil.LongParse(sInPutData); } } #endregion cPluItem.ITEM_NAME = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.SHTCUT_ITEMNM); } #endregion cPluItem.OPEN_ITEM_DIV = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.OPEN_ITEM_DIV); ////판매 loss일 경우 0원 처리 #region if (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.ETC.LOSS) { // cPluItem.DC_RATE = 100; // cPluItem.ITEM_DC_AMT = cPluItem.SALE_PRC; // cPluItem.DC_DIV = ""; cPluItem.NONSALES_RSN_CD = m_cTrnStatus.Head.NonSaleRsnCd; cPluItem.NONSALES_RSN_NM = m_cTrnStatus.Head.LossTitle; } else { cPluItem.NONSALES_RSN_CD = "0"; cPluItem.NONSALES_RSN_NM = ""; } #endregion cPluItem.DC_RATE = 0; cPluItem.ITEM_DC_AMT = 0; cPluItem.DC_DIV = ItemConst.PLU_DC_DIV.NORMAL; //상품권, 선불카드 판매일때 변경! switch (CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.ITEM_TYPE)) { #region case PosConst.ITEM_TYPE.GIFT: //상품권일때 변경 cPluItem.ITEM_DIV = ItemConst.PLU_ITEM_DIV.GIFT; break; case PosConst.ITEM_TYPE.PREPAID: //선불카드일때 변경 cPluItem.ITEM_DIV = ItemConst.PLU_ITEM_DIV.PREPAID; break; #endregion } 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)) { #region 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)) { m_cfInPrc.PosMenuKeyOut = ""; //#16577 결제창 내부 봉투 추가 기능 도입 start //오픈 상품인 경우 금액 입력 창에 상품명 및 안내 문구 표시 m_cfInPrc.PosMenuNm = cPluItem.ITEM_NAME; //#16577 결제창 내부 봉투 추가 기능 도입 end if (m_cfInPrc.ShowDialog() == DialogResult.Cancel) { // 취소면 에러 return UserCom.RST_ERR; } else { cPluItem.SALE_PRC = m_cDataService.DoubleParse(m_cfInPrc.PosMenuKeyOut); } } #endregion } #region cPluItem.CANCEL_DIV_MAIN = "0"; cPluItem.FREE_GIFT_YN = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.FREE_GIFT_YN); cPluItem.DC_PRMT_YN = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.DC_PRMT_YN); if (cPluItem.DC_PRMT_YN != "1") cPluItem.DC_PRMT_YN = "0"; // db에서 가져오지 않고 있어 임시 작업 cPluItem.ACCUM_PRMT_YN = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.ACCUM_PRMT_YN); cPluItem.SVC_FEE_TRGT_YN = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.SVC_FEE_TRGT_YN); cPluItem.COOP_CARD_DC_NOADM_YN = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.COOP_CARD_DC_NOADM_YN); cPluItem.TOT_DC_AMT = 0; cPluItem.ORDER_OK_FLAG = PosConst.PLU_ORDER_OK_FLAG.ORDER_ING; cPluItem.L_CLSS = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.L_CLSS); cPluItem.M_CLSS = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.M_CLSS); cPluItem.S_CLSS = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.S_CLSS); #endregion //if (PosMstManager.GetPosOption(POS_OPTION.OPT034) == "1") //세브란스 일 경우 //{ // cPluItem.SEVERANCE_MENU_DIV = SearchMenuMasterForSeverance(cPluItem.ITEM_PLU_CD, "", ""); //} //else //{ cPluItem.SEVERANCE_MENU_DIV = "0"; //} cPluItem.CAKE_EXCHNG_CPN_USE_POSS_YN = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.CAKE_EXCHNG_CPN_USE_POSS_YN); // 케익교환권 가능 여부 cPluItem.CAMPAIGN_FREEGIFT = sCampignFreeGift; cPluItem.ORD_TIME = DateTime.Now.ToString("HHmmss"); nSelRow = CmUtil.IntParse(sSelRow); if (nSelRow == 0) { m_alTrPluItem.Add(cPluItem); // 등록 처리 } else { if (nSelRow + 1 >= m_alTrPluItem.Count) m_alTrPluItem.Add(cPluItem); // 등록 처리 else m_alTrPluItem.Insert(nSelRow + 1, cPluItem); // 등록 처리 } m_cDataService.UpdatePluItemAmount(cPluItem); //if (m_cPosStatus.Base.DmbIf == "1") //{ // // 디지털메뉴보드 I/F // IDataServiceUs cDigitalMenuBoard = (IDataServiceUs)sManager.InitServiceInstance(ServiceLists.BSV_BASIC.DLL, ServiceLists.BSV_BASIC.DMB_IF); // //#16569 파스쿠찌 드라이브 스루 기능 개발 요청 start // //기존 // #region 주석 // /* // ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); // if (alPluItem.Count == 1) // { // // 판매개시 // cDigitalMenuBoard.Execute(new string[] { ItemConst.DMB_IRT_ID.SALE_BEGIN }); // } // // 상품등록 // cDigitalMenuBoard.Execute(new string[] { ItemConst.DMB_IRT_ID.PRODUCT_REG, cPluItem.ITEM_PLU_CD, cPluItem.ITEM_NAME, "1" }); // */ // #endregion 주석 // //변경 // if (PosMstManager.GetPosOption(POS_OPTION.OPT554) != "1") // { // ArrayList alPluItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); // if (alPluItem.Count == 1) // { // // 주문시작 // //cDigitalMenuBoard.Execute(new string[] { ItemConst.DMB_IRT_ID.SALE_BEGIN }); // } // // 상품등록 // //cDigitalMenuBoard.Execute(new string[] { ItemConst.DMB_IRT_ID.PRODUCT_REG, cPluItem.ITEM_PLU_CD, cPluItem.ITEM_NAME, "1" }); // } // //#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; } /// /// 상품 마스터 조회후 상품 정보 설정 /// /// /// /// /// public bool SetTrPluItemToMst(Column.TR_PLU.DATA cPluItem, string sSubStoreNo, string sItemCode) { try { // 상품 마스터 조회 DataTable dtDataInfo = m_cDataCommon.SearchItemCode(sSubStoreNo, sItemCode, ""); if (dtDataInfo == null || dtDataInfo.Rows.Count == 0) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0010); // 등록되지 않은 상품 입니다 return false; } DataRow drPlu = dtDataInfo.Rows[0]; if (CmUtil.LongParse(CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.SALE_START_DT)) > CmUtil.LongParse(m_cPosStatus.Base.SaleDate) || CmUtil.LongParse(CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.SALE_FNSH_DT)) < CmUtil.LongParse(m_cPosStatus.Base.SaleDate)) { WinManager.ErrorMessage(POS_MESSAGE.ERROR.MSG_0011); // 판매 불가 상품 입니다 return false; } cPluItem.SUB_SHOP_CD = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.SUB_STOR_CD); cPluItem.ITEM_PLU_CD = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.ITEM_CD); if (PosMstManager.GetPosOption(POS_OPTION.OPT005) == "0") { cPluItem.SALE_PRC = CmUtil.GetDataRowDouble(drPlu, PosMst.MST_ITEM.DATA.TAKE_OUT_SALE_AMT); cPluItem.TAXRATE_CD = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.TAKE_OUT_VAT_CD); } else { cPluItem.SALE_PRC = CmUtil.GetDataRowDouble(drPlu, PosMst.MST_ITEM.DATA.TAKE_IN_SALE_AMT); cPluItem.TAXRATE_CD = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.TAKE_IN_VAT_CD); } cPluItem.ITEM_TAKE_IN_VAT_CD = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.TAKE_IN_VAT_CD); cPluItem.ITEM_TAKE_OUT_VAT_CD = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.TAKE_OUT_VAT_CD); cPluItem.FLAVOUR_DIV = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.FLAVOUR_DIV); cPluItem.FLAVOUR_QTY = CmUtil.GetDataRowLong(drPlu, PosMst.MST_ITEM.DATA.FLAVOUR_QTY); cPluItem.FLAVOUR_STOCK = CmUtil.GetDataRowDouble(drPlu, PosMst.MST_ITEM.DATA.FLAVOUR_STOCK); cPluItem.ITEM_TAX_DIV = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.ITEM_TAX_AMT_DIV); cPluItem.SUB_SET_MNG_TYPE = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.SUB_SET_MNG_TYPE); cPluItem.ITEM_NAME = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.SHTCUT_ITEMNM); cPluItem.FREE_GIFT_YN = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.FREE_GIFT_YN); cPluItem.DC_PRMT_YN = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.DC_PRMT_YN); cPluItem.ACCUM_PRMT_YN = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.ACCUM_PRMT_YN); cPluItem.SVC_FEE_TRGT_YN = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.SVC_FEE_TRGT_YN); cPluItem.COOP_CARD_DC_NOADM_YN = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.COOP_CARD_DC_NOADM_YN); cPluItem.L_CLSS = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.L_CLSS); cPluItem.M_CLSS = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.M_CLSS); cPluItem.S_CLSS = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.S_CLSS); //#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 start cPluItem.ITEM_INFO = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.ITEM_INFO); // 영양성분 cPluItem.ITEM_EXPLN = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.ITEM_EXPLN); // 상품설명 cPluItem.ALLERGY = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.ALLERGY); // 알레르기성분 cPluItem.PLACE_ORIGIN = CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.PLACE_ORIGIN); // 원산지 //#15746 해피오더 '쇼킹박스' 관련 POS 시스템 개발 요청 end 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; } /// /// 상품 판매가 재계산 /// public string ItemAmountExeccute(bool bEvtExec, bool bTaxExec) { string sRet = UserCom.RST_ERR; try { // 단가, 수량 반영 ==> 상품 판매가 재설정(수량,단가,할인,행사) foreach (Column.TR_PLU.DATA cPluItem in m_alTrPluItem) { m_cDataService.UpdatePluItemAmount(cPluItem); } // 상품 합계금액 계산(거래해더) m_cDataService.UpdatePluAmount(); if (bEvtExec == true) { //정상 거래 와 예약 등록 거래시만 체크! if (m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE || m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.UNDECIDED.RESERVATION_REG) { // 상품 행사 처리 double dcAmt = m_cCampaingMain.RegisterCampaignPlu(true); // 캠페인 반영 ==> 상품 판매가 재설정(수량,단가,할인,행사) foreach (Column.TR_PLU.DATA cPluItem in m_alTrPluItem) { m_cDataService.UpdatePluItemAmount(cPluItem); } // 상품 합계금액 계산(거래해더) m_cDataService.UpdatePluAmount(); } } if (bTaxExec == true) { // 세금 계산 처리 m_cDataService.ItemVatProc(); // 상품 판매가 재설정(수량,단가,할인,행사) foreach (Column.TR_PLU.DATA cPluItem in m_alTrPluItem) { m_cDataService.UpdatePluItemAmount(cPluItem); } // 상품 합계금액 계산(거래해더) m_cDataService.UpdatePluAmount(); } //#16569 파스쿠찌 드라이브 스루 기능 개발 요청 start //DMBIF 사용, PAS DT 사용, 후불, 정상매출만 처리 //if (m_cPosStatus.Base.DmbIf == "1" && // PosMstManager.GetPosOption(POS_OPTION.OPT554) == "1" && // m_cPosStatus.Base.PosType == PosConst.POS_TYPE.DEFERRED_PAYMENT && // m_cTrnStatus.Head.TradeDiv == ItemConst.TRAN_DIV.NORMAL && // m_cTrnStatus.Head.TradeKind == ItemConst.TRAN_KIND.NORMAL.SALE && // m_cPosStatus.Sale.EtcOperateMode == PosConst.ETC_OPERATION_MODE.NORMAL) //{ // //상품등록 대기, 상품등록 중, 세트메뉴 등록 중, 강제부가메뉴 등록 중, 세트메뉴 하위 강제부가메뉴 등록 중 // 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_SET || // m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING_OPT || // m_cPosStatus.Sale.SaleFlow == PosConst.SALE_FLOW.SALE_DOING_SET_OPT) // { // // 디지털메뉴보드 I/F // IDataServiceUs cDigitalMenuBoard = (IDataServiceUs)sManager.InitServiceInstance(ServiceLists.BSV_BASIC.DLL, ServiceLists.BSV_BASIC.DMB_IF); // // 판매완료 // cDigitalMenuBoard.Execute(new string[] { ItemConst.DT_IRT_ID.PRODUCT_REG }); // } //} //#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; } //#20171207 유통기한 바코드 CHECK DIGIT 체크 기능 start //계산방법(12자리로 계산) //1. 우측부터 홀수위치 숫자 SUM //2. 1단계의 값에 3을 곱한다 //3. 우측부터 짝수위치 숫자 SUM //4. 2단계결과 + 3단계결과 //5. 4단계결과 값에 임의의 값을 더해 다음 10단위 숫자를 만든다. //6. 5단계에서 더한 임의의 값이 CHECK DIGIT 값. /// /// 유통기한 바코드 CHECK DIGIT 체크 /// public string TimeStampBarCode_CheckDigit(string sBarCd) { string sRet = ""; try { //ex) "2100131712099"; // Test string for correct length if (sBarCd.Length != 13) return sRet; // Test string for being numeric for (int i = 0; i < sBarCd.Length; i++) { if (sBarCd[i] < 0x30 || sBarCd[i] > 0x39) return sRet; } int sum = 0; for (int ii = 11; ii >= 0; ii--) { int digit = sBarCd[ii] - 0x30; if ((ii & 0x01) == 1) sum += digit * 3; else sum += digit; } int mod = sum % 10; int iRet = mod == 0 ? 0 : 10 - mod; sRet = iRet.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); } return sRet; } //#20171207 유통기한 바코드 CHECK DIGIT 체크 기능 end ///// ///// 상품 부가세 계산 처리 ///// ///// //private bool ItemVatProc() //{ // bool bRet = false; // try // { // double dItemTakeInSum = 0; //부가세 TakeIn 대상 금액에 합 // double dItemTakeOutSum = 0; //부가세 TakeOut대상 금액에 합 // double dTaxTakeInSum = 0; //합 TakeIn 부가세 금액 // double dTaxTakeOutSum = 0; //합 TakeOut부가세 금액 // double dTaxTakeInSumAppy = 0; //적용한 TakeIn 부가세 금액 // double dTaxTakeOutSumAppy = 0; //적용한 TakeOut부가세 금액 // double dTakeInRate = 0; //TakeIn 부가세 율 // double dTakeOutRate = 0; //TakeOut 부가세 율 // //1. 부가세 계산 방식 체크(아이템SUM or 거래합계 배분) // if(m_cPosStatus.Mst.TaxAmtCalcMethd == ItemConst.TAX_AMT_CALC_METHD.BILL) // { // //거래 합계 후 아이템 분배 // //거래 금액 합 // foreach (Column.TR_PLU.DATA cPluItem in m_alTrPluItem) // { // if (cPluItem.CANCEL_DIV == PosConst.CANCEL_DIV.NORMAL && cPluItem.CANCEL_DIV_MAIN == PosConst.CANCEL_DIV.NORMAL) // { // //면세 체크 // if (cPluItem.ITEM_TAX_DIV == PosConst.ITEM_TAX_DIV.TAX) // { // if (cPluItem.TAKE_IN_OUT_DIV == PosConst.TAKE_IN_OUT_DIV.TAKE_IN) // dItemTakeInSum = CmUtil.DoubleAdd(dItemTakeInSum, cPluItem.SALE_AMT - cPluItem.TOT_DC_AMT); // else // dItemTakeOutSum = CmUtil.DoubleAdd(dItemTakeOutSum, cPluItem.SALE_AMT - cPluItem.TOT_DC_AMT); // } // else // { // cPluItem.APPLY_TAX_AMT = 0; // } // } // } // if (dItemTakeInSum > 0 || dItemTakeOutSum > 0) // { // //부가세 코드로 율 가져오기 // DataTable dt = m_cDataCommon.SeletCommonCode(PosConst.COMMON_CODE_GROUP.M0101, ""); // if (dt == null || dt.Rows.Count == 0) // { // //부가세 값 없음!! - ERR! // } // else // { // //foreach(DataRow dr in dt.Rows) // //{ // // if(CmUtil.GetDataRowStr(dr,PosMst.MST_COMMON.DATA.CMM_CD) == m_cPosStatus.Mst.BasicTakeInTaxCd) // // { // // dTakeInRate = CmUtil.GetDataRowDouble(dr, PosMst.MST_COMMON.DATA.NUM_VAL_TITLE_VAL_01); // // } // // if(CmUtil.GetDataRowStr(dr,PosMst.MST_COMMON.DATA.CMM_CD) == m_cPosStatus.Mst.BasicTakeOutTaxCd) // // { // // dTakeOutRate = CmUtil.GetDataRowDouble(dr, PosMst.MST_COMMON.DATA.NUM_VAL_TITLE_VAL_01); // // } // // if (dTakeInRate > 0 && dTakeOutRate > 0) // // break; // //} // DataRow[] adr = null; // adr = dt.Select(" " + PosMst.MST_COMMON.DATA.CMM_CD + " = '" + m_cPosStatus.Mst.BasicTakeInTaxCd + "'"); // dTakeInRate = CmUtil.GetDataRowDouble(adr[0], PosMst.MST_COMMON.DATA.NUM_VAL_TITLE_VAL_01); // adr = dt.Select(" " + PosMst.MST_COMMON.DATA.CMM_CD + " = '" + m_cPosStatus.Mst.BasicTakeOutTaxCd + "'"); // dTakeOutRate = CmUtil.GetDataRowDouble(adr[0], PosMst.MST_COMMON.DATA.NUM_VAL_TITLE_VAL_01); // //전체 부가세 계산 // if(dItemTakeInSum > 0) // { // dTaxTakeInSum = dItemTakeInSum - (dItemTakeInSum / (1 + (dTakeInRate / 100))); // dTaxTakeInSum = CmUtil.MathRounds(dTaxTakeInSum, m_cPosStatus.Mst.VatRudDwLocMethd, CmUtil.IntParse(m_cPosStatus.Mst.VatRudDwLoc)); // } // if (dItemTakeOutSum > 0) // { // dTaxTakeOutSum = dItemTakeOutSum - (dItemTakeOutSum / (1 + (dTakeOutRate / 100))); // dTaxTakeOutSum = CmUtil.MathRounds(dTaxTakeOutSum, m_cPosStatus.Mst.VatRudDwLocMethd, CmUtil.IntParse(m_cPosStatus.Mst.VatRudDwLoc)); // } // double dItemTaxRate; // double dItemTaxAmt; // //아이템 배분 처리 // foreach (Column.TR_PLU.DATA cPluItem in m_alTrPluItem) // { // if (cPluItem.CANCEL_DIV == PosConst.CANCEL_DIV.NORMAL && cPluItem.CANCEL_DIV_MAIN == PosConst.CANCEL_DIV.NORMAL) // { // dItemTaxRate = 0; // dItemTaxAmt = 0; // //면세 체크 // if (cPluItem.ITEM_TAX_DIV == PosConst.ITEM_TAX_DIV.TAX && cPluItem.BILL_AMT > 0) // { // if(cPluItem.TAKE_IN_OUT_DIV == PosConst.TAKE_IN_OUT_DIV.TAKE_IN) // { // dItemTaxRate = CmUtil.DoubleMultiplication(CmUtil.DoubleDivision(cPluItem.SALE_AMT - cPluItem.TOT_DC_AMT, dItemTakeInSum), 100); // dItemTaxAmt = CmUtil.DoubleDivision(dTaxTakeOutSum, CmUtil.DoubleDivision(100, dItemTaxRate)); // cPluItem.APPLY_TAX_AMT = CmUtil.MathRounds(dItemTaxAmt, m_cPosStatus.Mst.VatRudDwLocMethd, CmUtil.IntParse(m_cPosStatus.Mst.VatRudDwLoc)); // dTaxTakeInSumAppy = CmUtil.DoubleAdd(dTaxTakeInSumAppy, cPluItem.APPLY_TAX_AMT); // } // else // { // dItemTaxRate = CmUtil.DoubleMultiplication(CmUtil.DoubleDivision(cPluItem.SALE_AMT - cPluItem.TOT_DC_AMT, dItemTakeOutSum), 100); // dItemTaxAmt = CmUtil.DoubleDivision(dTaxTakeOutSum,CmUtil.DoubleDivision(100, dItemTaxRate)); // cPluItem.APPLY_TAX_AMT = CmUtil.MathRounds(dItemTaxAmt, m_cPosStatus.Mst.VatRudDwLocMethd, CmUtil.IntParse(m_cPosStatus.Mst.VatRudDwLoc)); // dTaxTakeOutSumAppy = CmUtil.DoubleAdd(dTaxTakeOutSumAppy, cPluItem.APPLY_TAX_AMT); // } // } // } // } // //짜투리 금액 계산 Take In // if (dTaxTakeInSum != dTaxTakeInSumAppy) // { // for (int iRow = m_alTrPluItem.Count - 1; iRow >= 0; iRow--) // { // Column.TR_PLU.DATA tmpPluItem = (Column.TR_PLU.DATA)m_alTrPluItem[iRow]; // if (tmpPluItem.CANCEL_DIV == PosConst.CANCEL_DIV.NORMAL && tmpPluItem.CANCEL_DIV_MAIN == PosConst.CANCEL_DIV.NORMAL) // { // //면세 체크 // if (tmpPluItem.ITEM_TAX_DIV == PosConst.ITEM_TAX_DIV.TAX // && tmpPluItem.TAKE_IN_OUT_DIV == PosConst.TAKE_IN_OUT_DIV.TAKE_IN && tmpPluItem.BILL_AMT > 0) // { // tmpPluItem.APPLY_TAX_AMT = CmUtil.DoubleAdd(tmpPluItem.APPLY_TAX_AMT, dTaxTakeInSum - dTaxTakeInSumAppy); // break; // } // } // } // } // //짜투리 금액 계산 Take Out // if (dTaxTakeOutSum != dTaxTakeOutSumAppy) // { // for (int iRow = m_alTrPluItem.Count - 1; iRow >= 0; iRow--) // { // Column.TR_PLU.DATA tmpPluItem = (Column.TR_PLU.DATA)m_alTrPluItem[iRow]; // if (tmpPluItem.CANCEL_DIV == PosConst.CANCEL_DIV.NORMAL && tmpPluItem.CANCEL_DIV_MAIN == PosConst.CANCEL_DIV.NORMAL) // { // //면세 체크 // if (tmpPluItem.ITEM_TAX_DIV == PosConst.ITEM_TAX_DIV.TAX // && tmpPluItem.TAKE_IN_OUT_DIV == PosConst.TAKE_IN_OUT_DIV.TAKE_OUT && tmpPluItem.BILL_AMT > 0) // { // tmpPluItem.APPLY_TAX_AMT = CmUtil.DoubleAdd(tmpPluItem.APPLY_TAX_AMT, dTaxTakeOutSum - dTaxTakeOutSumAppy); // break; // } // } // } // } // } // } // } // else // { // //아이템 계산 후 합계 적용 // //부가세 코드로 율 가져오기 // DataTable dt = m_cDataCommon.SeletCommonCode(PosConst.COMMON_CODE_GROUP.M0101, ""); // if (dt == null || dt.Rows.Count == 0) // { // //부가세 값 없음!! - ERR! // } // else // { // DataRow[] adr = null; // adr = dt.Select(" " + PosMst.MST_COMMON.DATA.CMM_CD + " = '" + m_cPosStatus.Mst.BasicTakeInTaxCd + "'"); // if( adr.Length > 0) dTakeInRate = CmUtil.GetDataRowDouble(adr[0], PosMst.MST_COMMON.DATA.NUM_VAL_TITLE_VAL_01); // adr = dt.Select(" " + PosMst.MST_COMMON.DATA.CMM_CD + " = '" + m_cPosStatus.Mst.BasicTakeOutTaxCd + "'"); // if (adr.Length > 0) dTakeOutRate = CmUtil.GetDataRowDouble(adr[0], PosMst.MST_COMMON.DATA.NUM_VAL_TITLE_VAL_01); // double dItemTaxAmt; // double dTargetAmt; // //상품 낱개별 처리후 거래합 적용 // foreach (Column.TR_PLU.DATA cPluItem in m_alTrPluItem) // { // dItemTaxAmt = 0; // dTargetAmt = 0; // if (cPluItem.CANCEL_DIV == PosConst.CANCEL_DIV.NORMAL && cPluItem.CANCEL_DIV_MAIN == PosConst.CANCEL_DIV.NORMAL) // { // //면세 체크 // if (cPluItem.ITEM_TAX_DIV == PosConst.ITEM_TAX_DIV.TAX && cPluItem.BILL_AMT > 0) // { // dTargetAmt = cPluItem.SALE_AMT - cPluItem.TOT_DC_AMT; // double dTaxRate = 0; // if(m_cPosStatus.Mst.TaxAmtApplydiv == ItemConst.TAX_AMT_APPLY_DIV.BASIC_TAX_APPY) // { // if (cPluItem.TAKE_IN_OUT_DIV == PosConst.TAKE_IN_OUT_DIV.TAKE_IN) // { // dTaxRate = dTakeInRate; // } // else // { // dTaxRate = dTakeOutRate; // } // } // else // { // adr = dt.Select(" " + PosMst.MST_COMMON.DATA.CMM_CD + " = '" + cPluItem.TAXRATE_CD + "'"); // dTaxRate = CmUtil.GetDataRowDouble(adr[0], PosMst.MST_COMMON.DATA.NUM_VAL_TITLE_VAL_01); // } // dItemTaxAmt = dTargetAmt - (dTargetAmt / (1 + (dTaxRate / 100))); // dItemTaxAmt = CmUtil.MathRounds(dItemTaxAmt, m_cPosStatus.Mst.VatRudDwLocMethd, CmUtil.IntParse(m_cPosStatus.Mst.VatRudDwLoc)); // cPluItem.APPLY_TAX_AMT = dItemTaxAmt; // } // else // { // cPluItem.APPLY_TAX_AMT = 0; // } // } // } // } // } // } // 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 SearchMenuMaster 메뉴 구성 마스터 조회 /// /// 메뉴키 마스터 조회 /// /// /// public DataTable SearchMenuMaster(string sMstName) { return SearchMenuMaster(sMstName, "", ""); } /// /// 메뉴 구성 마스터 조회 /// /// /// public DataTable SearchMenuMaster(string sMstName, string sPara1, string sPara2) { string sQuery = ""; try { if (sMstName == PosMst.MST_ITEM_KEY_COMPNT.TABLE_NAME) { // 상품키 구성 마스터 sQuery += " SELECT * FROM POSMST..MST_ITEM_KEY_COMPNT "; sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'"; sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'"; //sQuery += " AND POS_SCRN_TYPE = '" + m_cPosStatus.Base.DesignType + "'"; sQuery += " AND USE_YN = '" + PosConst.MST_USE_YN.YES + "'"; } else if (sMstName == PosMst.MST_ITEM_KEY_L_CLSS.TABLE_NAME) { // 상품키 대분류 if (m_cPosStatus.Mst.ComplexShopType == "2") // 0:단독매장,1:복합매장구성점포,2:복합매장점포 { sQuery += " SELECT A.*, B.DISP_SEQ, B.COMPLEX_SHOP_STOR_NM FROM POSMST..MST_ITEM_KEY_L_CLSS A "; sQuery += " JOIN POSMST..MST_COMPLEX_SHOP_STOR B ON A.CMP_CD=B.CMP_CD AND A.STOR_CD=B.STOR_CD AND A.SUB_SHOP_CD=B.COMPLEX_SHOP_STOR_CD "; sQuery += " WHERE A.CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'"; sQuery += " AND A.STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'"; sQuery += " AND A.USE_YN = '" + PosConst.MST_USE_YN.YES + "'"; sQuery += " ORDER BY A.SEQ, B.DISP_SEQ, A.SUB_SHOP_CD "; } else { sQuery += " SELECT * FROM POSMST..MST_ITEM_KEY_L_CLSS "; sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'"; sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'"; sQuery += " AND USE_YN = '" + PosConst.MST_USE_YN.YES + "'"; sQuery += " ORDER BY SEQ "; } } else if (sMstName == PosMst.MST_ITEM_KEY_CLSS.TABLE_NAME) { // 상품키 중분류 sQuery += " SELECT * FROM POSMST..MST_ITEM_KEY_CLSS A "; sQuery += " WHERE A.CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'"; sQuery += " AND A.STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'"; sQuery += " AND A.USE_YN = '" + PosConst.MST_USE_YN.YES + "'"; sQuery += " ORDER BY A.SUB_STOR_CD,A.L_CLSS_CD, A.FIX_YN, A.GRP_SEQ "; } else if (sMstName == PosMst.MST_ITEM_KEY.TABLE_NAME) { // 상품키 메뉴버튼 // //#20171206 대표상품코드 없는 경우 상품코드로 이미지 표시 start //기존 //sQuery += " SELECT A.*, B.SHTCUT_ITEMNM, B.TAKE_IN_SALE_AMT, B.TAKE_OUT_SALE_AMT, B.BTN_ITEM_IMG ,B.RPST_ITEM_CD"; //변경 sQuery += " SELECT A.*, B.SHTCUT_ITEMNM, B.TAKE_IN_SALE_AMT, B.TAKE_OUT_SALE_AMT, B.BTN_ITEM_IMG"; sQuery += " , (CASE WHEN B.RPST_ITEM_CD IS NULL THEN A.ITEM_CD ELSE (CASE WHEN B.RPST_ITEM_CD = '' THEN A.ITEM_CD ELSE B.RPST_ITEM_CD END) END) RPST_ITEM_CD "; //#20171206 대표상품코드 없는 경우 상품코드로 이미지 표시 end sQuery += " FROM POSMST..MST_ITEM_KEY A "; sQuery += " JOIN POSMST..MST_ITEM B ON A.CMP_CD=B.CMP_CD AND A.STOR_CD=B.STOR_CD AND A.SUB_STOR_CD = B.SUB_STOR_CD AND A.ITEM_CD = B.ITEM_CD"; sQuery += " WHERE A.CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'"; sQuery += " AND A.STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'"; sQuery += " AND A.USE_YN = '" + PosConst.MST_USE_YN.YES + "'"; sQuery += " AND B.USE_YN = '" + PosConst.MST_USE_YN.YES + "'"; sQuery += " ORDER BY A.L_CLSS_CD, A.FIX_YN, A.GRP_SEQ, A.SEQ"; } else if (sMstName == PosMst.MST_BOOKMK.TABLE_NAME) { // 상품키 즐겨찾기 sQuery += " SELECT A.*, B.SHTCUT_ITEMNM, B.TAKE_IN_SALE_AMT, B.TAKE_OUT_SALE_AMT, B.BTN_ITEM_IMG "; sQuery += " FROM POSMST..MST_BOOKMK A "; sQuery += " JOIN POSMST..MST_ITEM B ON A.CMP_CD=B.CMP_CD AND A.STOR_CD=B.STOR_CD AND A.SUB_STOR_CD = B.SUB_STOR_CD AND A.ITEM_CD = B.ITEM_CD"; sQuery += " WHERE A.CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'"; sQuery += " AND A.STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'"; sQuery += " AND A.USE_YN = '" + PosConst.MST_USE_YN.YES + "'"; sQuery += " AND B.USE_YN = '" + PosConst.MST_USE_YN.YES + "'"; sQuery += " ORDER BY A.SEQ "; } else if (sMstName == PosMst.MST_FUNC_KEY_GRP.TABLE_NAME) { // 기능키 그룹 return m_cDataCommon.SeletFuncKeyGroup(""); } else if (sMstName == PosMst.MST_SUBPRC_MENU.TABLE_NAME) { // 부가메뉴 그룹 sQuery += " SELECT * FROM POSMST..MST_SUBPRC_MENU "; sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'"; sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'"; sQuery += " AND SUB_STOR_CD = '" + sPara1 + "'"; sQuery += " AND M_CLSS = '" + sPara2 + "'"; //sQuery += " AND ITEM_CD = '" + sPara2 + "'"; sQuery += " AND USE_YN = '" + PosConst.MST_USE_YN.YES + "'"; sQuery += " ORDER BY SEQ_NO "; } else if (sMstName == PosMst.MST_SUBPRC_MENU_GRP.TABLE_NAME) { // 부가메뉴 그룹 상세 sQuery += " SELECT B.*, ISNULL(C.TAKE_OUT_SALE_AMT, 0) TAKE_OUT_SALE_AMT, ISNULL(C.TAKE_IN_SALE_AMT, 0) TAKE_IN_SALE_AMT, ISNULL(C.SHTCUT_ITEMNM,'') SHTCUT_ITEMNM "; sQuery += " FROM POSMST..MST_SUBPRC_MENU A "; sQuery += " JOIN POSMST..MST_SUBPRC_MENU_GRP B ON A.CMP_CD=B.CMP_CD AND A.STOR_CD=B.STOR_CD AND A.SUB_STOR_CD = B.SUB_STOR_CD AND A.SUBPRC_MENU_GRP_CD = B.SUBPRC_MENU_GRP_CD "; sQuery += " LEFT JOIN POSMST..MST_ITEM C ON B.CMP_CD=C.CMP_CD AND B.STOR_CD=C.STOR_CD AND B.SUB_STOR_CD = C.SUB_STOR_CD AND B.SUBPRC_MENU_KEY_VAL = C.ITEM_CD"; sQuery += " WHERE A.CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'"; sQuery += " AND A.STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'"; sQuery += " AND A.SUB_STOR_CD = '" + sPara1 + "'"; sQuery += " AND A.M_CLSS = '" + sPara2 + "'"; //sQuery += " AND A.ITEM_CD = '" + sPara2 + "'"; sQuery += " AND A.USE_YN = '" + PosConst.MST_USE_YN.YES + "'"; sQuery += " AND B.USE_YN = '" + PosConst.MST_USE_YN.YES + "'"; sQuery += " ORDER BY B.SUBPRC_MENU_GRP_CD, B.SEQ_NO "; } else if (sMstName == PosMst.MST_ITEM_SET.TABLE_NAME) { // 세트메뉴 그룹 sQuery += " SELECT * FROM POSMST..MST_ITEM_SET "; sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'"; sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'"; sQuery += " AND SUB_STOR_CD = '" + sPara1 + "'"; sQuery += " AND ITEM_CD = '" + sPara2 + "'"; sQuery += " AND USE_YN = '" + PosConst.MST_USE_YN.YES + "'"; sQuery += " ORDER BY SEQ_NO "; } else if (sMstName == PosMst.MST_ITEM_SET_GRP.TABLE_NAME) { // 세트메뉴 그룹 상세 sQuery += " SELECT B.* , ISNULL(C.SHTCUT_ITEMNM,'') SHTCUT_ITEMNM "; sQuery += " FROM POSMST..MST_ITEM_SET A "; sQuery += " JOIN POSMST..MST_ITEM_SET_GRP B ON A.CMP_CD=B.CMP_CD AND A.STOR_CD=B.STOR_CD AND A.SUB_STOR_CD = B.SUB_STOR_CD AND A.SET_ITEM_CD = B.SET_ITEM_GRP_CD "; sQuery += " JOIN POSMST..MST_ITEM C ON B.CMP_CD=C.CMP_CD AND B.STOR_CD=C.STOR_CD AND B.SUB_STOR_CD = C.SUB_STOR_CD AND B.SET_ITEM_CD = C.ITEM_CD"; sQuery += " WHERE A.CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'"; sQuery += " AND A.STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'"; sQuery += " AND A.SUB_STOR_CD = '" + sPara1 + "'"; sQuery += " AND A.ITEM_CD = '" + sPara2 + "'"; sQuery += " AND A.USE_YN = '" + PosConst.MST_USE_YN.YES + "'"; sQuery += " AND B.USE_YN = '" + PosConst.MST_USE_YN.YES + "'"; sQuery += " ORDER BY B.SET_ITEM_GRP_CD, B.SEQ_NO "; } else if (sMstName == PosMst.MST_FLAVOUR.TABLE_NAME) { // 플레이버 sQuery += " SELECT A.*, B.SHTCUT_ITEMNM, B.BTN_ITEM_IMG FROM POSMST..MST_FLAVOUR A "; sQuery += " JOIN POSMST..MST_ITEM B ON A.CMP_CD=B.CMP_CD AND A.STOR_CD=B.STOR_CD AND A.SUB_STOR_CD = B.SUB_STOR_CD AND A.ITEM_CD = B.ITEM_CD "; sQuery += " WHERE A.CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'"; sQuery += " AND A.STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'"; sQuery += " AND A.SUB_STOR_CD = '" + sPara1 + "'"; sQuery += " AND A.USE_YN = '" + PosConst.MST_USE_YN.YES + "'"; sQuery += " AND B.USE_YN = '" + PosConst.MST_USE_YN.YES + "'"; sQuery += " ORDER BY A.ITEM_LOC "; } else if (sMstName == PosMst.MST_GIFT_PREPAID.TABLE_NAME_GIFT || sMstName == PosMst.MST_GIFT_PREPAID.TABLE_NAME_PREPAID) { // 상품권,선불카드 sQuery += " SELECT * FROM POSMST..MST_ITEM "; sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'"; sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'"; if (sPara1 != "") { sQuery += " AND SUB_STOR_CD = '" + sPara1 + "'"; } if (sMstName == PosMst.MST_GIFT_PREPAID.TABLE_NAME_GIFT) sQuery += " AND ITEM_TYPE = '" + PosConst.ITEM_TYPE.GIFT + "'"; else sQuery += " AND ITEM_TYPE = '" + PosConst.ITEM_TYPE.PREPAID + "'"; sQuery += " AND USE_YN = '" + PosConst.MST_USE_YN.YES + "'"; } else if (sMstName == PosMst.MST_PLU_NM.TABLE_NAME) { sQuery += " SELECT CMP_CD "; sQuery += " ,STOR_CD "; sQuery += " ,KEY_MODE "; sQuery += " ,PLU_SEQ "; sQuery += " ,PLU_NM "; sQuery += " ,P_POSITION "; sQuery += " ,PLU_1_FR "; sQuery += " ,PLU_1_TO "; sQuery += " ,PLU_2_FR "; sQuery += " ,PLU_2_TO "; sQuery += " ,PLU_3_FR "; sQuery += " ,PLU_3_TO "; sQuery += " ,USE_YN "; sQuery += " FROM POSMST.dbo.MST_PLU_NM "; sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'"; sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'"; } else if (sMstName == PosMst.MST_PLU_AMT.TABLE_NAME) { sQuery += " SELECT CMP_CD "; sQuery += " ,STOR_CD "; sQuery += " ,PLU_SEQ "; sQuery += " ,PLU_AMT_NM "; sQuery += " ,P_POSITION "; sQuery += " ,FROM_AMT "; sQuery += " ,TO_AMT "; sQuery += " ,USE_YN "; sQuery += " FROM POSMST.dbo.MST_PLU_AMT "; sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'"; sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'"; } else if (sMstName == PosMst.MST_ITEM_SEARCH.TABLE_NAME) { sQuery += " SELECT ROW_NUMBER() OVER( ORDER BY A.ITEM_CD DESC) AS NO "; sQuery +=" , A.ITEM_CD "; sQuery += " ,A.SHTCUT_ITEMNM AS ITEM_NM "; //sQuery +=" ,A.ITEM_NM "; if (PosMstManager.GetPosOption(POS_OPTION.OPT005) == "0") sQuery += " ,CONVERT(VARCHAR,A.TAKE_IN_SALE_AMT) AS SALE_PRC"; else sQuery += " ,CONVERT(VARCHAR,A.TAKE_OUT_SALE_AMT) AS SALE_PRC"; sQuery += " ,A.SUB_STOR_CD "; sQuery += " ,A.SUB_SET_MNG_TYPE "; sQuery +=" FROM POSMST.dbo.MST_ITEM A "; if (m_cPosStatus.Mst.CorpDiv == ItemConst.CORP_DIV.PC) //PC일경우는 키에 등록된것만 보여져야함! { sQuery += " INNER JOIN POSMST.dbo.MST_ITEM_KEY B "; sQuery += " ON A.CMP_CD = B.CMP_CD "; sQuery += " AND A.STOR_CD = B.STOR_CD "; sQuery += " AND A.SUB_STOR_CD= B.SUB_STOR_CD "; sQuery += " AND A.ITEM_CD = B.ITEM_CD "; } sQuery += " WHERE A.CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'"; sQuery += " AND A.STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'"; sQuery += " AND A.SUB_STOR_CD = '" + sPara1 + "' "; sQuery += " AND A.ITEM_TYPE NOT IN ('" + PosConst.ITEM_TYPE.GIFT + "','" + PosConst.ITEM_TYPE.PREPAID + "')"; sQuery += " AND '" + m_cPosStatus.Base.SaleDate + "' BETWEEN A.SALE_START_DT AND A.SALE_FNSH_DT "; //판매기간 sQuery += " AND FREE_GIFT_YN = '0' "; //사은품 제외 if (sPara2 != "") sQuery += sPara2; sQuery += " AND A.USE_YN = '" + PosConst.MST_USE_YN.YES + "'"; } else if (sMstName == "MST_ITEM_SET_GRP_CHANGE") { // 세트메뉴 그룹 상세(세트메뉴 변경 용) sQuery += " SELECT B.* , ISNULL(C.SHTCUT_ITEMNM,'') SHTCUT_ITEMNM FROM POSMST..MST_ITEM_SET_GRP B"; sQuery += " JOIN POSMST..MST_ITEM C ON B.CMP_CD=C.CMP_CD AND B.STOR_CD=C.STOR_CD AND B.SUB_STOR_CD = C.SUB_STOR_CD AND B.SET_ITEM_CD = C.ITEM_CD"; sQuery += " WHERE B.CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'"; sQuery += " AND B.STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'"; sQuery += " AND B.SUB_STOR_CD = '" + sPara1 + "'"; sQuery += " AND B.SET_ITEM_GRP_CD = '" + sPara2 + "'"; sQuery += " AND B.USE_YN = '" + PosConst.MST_USE_YN.YES + "'"; sQuery += " ORDER BY B.SEQ_NO "; } //#16577 결제창 내부 봉투 추가 기능 도입 start else if (sMstName == "MST_ITEM_ADD_BAG") { // 봉투 상품 조회 sQuery += " SELECT TOP 8 A.DISP_SEQ SEQ, B.SUB_STOR_CD, B.ITEM_CD, B.RPST_ITEM_CD, ISNULL(B.SHTCUT_ITEMNM,'') SHTCUT_ITEMNM, "; sQuery += " B.TAKE_OUT_SALE_AMT, B.TAKE_IN_SALE_AMT"; sQuery += " FROM POSMST..MST_CMM A INNER JOIN POSMST..MST_ITEM B "; sQuery += " ON A.CMP_CD = B.CMP_CD AND A.CHAR_VAL_TITLE_VAL_01 = B.ITEM_CD "; sQuery += " WHERE A.CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'"; sQuery += " AND A.CMM_GRP_CD = 'T0042'"; sQuery += " AND A.SALES_ORG_CD = '" + m_cPosStatus.Base.BrandCd + "'"; sQuery += " AND A.USE_YN = '" + PosConst.MST_USE_YN.YES + "'"; sQuery += " AND B.STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'"; sQuery += " AND B.SUB_STOR_CD = '" + m_cPosStatus.Base.SubShopNo + "'"; sQuery += " AND B.USE_YN = '" + PosConst.MST_USE_YN.YES + "'"; sQuery += " ORDER BY A.DISP_SEQ "; } //#16577 결제창 내부 봉투 추가 기능 도입 end return m_cMstService.Select(new string[] { sQuery }); } 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 null; } /// /// 세브란스 아이템 체크 /// /// /// /// /// public string SearchMenuMasterForSeverance(string sItemCd, string sPara1, string sPara2) { string sRet = "0"; string sQuery = ""; try { // 세브란스 메뉴 검색 sQuery = ""; sQuery += " SELECT * FROM POSMST.dbo.MST_TERM_COOP_CMP_DC_ITEM WITH(NOLOCK) "; sQuery += " WHERE CMP_CD = '" + m_cPosStatus.Base.CmpCd + "'"; sQuery += " AND STOR_CD = '" + m_cPosStatus.Base.StoreNo + "'"; sQuery += " AND PAY_DC_GRP_TYPE = '" + ItemConst.TR_ITEM_ID.EMP_PAY_ITEM + "'"; sQuery += " AND PAY_DC_CD = '" + ItemConst.TR_ITEM_ID.EMP_PAY.SEVERANCE + "'"; sQuery += " AND COOP_CMP_GRADE_CD = 'SV'"; sQuery += " AND START_DT <= '" + m_cPosStatus.Base.SaleDate + "'"; sQuery += " AND ITEM_CD = '" + sItemCd + "'"; sQuery += " AND USE_YN = '" + PosConst.MST_USE_YN.YES + "'"; DataTable dt = m_cMstService.Select(new string[] { sQuery }); if (dt != null && dt.Rows.Count > 0) { sRet = "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); } return sRet; } #endregion } }