using System; using System.Linq; using System.Text; using System.Collections; using System.Collections.Generic; using System.Data; using System.Runtime.InteropServices; using Cosmos.BaseFrame; using Cosmos.UserFrame; using Cosmos.ServiceProvider; using Cosmos.Common; using Cosmos.Service; using Cosmos.Win; using Cosmos.CommonManager; using System.Timers; //using System.Threading; using SPC.Kiosk.Common; using SPC.Kiosk.PB.Model; using System.Collections.ObjectModel; namespace SPC.Kiosk.DataHelper { public class PosDataService : IDisposable { #region [ Members ] private SManager sManager = null; // 이 객체를 통해 업무 Service 호출 private StateServer StateObject = null; // StateObject : StateServer Object (객체) private PosStatus m_cPosStatus = null; // 기본정보 참조 private TranStatus m_cTrnStatus = null; // 거래정보 참조 protected IDataCommonUs m_cDataCommon = null; private IDataProcessUs m_cDataService = null; // 거래데이터 합계금액 계산 및 관리 private SaleMainProcess m_cSaleMainProc = null; // 판매화면 기능 관리 /// /// POS 초기화 필요 유무 /// public bool NeedInitModule { get; set; } #endregion Members #region [ Ctor & Dispose ] /// /// Ctor /// public PosDataService() { try { sManager = new SManager(); StateObject = (StateServer)StateServer.GetInstance(); if (!NeedInitModule) { m_cPosStatus = (PosStatus)StateObject.POS; // POS 기본정보 m_cTrnStatus = (TranStatus)StateObject.TRAN; // POS 거래정보 m_cDataCommon = (IDataCommonUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_COMMON); m_cDataService = (IDataProcessUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.DATA_SERVICE); m_cSaleMainProc = new SaleMainProcess(); } } catch (Exception ex) { CommonLog.ErrorLogWrite(this, "Ctor", "Fail !!", string.Format("{0}\n{1}", ex.Message, ex.StackTrace)); } } /// /// Dispose /// public void Dispose() { sManager = null; // 이 객체를 통해 업무 Service 호출 StateObject = null; // StateObject : StateServer Object (객체) m_cPosStatus = null; // 기본정보 참조 m_cTrnStatus = null; // 거래정보 참조 m_cDataCommon = null; } public void DisposePos() { //sManager = null; //StateObject = null; // StateObject : StateServer Object (객체) m_cTrnStatus.Sale.Clear(); m_cTrnStatus.Head.Clear(); m_cDataService.InitTranHeader(); m_cDataService.DeleteTranItem(); } #endregion Ctor & Dispose #region [ Methods ] /// /// 점포명 조회 /// /// public string StoreName() { if (NeedInitModule) return string.Empty; string result = string.Empty; try { result = CmUtil.GetDataRowStr(PosMstManager.GetMstStore(), PosMst.MST_STORE.DATA.STORNM); } catch (Exception ex) { CommonLog.ErrorLogWrite(this, "StoreName()", "Fail !!", string.Format("{0}\n{1}", ex.Message, ex.StackTrace)); result = string.Empty; } return result; } public void GetCashBill(ref double _cashBill, ref double _taxbill) { _cashBill = m_cDataService.GetCashAmt(); if (_cashBill > 0) { _taxbill = m_cDataService.GetPaymentAmtVAT(_cashBill); } } /// /// 영수증 인쇄 /// /// 진동벨번호 /// 알림톡유무 /// HappyPoint 적립유무 /// Ok CashBag 적립유무 /// public string PrintReceipt(string _bellNo, bool _isTalk, bool _isHappyPoint, bool _isOkCashBag) { if (NeedInitModule) return string.Empty; string result = string.Empty; //대기번호 var saleMain = new SaleMainProcess(); var sRet = ""; try { //var m_cTrnStatus = if (_isHappyPoint) { var m_cHappyPoint = (IPaymentExpUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.POINTHAPPYPOINT); Column.TR_ETC.DATA cEtcItem = (Column.TR_ETC.DATA)m_cHappyPoint.GetPayment(new string[] { }); ArrayList alEtcItem = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM); //cEtcItem.CANCEL_DIV = ItemConst.PAY_CANCEL_DIV.NORMAL; //cEtcItem.AMT_ENTRY_09 = 4000d; alEtcItem.Clear(); alEtcItem.Add(cEtcItem); } else if (_isOkCashBag) { //var m_cPntOcbSave = (IPaymentExpUs)sManager.InitServiceInstance(ServiceLists.BSV_PAYMENT.DLL, ServiceLists.BSV_PAYMENT.PNT_OCB_SAVE) //Column.TR_ETC.DATA cEtcItem = (Column.TR_ETC.DATA)m_cPntOcbSave.GetPayment(new string[] { }); //ArrayList alEtcItem = (ArrayList)StateObject.GetItemObject(Column.TR_ETC.ITEM); ////cEtcItem.CANCEL_DIV = ItemConst.PAY_CANCEL_DIV.NORMAL; ////cEtcItem.AMT_ENTRY_09 = 4000d; //alEtcItem.Clear(); //alEtcItem.Add(cEtcItem); } //영수증 인쇄 if (!string.IsNullOrEmpty(_bellNo)) { m_cTrnStatus.Head.OrderNo = _bellNo; m_cTrnStatus.Head.IsBellUse = "1"; } sRet = saleMain.CheckSaleComplete(true); //ISaleCompleteUs m_cSaleComplete = (ISaleCompleteUs)sManager.InitServiceInstance(ServiceLists.ASV_DATA_PROCESS.DLL, ServiceLists.ASV_DATA_PROCESS.SALE_COMPLETE); //var sRet = m_cSaleComplete.PosSaleExecute(new string[] { }); string sFilePath = BaseCom.NxCDPPath + PosConst.MST_IMG_PATH.CDP_COM + "NHS_카드_결제_완료_여_.wav"; CmUtil.PlaySound(sFilePath); result = m_cTrnStatus.Head.OrderNo; //대기번호 m_cTrnStatus.Head.OrderNo = ""; } catch (Exception ex) { CommonLog.ErrorLogWrite(this, "PrintReceipt()", "Fail !!", string.Format("{0}\n{1}", ex.Message, ex.StackTrace)); result = string.Empty; } finally { if (sRet.Equals(UserCom.ERROR)) DisposePos(); //에러발생 시 거래정보 초기화 에러 없으면 SaleMainProcess에서 초기화 하고 있음..2019.04.17 } return result; } /// /// 장바구니 전체 변경 /// /// /// public bool ResetItems(List _basketItems) { if (NeedInitModule) return false; bool result = true; try { //TODO : Clear All Data m_cDataService.DeleteTranItem();//주문화면에서 사용한 모든 거래 데이터 삭제 m_cDataService.InitTranHeader();//거래 정보 초기화 m_cTrnStatus.Head.TradeDiv = ItemConst.TRAN_DIV.NORMAL; m_cTrnStatus.Head.TradeKind = ItemConst.TRAN_KIND.NORMAL.SALE; if (_basketItems is List && _basketItems.Count > 0) { foreach (var basketItem in _basketItems) { result = SetItem(basketItem); if (!result) break; } } } catch (Exception ex) { CommonLog.ErrorLogWrite(this, "ResetItems()", "Fail !!", string.Format("{0}\n{1}", ex.Message, ex.StackTrace)); result = false; } return result; } public bool IsExistITEM_PLU_CD(string _pluCD) { bool result = false; try { var saleItems = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); foreach (var aSaleItem in saleItems) { if (aSaleItem is Column.TR_PLU.DATA aItem) { if (aItem.ITEM_PLU_CD.Equals(_pluCD)) { result = true; break; } } } } catch (Exception) { result = false; } return result; } /// /// 2019-04-10 - 1997fx11 : 장바구니 아이템 추가또는 업데이트 /// (존재하는 아이템은 업데이트 그외는 추가처리) /// /// /// public bool SetItem(M_BasketItem _basketItem) { if (NeedInitModule) return false; bool result = false; try { //Set Item Process string sRet = UserCom.RST_OK; string sSubStoreNo = "", sItemCode = "", sScanCode = ""; // 점포코드, 상품코드, 스켄코드 string sInPutTypeCode = "", sSelRow = "", sInPutData = ""; // (0:수입력, 1:메뉴, 2:스켄, 3:플레이버) + (메뉴코드,스캔코드), 선택행, 입력데이터 ISalePluItemUs cPluService = (ISalePluItemUs)sManager.InitServiceInstance(ServiceLists.BSV_SALE.DLL, ServiceLists.BSV_SALE.SALE_PLU_ITEM); sSubStoreNo = m_cPosStatus.Base.StoreNo; // 점포코드 sItemCode = _basketItem.ItemCode; // 상품코드 sInPutTypeCode = "1" + sSubStoreNo.PadLeft(7, '0') + sItemCode.PadLeft(9, ' '); //sInPutTypeCode = sSubStoreNo.PadLeft(7, '0') + sItemCode.PadLeft(9, ' '); if (_basketItem.Option == null) { //sRet = cPluService.SetItemCode(sSelRow, sInPutTypeCode, _basketItem.Count.ToString()); result = m_cSaleMainProc.ExecuteSaleMainProcess(PosKey.MENU_KEY.REGISTER_PLU_ITEM , _basketItem.Count.ToString() , sSelRow , PosConst.SALE_PLU_INPUT_TYPE.MENUKEY + sInPutTypeCode.Substring(1)); } else { string sTakeInOut = "1001"; // 기본값 : Take Out. string sUpCharge = "1004"; // 기본값 : 샷추가안함. //foreach (var option in _basketItem.Option) //{ // foreach (var opt in option.Options) // { // if (opt.IsSelected) // { // if (opt.Kind == OptionKind.Button) { sTakeInOut = opt.Code; } // else if (opt.Kind == OptionKind.UpCharge) { sUpCharge = opt.Code; } // } // } //} //sRet = cPluService.SetItemCode(sSelRow, sInPutTypeCode, _basketItem.Count.ToString()); result = m_cSaleMainProc.ExecuteSaleMainProcess(PosKey.MENU_KEY.REGISTER_PLU_ITEM , _basketItem.Count.ToString() , sSelRow , PosConst.SALE_PLU_INPUT_TYPE.MENUKEY + sInPutTypeCode.Substring(1)); foreach (var option in _basketItem.Option) { foreach (var opt in option.Options) { if (opt.IsSelected) { ArrayList aSaleItem = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); Column.TR_PLU.DATA cPluItem = new Column.TR_PLU.DATA(); DataTable dtDataInfo = new DataTable(); DataRow drPlu; sRet = UserCom.RST_OK; var findIndex = aSaleItem.Count - 1; for (var i = aSaleItem.Count - 1; i > -1; i--) { if (((Column.TR_PLU.DATA)aSaleItem[i]).ITEM_PLU_CD.Equals(_basketItem.ItemCode)) { findIndex = i; break; } } switch (opt.Kind) { case OptionKind.Button: dtDataInfo = m_cDataCommon.SearchNHSOption(sSubStoreNo, opt.Code); drPlu = dtDataInfo.Rows[0]; cPluItem = new Column.TR_PLU.DATA(); cPluItem.SUB_SHOP_CD = sSubStoreNo; cPluItem.ITEM_PLU_CD = opt.Code; cPluItem.ITEM_DIV = ItemConst.PLU_ITEM_DIV.OPT_MENU; cPluItem.SALE_QTY = _basketItem.Count; cPluItem.ITEM_NAME = ">>" + CmUtil.GetDataRowStr(drPlu, PosMst.NHS_OPTN_MST.DATA.ITEM_OPTN_NM); ; cPluItem.SUBPRC_MENU_KEY_DIV = "1"; // 부가메뉴구분(1:속성,2:업차지,3:선택메뉴) cPluItem.NONSALES_RSN_CD = "0"; cPluItem.NONSALES_RSN_NM = ""; cPluItem.SUB_MENU_MAIN_CD = sItemCode; aSaleItem.Add(cPluItem); // 등록 처리 break; case OptionKind.Count: dtDataInfo = m_cDataCommon.SearchNHSOption(sSubStoreNo, opt.Code); drPlu = dtDataInfo.Rows[0]; cPluItem = new Column.TR_PLU.DATA(); cPluItem.SUB_SHOP_CD = sSubStoreNo; cPluItem.ITEM_PLU_CD = opt.Code; // sItemCode; cPluItem.ITEM_DIV = ItemConst.PLU_ITEM_DIV.OPT_MENU; cPluItem.SALE_QTY = (long)opt.SelectValue; cPluItem.ITEM_NAME = ">>" + CmUtil.GetDataRowStr(drPlu, PosMst.NHS_OPTN_MST.DATA.ITEM_OPTN_NM); cPluItem.SUBPRC_MENU_KEY_DIV = "1"; // 부가메뉴구분(1:속성,2:업차지,3:선택메뉴) cPluItem.NONSALES_RSN_CD = "0"; cPluItem.NONSALES_RSN_NM = ""; cPluItem.SUB_MENU_MAIN_CD = sItemCode; aSaleItem.Add(cPluItem); // 등록 처리 break; case OptionKind.Discount: ((Column.TR_PLU.DATA)aSaleItem[findIndex]).EXCEP_DC_AMT = ((opt.SelectValue < 0 ? (opt.SelectValue * (-1)) : opt.SelectValue) * _basketItem.Count); ((Column.TR_PLU.DATA)aSaleItem[findIndex]).EXCEP_DC_DIV = ((opt.SelectValue * (-1)) > 0 ? ItemConst.PLU_DC_DIV.ELOVE_DC : "0000"); break; case OptionKind.UpCharge: dtDataInfo = m_cDataCommon.SearchNHSOption(sSubStoreNo, opt.Code); drPlu = dtDataInfo.Rows[0]; cPluItem = new Column.TR_PLU.DATA(); cPluItem.SUB_SHOP_CD = sSubStoreNo; cPluItem.ITEM_PLU_CD = opt.KindCode; cPluItem.ITEM_DIV = ItemConst.PLU_ITEM_DIV.OPT_MENU; cPluItem.SALE_QTY = _basketItem.Count; cPluItem.ITEM_NAME = ">>" + CmUtil.GetDataRowStr(drPlu, PosMst.NHS_OPTN_MST.DATA.ITEM_OPTN_NM); cPluItem.SUBPRC_MENU_KEY_DIV = "2"; // 부가메뉴구분(1:속성,2:업차지,3:선택메뉴) cPluItem.NONSALES_RSN_CD = "0"; cPluItem.NONSALES_RSN_NM = ""; cPluItem.SUB_MENU_MAIN_CD = sItemCode; cPluItem.SALE_PRC = CmUtil.DoubleParse(CmUtil.GetDataRowStr(drPlu, PosMst.NHS_OPTN_MST.DATA.AMT)); aSaleItem.Add(cPluItem); // 등록 처리 break; } //switch (opt.Kind) //{ // case OptionKind.Button: // if (opt.Code.Equals("1001") || opt.Code.Equals("1002")) // { // dtDataInfo = m_cDataCommon.SearchNHSOption(sSubStoreNo, opt.Code); // drPlu = dtDataInfo.Rows[0]; // if (opt.Code.Equals("1001")) { ((Column.TR_PLU.DATA)aSaleItem[findIndex]).TAKE_IN_OUT_DIV = PosConst.TAKE_IN_OUT_DIV.TAKE_OUT; } // else if (opt.Code.Equals("1002")) { ((Column.TR_PLU.DATA)aSaleItem[findIndex]).TAKE_IN_OUT_DIV = PosConst.TAKE_IN_OUT_DIV.TAKE_IN; } // cPluItem = new Column.TR_PLU.DATA(); // cPluItem.SUB_SHOP_CD = sSubStoreNo; // cPluItem.ITEM_PLU_CD = opt.Code; // cPluItem.ITEM_DIV = ItemConst.PLU_ITEM_DIV.OPT_MENU; // cPluItem.SALE_QTY = _basketItem.Count; // cPluItem.ITEM_NAME = ">>" + CmUtil.GetDataRowStr(drPlu, PosMst.NHS_OPTN_MST.DATA.ITEM_OPTN_NM); ; // cPluItem.SUBPRC_MENU_KEY_DIV = "1"; // 부가메뉴구분(1:속성,2:업차지,3:선택메뉴) // cPluItem.NONSALES_RSN_CD = "0"; // cPluItem.NONSALES_RSN_NM = ""; // cPluItem.SUB_MENU_MAIN_CD = sItemCode; // //cPluItem.PROD_TAKEINOUT_DIV = dgvPluItem.Rows[iRow].Cells[6].Value.ToString(); // aSaleItem.Add(cPluItem); // 등록 처리 // } // break; // case OptionKind.Discount: // ((Column.TR_PLU.DATA)aSaleItem[findIndex]).EXCEP_DC_AMT = ((opt.SelectValue < 0 ? (opt.SelectValue * (-1)) : opt.SelectValue) * _basketItem.Count); // ((Column.TR_PLU.DATA)aSaleItem[findIndex]).EXCEP_DC_DIV = ((opt.SelectValue * (-1)) > 0 ? ItemConst.PLU_DC_DIV.ELOVE_DC : "0000"); // break; // case OptionKind.UpCharge: // dtDataInfo = m_cDataCommon.SearchItemCode(sSubStoreNo, opt.KindCode, sScanCode); // drPlu = dtDataInfo.Rows[0]; // cPluItem = new Column.TR_PLU.DATA(); // cPluItem.SUB_SHOP_CD = sSubStoreNo; // cPluItem.ITEM_PLU_CD = opt.KindCode; // cPluItem.ITEM_DIV = ItemConst.PLU_ITEM_DIV.OPT_MENU; // if (sTakeInOut.Equals("1001")) // { // cPluItem.SALE_PRC = CmUtil.DoubleParse(CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.TAKE_OUT_SALE_AMT)); // } // else // { // cPluItem.SALE_PRC = CmUtil.DoubleParse(CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.TAKE_IN_SALE_AMT)); // } // cPluItem.SALE_QTY = _basketItem.Count; // cPluItem.ITEM_NAME = ">>" + CmUtil.GetDataRowStr(drPlu, PosMst.MST_ITEM.DATA.ITEM_NM); // cPluItem.SUBPRC_MENU_KEY_DIV = "2"; // 부가메뉴구분(1:속성,2:업차지,3:선택메뉴) // cPluItem.NONSALES_RSN_CD = "0"; // cPluItem.NONSALES_RSN_NM = ""; // cPluItem.SUB_MENU_MAIN_CD = sItemCode; // //cPluItem.PROD_TAKEINOUT_DIV = dgvPluItem.Rows[iRow].Cells[6].Value.ToString(); // aSaleItem.Add(cPluItem); // 등록 처리 // break; // case OptionKind.Count: // if (opt.Code.Equals("1006") || opt.Code.Equals("1007")) // { // dtDataInfo = m_cDataCommon.SearchNHSOption(sSubStoreNo, opt.Code); // drPlu = dtDataInfo.Rows[0]; // cPluItem = new Column.TR_PLU.DATA(); // cPluItem.SUB_SHOP_CD = sSubStoreNo; // cPluItem.ITEM_PLU_CD = opt.Code; // sItemCode; // cPluItem.ITEM_DIV = ItemConst.PLU_ITEM_DIV.OPT_MENU; // cPluItem.SALE_QTY = (long)opt.SelectValue; // cPluItem.ITEM_NAME = ">>" + CmUtil.GetDataRowStr(drPlu, PosMst.NHS_OPTN_MST.DATA.ITEM_OPTN_NM); // cPluItem.SUBPRC_MENU_KEY_DIV = "1"; // 부가메뉴구분(1:속성,2:업차지,3:선택메뉴) // cPluItem.NONSALES_RSN_CD = "0"; // cPluItem.NONSALES_RSN_NM = ""; // cPluItem.SUB_MENU_MAIN_CD = sItemCode; // //cPluItem.PROD_TAKEINOUT_DIV = dgvPluItem.Rows[iRow].Cells[6].Value.ToString(); // aSaleItem.Add(cPluItem); // 등록 처리 // } // break; // default: // break; //} if (sRet != UserCom.RST_OK) { break; } } if (sRet != UserCom.RST_OK) { break; } } } } //if (sRet == UserCom.RST_OK) { result = true; } //else { result = false; } } catch (Exception ex) { CommonLog.ErrorLogWrite(this, "SetItem()", "Fail !!", string.Format("{0}\n{1}", ex.Message, ex.StackTrace)); result = false; } return result; } /// /// 장바구니 아이템 삭제 또는 업데이트 /// (수량이 동일 하면 삭제 다르면 업데이트 필요) /// /// /// public bool DelItem(M_BasketItem _basketItem) { bool result = false; try { //TODO : Delete Item Process //result = m_cSaleMainProc.CancelPluItem(_basketItem.p_Index.ToString()); m_cSaleMainProc.CancelPluItem("0"); result = true; } catch (Exception ex) { CommonLog.ErrorLogWrite(this, "DelItem()", "Fail !!", string.Format("{0}\n{1}", ex.Message, ex.StackTrace)); result = false; } return result; } /// /// 장바구니옵션 변경 /// (수량이 동일 하면 삭제 다르면 업데이트 필요) /// /// /// public bool UpdatedItem(M_BasketItem _basketItem) { bool result = false; try { //TODO : Delete Item Process result = true; } catch (Exception ex) { CommonLog.ErrorLogWrite(this, "DelItem()", "Fail !!", string.Format("{0}\n{1}", ex.Message, ex.StackTrace)); result = false; } return result; } #endregion Methods public ObservableCollection AddItemToBasket(ObservableCollection _targetBasket , int _itemCount , double _unitPrice , string _designImagesPath , M_ItemData _itemData , List _option , BasketItemType _basketItemType = BasketItemType.Order) { ObservableCollection result = null; try { var optionLabel = CommonFunction.GetOptionLabel(_option); var findSameData = _targetBasket is ObservableCollection ? _targetBasket.Where(r => r.ItemCode.Equals(_itemData.ItemCode) && r.AllOptionLabel.GetLanguageData(SupportLanguageType.ko).Replace("[행사]", "").Equals(optionLabel.GetLanguageData(SupportLanguageType.ko))).FirstOrDefault() : null; var itemIndex = 0; if (findSameData is M_BasketItem findedItem) { itemIndex = findSameData.p_Index; findedItem.Count += _itemCount; //SetItem(findedItem); //수량 증가 //m_cSaleMainProc.ExecuteSaleMainProcess(PosKey.MENU_KEY.QTY_PLUS, "", itemIndex.ToString(), ""); } else { var newBasketData = _targetBasket is ObservableCollection ? _targetBasket.ToList() : new List(); //foreach (var aitem in newBasketData) //{ // aitem.Index += 1; //} //var pIdx = 0; //if (newBasketData.Count != 0) pIdx++; itemIndex = newBasketData.Count.Equals(0) ? 0 : newBasketData.Max(r => r.p_Index) + 1; var newBasketItem = new M_BasketItem { Index = 0, p_Index = itemIndex, ItemType = _basketItemType, ItemCode = _itemData.ItemCode, ItemImage = _itemData.DataParameter.NormalBrush, ItemName = _itemData.BaseTextBlock.LanguageData, AllOptionLabel = optionLabel, Option = _option, Count = _itemCount, BasePrice = _itemData.Price, Price = _unitPrice, ItemCountLabel = new List { new M_Language {Type=SupportLanguageType.ko,LanguageData=@"개"}, new M_Language {Type=SupportLanguageType.en,LanguageData=@"EA"} }, ItemPriceLabel = new List { new M_Language {Type=SupportLanguageType.ko,LanguageData=@"\"} }, MinusNormalBrush = ResourceManager.GetNximagePathAdd("btn_count_minus_n.png", _designImagesPath), MinusDownBrush = ResourceManager.GetNximagePathAdd("btn_count_minus_p.png", _designImagesPath), PlusNormalBrush = ResourceManager.GetNximagePathAdd("btn_count_plus_n.png", _designImagesPath), PlusDownBrush = ResourceManager.GetNximagePathAdd("btn_count_plus_p.png", _designImagesPath) }; //SetItem(newBasketItem); //var saleItems = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); //foreach(var aItems in saleItems) //{ // if(((Column.TR_PLU.DATA)aItems).CPI_DC_AMT > 0) // { // newBasketItem.Price = newBasketItem.Price - ((Column.TR_PLU.DATA)aItems).CPI_DC_AMT; // } //} //상품등록 처리(POS) m_cPosStatus.Sale.SaleFlow = PosConst.SALE_FLOW.SALE_WAIT; //판매대기 ISalePluItemUs cPluService = (ISalePluItemUs)sManager.InitServiceInstance(ServiceLists.BSV_SALE.DLL, ServiceLists.BSV_SALE.SALE_PLU_ITEM); var sSubStoreNo = m_cPosStatus.Base.StoreNo; // 점포코드 var sItemCode = newBasketItem.ItemCode; // 상품코드 var sMenuCode = "1" + sSubStoreNo.PadLeft(7, '0') + sItemCode.PadLeft(9, ' '); //bool bRet = m_cSaleMainProc.ExecuteSaleMainProcess(PosKey.MENU_KEY.REGISTER_PLU_ITEM, sInPutValue, "", PosConst.SALE_PLU_INPUT_TYPE.MENUKEY + sMenuCode.Substring(1)); bool bRet = m_cSaleMainProc.ExecuteSaleMainProcess(PosKey.MENU_KEY.REGISTER_PLU_ITEM, "", itemIndex.ToString(), PosConst.SALE_PLU_INPUT_TYPE.MENUKEY + sMenuCode.Substring(1)); //var nStat = cPluService.SetItemCode(itemIndex.ToString(), PosConst.SALE_PLU_INPUT_TYPE.MENUKEY, m_cPosStatus.Base.StoreNo, newBasketItem.ItemCode, "", newBasketItem.Count.ToString()); if (bRet) { itemIndex = 0; var saleItems = (ArrayList)StateObject.GetItemObject(Column.TR_PLU.ITEM); if (((Column.TR_PLU.DATA)saleItems[itemIndex]).CPI_DC_AMT > 0) { newBasketItem.CampaignPrice = ((Column.TR_PLU.DATA)saleItems[itemIndex]).CPI_DC_AMT; newBasketItem.Price = _itemData.Price - newBasketItem.CampaignPrice; var addOptionLabel = new List { new M_Language {Type=SupportLanguageType.ko,LanguageData=@"[행사]"}, new M_Language {Type=SupportLanguageType.en,LanguageData=@"[EVENT]"} }; newBasketItem.AllOptionLabel = optionLabel is List ? Languages.CombineLanguageData(addOptionLabel, optionLabel) : addOptionLabel; } newBasketData.Insert(0, newBasketItem); DelItem(newBasketItem); } else { CommonLog.ErrorLogWrite(this, "AddItemToBasket()", "Fail !!", string.Format("\nItemCode={0}", newBasketItem.ItemCode)); } //if (bRet == true) // newBasketData.Insert(0, newBasketItem); result = new ObservableCollection(newBasketData); } } catch (Exception ex) { CommonLog.ErrorLogWrite(this, "AddItemToBasket()", "Fail !!", string.Format("{0}\n{1}", ex.Message, ex.StackTrace)); result = null; } return result; } /// /// 바코드 데이터 초기화 /// public void LastBarcodeDelete() { m_cPosStatus.Base.LastRcptBarcodeData = string.Empty; } } }