using System; using System.Collections.Generic; using System.ComponentModel; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Threading; using System.Windows; using System.Windows.Input; using System.Windows.Threading; using SPC.Kiosk.Base; using SPC.Kiosk.Common; using SPC.Kiosk.Popup.Model; using SPC.Kiosk.Payments; using SPC.Kiosk.DataHelper; namespace SPC.Kiosk.Popup.ViewModel { /// /// PaymentsEnd.xaml에 대한 ViewModel /// public class VmPaymentsEnd : PopupViewModelBase { #region [ Members ] private PosDataService posDataService = null; public WaitWindow WaitWindowFrom { get; set; } private List basketData; public List BasketData { get { return basketData; } set { basketData = value; PropertyChange("BasketData"); } } private string titileImage; /// /// Cash Image /// public string TitileImage { get { return titileImage; } set { titileImage = value; PropertyChange("TitileImage"); } } private List headerText; /// /// Top Header Text (first Grid) /// public List HeaderText { get { return headerText; } set { headerText = value; PropertyChange("HeaderText"); } } private List scanGuidText; /// /// Second Header Text (first Grid) /// public List ScanGuidText { get { return scanGuidText; } set { scanGuidText = value; PropertyChange("ScanGuidText"); } } private List infoGuid1Text; /// /// Bootom first infomation text (first Grid) /// public List InfoGuid1Text { get { return infoGuid1Text; } set { infoGuid1Text = value; PropertyChange("InfoGuid1Text"); } } private List infoGuid2Text; /// /// Bottom second infomation text (first Grid) /// public List InfoGuid2Text { get { return infoGuid2Text; } set { infoGuid2Text = value; PropertyChange("InfoGuid2Text"); } } private List totalPayHeaderText; /// /// Payments Total Header Text /// public List TotalPayHeaderText { get { return totalPayHeaderText; } set { totalPayHeaderText = value; PropertyChange("TotalPayHeaderText"); } } private List queryPointsHeaderText; /// /// Member Point Header Text /// public List QueryPointsHeaderText { get { return queryPointsHeaderText; } set { queryPointsHeaderText = value; PropertyChange("QueryPointsHeaderText"); } } private double cashPayments; /// /// Payments Total /// public double CashPayments { get { return cashPayments; } set { cashPayments = value; PropertyChange("CashPayments"); } } private double cashTax; /// /// Payments Total /// public double CashTax { get { return cashTax; } set { cashTax = value; PropertyChange("CashTax"); } } private List cancelButtonText; /// /// Cancel Button Text /// public List CancelButtonText { get { return cancelButtonText; } set { cancelButtonText = value; PropertyChange("CancelButtonText"); } } private double cancelButtonWidth = 650d; /// /// Cancel Button Width /// public double CancelButtonWidth { get { return cancelButtonWidth; } set { cancelButtonWidth = value; PropertyChange("CancelButtonWidth"); } } private double okButtonWidth = 650d; /// /// OK Button Width /// public double OKButtonWidth { get { return okButtonWidth; } set { okButtonWidth = value; PropertyChange("OKButtonWidth"); } } private List okButtonText; /// /// OK Button Text /// public List OkButtonText { get { return okButtonText; } set { okButtonText = value; PropertyChange("OkButtonText"); } } private bool oKButtonEnabled = false; /// /// OK Button Enabled /// public bool OKButtonEnabled { get { return oKButtonEnabled; } set { oKButtonEnabled = value; PropertyChange("OKButtonEnabled"); } } private bool talkGetButtonEnabled = false; /// /// OK Button Enabled /// public bool TalkGetButtonEnabled { get { return talkGetButtonEnabled; } set { talkGetButtonEnabled = value; PropertyChange("TalkGetButtonEnabled"); } } private bool storeAgreeView; public bool StoreAgreeView { get { return storeAgreeView; } set { storeAgreeView = value; PropertyChange("StoreAgreeView"); } } private M_StoreAgree storeAgreeData; /// /// Sotre Agree Data /// public M_StoreAgree StoreAgreeData { get { return storeAgreeData; } set { storeAgreeData = value; PropertyChange("StoreAgreeData"); } } #region CashReceipt private bool cashReceiptVisible = false; /// /// 인증 시작 화면 Visible /// public bool CashReceiptVisible { get { return cashReceiptVisible; } set { cashReceiptVisible = value; PropertyChange("CashReceiptVisible"); } } private string cashReceipTitileImage; /// /// CashReceip Titile Image /// public string CashReceipTitileImage { get { return cashReceipTitileImage; } set { cashReceipTitileImage = value; PropertyChange("CashReceipTitileImage"); } } private string cashReceipButtonBackground; /// /// CashReceip Button Background /// public string CashReceipButtonBackground { get { return cashReceipButtonBackground; } set { cashReceipButtonBackground = value; PropertyChange("CashReceipButtonBackground"); } } private string cashTypePersonButtonNormal; /// /// CashType Person Button Normal /// public string CashTypePersonButtonNormal { get { return cashTypePersonButtonNormal; } set { cashTypePersonButtonNormal = value; PropertyChange("CashTypePersonButtonNormal"); } } private string cashTypePersonButtonDisable; /// /// CashType Person Button Disable /// public string CashTypePersonButtonDisable { get { return cashTypePersonButtonDisable; } set { cashTypePersonButtonDisable = value; PropertyChange("CashTypePersonButtonDisable"); } } private bool cashTypePersonEnable = false; /// /// CashType Serson Enabled /// public bool CashTypePersonEnable { get { return cashTypePersonEnable; } set { cashTypePersonEnable = value; PropertyChange("CashTypePersonEnable"); } } private List cashTypePersonText; /// /// CashType Serson Button text /// public List CashTypePersonText { get { return cashTypePersonText; } set { cashTypePersonText = value; PropertyChange("CashTypePersonText"); } } private string cashTypeCompanyButtonNormal; /// /// CashType Company Button Normal /// public string CashTypeCompanyButtonNormal { get { return cashTypeCompanyButtonNormal; } set { cashTypeCompanyButtonNormal = value; PropertyChange("CashTypeCompanyButtonNormal"); } } private string cashTypeCompanyButtonDisable; /// /// CashType Company Button Disable /// public string CashTypeCompanyButtonDisable { get { return cashTypeCompanyButtonDisable; } set { cashTypeCompanyButtonDisable = value; PropertyChange("CashTypeCompanyButtonDisable"); } } public bool cashTypeCompanyEnable = true; /// /// CashType Serson Enabled /// public bool CashTypeCompanyEnable { get { return cashTypeCompanyEnable; } set { cashTypeCompanyEnable = value; PropertyChange("CashTypeCompanyEnable"); } } private List cashTypeCompanyText; /// /// All Point Using Button text /// public List CashTypeCompanyText { get { return cashTypeCompanyText; } set { cashTypeCompanyText = value; PropertyChange("CashTypeCompanyText"); } } private string inputNumber = string.Empty; /// /// Input Numner Point Text /// public string InputNumber { get { return inputNumber; } set { inputNumber = value; PropertyChange("InputNumber"); } } private List numPadGuidText; /// /// Number Pad Input Guide Text /// public List NumPadGuidText { get { return numPadGuidText; } set { numPadGuidText = value; PropertyChange("NumPadGuidText"); } } private int numPadMaxLength; /// /// Point Pad Input Max Length /// public int NumPadMaxLength { get { return numPadMaxLength; } set { numPadMaxLength = value; PropertyChange("NumPadMaxLength"); } } private bool numPadFormated = false; /// /// NumPad Formated /// public bool NumPadFormated { get { return numPadFormated; } set { numPadFormated = value; PropertyChange("NumPadFormated"); } } private bool numPadInputVisible = false; /// /// Number Pad Points Visible /// public bool NumPadInputVisible { get { return numPadInputVisible; } set { numPadInputVisible = value; PropertyChange("NumPadInputVisible"); } } private bool numPadGuideVisible = true; /// /// Nummber Pad Guid Visible /// public bool NumPadGuideVisible { get { return numPadGuideVisible; } set { numPadGuideVisible = value; PropertyChange("NumPadGuideVisible"); } } #endregion #region Processing private bool processingVisible = false; /// /// 처리 진행 화면 Visible /// public bool ProcessingVisible { get { return processingVisible; } set { processingVisible = value; PropertyChange("ProcessingVisible"); } } private string processingGIF; /// /// Processing GIF /// public string ProcessingGIF { get { return processingGIF; } set { processingGIF = value; PropertyChange("ProcessingGIF"); } } private List processingMessageText; /// /// Processing Message Text /// public List ProcessingMessageText { get { return processingMessageText; } set { processingMessageText = value; PropertyChange("ProcessingMessageText"); } } private List processingGuide; /// /// Processing Guide Text /// public List ProcessingGuide { get { return processingGuide; } set { processingGuide = value; PropertyChange("ProcessingGuide"); } } #endregion #region BellOrNotifyTalk private bool bellOrNotifyTalkVisible = false; /// /// 처리 진행 화면 Visible /// public bool BellOrNotifyTalkVisible { get { return bellOrNotifyTalkVisible; } set { bellOrNotifyTalkVisible = value; PropertyChange("BellOrNotifyTalkVisible"); } } private string bellOrNotifyTalkTitileImage; /// /// BellOrNotifyTalk Titile Image /// public string BellOrNotifyTalkTitileImage { get { return bellOrNotifyTalkTitileImage; } set { bellOrNotifyTalkTitileImage = value; PropertyChange("BellOrNotifyTalkTitileImage"); } } private List bellOrNotifyTalkText; /// /// Bell Button Text /// public List BellOrNotifyTalkText { get { return bellOrNotifyTalkText; } set { bellOrNotifyTalkText = value; PropertyChange("BellOrNotifyTalkText"); } } private bool bellButtonEnable = false; /// /// Bell Button Enable /// public bool BellButtonEnable { get { return bellButtonEnable; } set { bellButtonEnable = value; PropertyChange("BellButtonEnable"); } } private List bellButtonText; /// /// Bell Button Text /// public List BellButtonText { get { return bellButtonText; } set { bellButtonText = value; PropertyChange("BellButtonText"); } } private bool talkButtonEnable = true; /// /// Talk Button Enable /// public bool TalkButtonEnable { get { return talkButtonEnable; } set { talkButtonEnable = value; PropertyChange("TalkButtonEnable"); } } private List talkButtonText; /// /// Talk Button Text /// public List TalkButtonText { get { return talkButtonText; } set { talkButtonText = value; PropertyChange("TalkButtonText"); } } private string talkNumPadNumber = string.Empty; /// /// TalkNumPad Number /// public string TalkNumPadNumber { get { return talkNumPadNumber; } set { talkNumPadNumber = value; PropertyChange("TalkNumPadNumber"); } } private List talkNumPadGuidText; /// /// Number Pad Input Guide Text /// public List TalkNumPadGuidText { get { return talkNumPadGuidText; } set { talkNumPadGuidText = value; PropertyChange("TalkNumPadGuidText"); } } private int talkNumPadMaxLength; /// /// Point Pad Input Max Length /// public int TalkNumPadMaxLength { get { return talkNumPadMaxLength; } set { talkNumPadMaxLength = value; PropertyChange("TalkNumPadMaxLength"); } } private bool talkNumPadFormated = true; /// /// TalkNumPad Guide Visible /// public bool TalkNumPadFormated { get { return talkNumPadFormated; } set { talkNumPadFormated = value; PropertyChange("TalkNumPadFormated"); } } private bool talkNumPadInputVisible = false; /// /// TalkNumPad InputNumber Visible /// public bool TalkNumPadInputVisible { get { return talkNumPadInputVisible; } set { talkNumPadInputVisible = value; PropertyChange("TalkNumPadInputVisible"); } } private bool talkNumPadGuideVisible = true; /// /// TalkNumPad Guide Visible /// public bool TalkNumPadGuideVisible { get { return talkNumPadGuideVisible; } set { talkNumPadGuideVisible = value; PropertyChange("TalkNumPadGuideVisible"); } } #endregion #region PaymentSuccess private bool paymentSuccessVisible = false; /// /// 처리 완료 화면 Visible /// public bool PaymentSuccessVisible { get { return paymentSuccessVisible; } set { paymentSuccessVisible = value; PropertyChange("PaymentSuccessVisible"); } } private string successImage; /// /// Sucess Icon /// public string SuccessImage { get { return successImage; } set { successImage = value; PropertyChange("SuccessImage"); } } private List successText; /// /// Sucess Guide Text /// public List SuccessText { get { return successText; } set { successText = value; PropertyChange("SuccessText"); } } #endregion #region TalkSuccess private bool talkSuccessVisible = false; /// /// 처리 완료 화면 Visible /// public bool TalkSuccessVisible { get { return talkSuccessVisible; } set { talkSuccessVisible = value; PropertyChange("TalkSuccessVisible"); } } private string talkSuccessImage; /// /// Sucess Icon /// public string TalkSuccessImage { get { return talkSuccessImage; } set { talkSuccessImage = value; PropertyChange("TalkSuccessImage"); } } private List talkSuccessText; /// /// Sucess Guide Text /// public List TalkSuccessText { get { return talkSuccessText; } set { talkSuccessText = value; PropertyChange("TalkSuccessText"); } } private List talkSuccessInfoText; /// /// Sucess Guide Text /// public List TalkSuccessInfoText { get { return talkSuccessInfoText; } set { talkSuccessInfoText = value; PropertyChange("TalkSuccessInfoText"); } } #endregion #region WaitNumberSuccess private bool waitNumberSuccessVisible = false; /// /// 처리 완료 화면 Visible /// public bool WaitNumberSuccessVisible { get { return waitNumberSuccessVisible; } set { waitNumberSuccessVisible = value; PropertyChange("WaitNumberSuccessVisible"); } } private List waitNumberHeaderText; /// /// Sucess Guide Text /// public List WaitNumberHeaderText { get { return waitNumberHeaderText; } set { waitNumberHeaderText = value; PropertyChange("WaitNumberHeaderText"); } } private string waitNumberText; /// /// Sucess Guide Text /// public string WaitNumberText { get { return waitNumberText; } set { waitNumberText = value; PropertyChange("WaitNumberText"); } } private List successInfoText; /// /// Sucess Guide Text /// public List SuccessInfoText { get { return successInfoText; } set { successInfoText = value; PropertyChange("SuccessInfoText"); } } /// /// Point Saving Button OK /// private bool pointSavingButtonOk = false; public bool PointSavingButtonOk { get { return pointSavingButtonOk; } set { pointSavingButtonOk = value; PropertyChange("PointSavingButtonOk"); } } /// /// Point Saving Button Background /// private string pointSavingButtonBackground; public string PointSavingButtonBackground { get { return pointSavingButtonBackground; } set { pointSavingButtonBackground = value; PropertyChange("PointSavingButtonBackground"); } } /// /// Point Image /// private string waitNumberSuccessPointImage; public string WaitNumberSuccessPointImage { get { return waitNumberSuccessPointImage; } set { waitNumberSuccessPointImage = value; PropertyChange("WaitNumberSuccessPointImage"); } } #endregion private PaymentEndWindowEndType endWindow = PaymentEndWindowEndType.None; public PaymentEndWindowEndType EndWindow { get { return endWindow; } set { endWindow = value; PropertyChange("EndWindow"); } } private PaymentEndWindowType paymentEndWindow = PaymentEndWindowType.None; /// /// Current View Window /// public PaymentEndWindowType PaymentEndWindow { get { return paymentEndWindow; } set { paymentEndWindow = value; PropertyChange("PaymentEndWindow"); } } private bool bellAnsTalkToggleVisible = true; public bool BellAnsTalkToggleVisible { get { return bellAnsTalkToggleVisible; } set { bellAnsTalkToggleVisible = value; PropertyChange("BellAnsTalkToggleVisible"); } } private double popupWidth = 1300; /// /// Popup Whidth (For Calculate OK Button Width) /// public double PopupWidth { get { return popupWidth; } set { popupWidth = value; PropertyChange("PopupWidth"); } } private M_PaymentEndReturn paymentEndReturn; /// /// HappyPoint 인증 정보 /// public M_PaymentEndReturn PaymentEndReturn { get { return paymentEndReturn; } set { paymentEndReturn = value; PropertyChange("PaymentEndReturn"); } } /// /// OK Click Command /// public ICommand OkCommand { get; protected set; } /// /// Cancel Click Command /// public ICommand CancelCommand { get; protected set; } /// /// Cash Type Person Command /// public ICommand CashTypePersonCommand { get; protected set; } /// /// Cash Type Company Command /// public ICommand CashTypeCompanyCommand { get; protected set; } /// /// Bell Button Command /// public ICommand BellButtonCommand { get; protected set; } /// /// Talk Button Command /// public ICommand TalkButtonCommand { get; protected set; } /// /// Store Agree Command /// public ICommand StoreAgreeCommand { get; protected set; } /// /// Point Saving Button Command /// public ICommand PointSavingButtonCommand { get; protected set; } /// /// Talk Get Button Command /// public ICommand TalkGetButtonCommand { get; protected set; } /// /// All Points Using Click Command /// public bool ImmediatelyClose { get; protected set; } = false; /// /// Happy Point Reserve /// public bool HappyPointReserve { get; set; } /// /// OkCashBag Reserve /// public bool OkCashBagReserve { get; set; } private M_HappyPointReturn happyPointReturn; /// /// Happy Point Return /// public M_HappyPointReturn HappyPointReturn { get { return happyPointReturn; } set { happyPointReturn = value; PropertyChange("HappyPointReturn"); } } private bool ProcessStart = false; private posLastPayments LastPayments = null; private Task ProcessTask = null; private string certifyKey = string.Empty; private string divType = "0"; // "0"=개인(소득공제) ,"1"=사업자(증빙제출) #endregion Members #region [ Ctor ] /// /// Ctor /// public VmPaymentsEnd() { posDataService = new PosDataService(); WaitWindowFrom = WaitWindow.GetInstance; WaitWindowFrom.CloseWaitWindow(); OkCommand = new Command(OkCommandHandler); CancelCommand = new Command(CancelCommandHandler); CashTypePersonCommand = new Command(CashTypePersonCommandHandler); CashTypeCompanyCommand = new Command(CashTypeCompanyCommandHandler); BellButtonCommand = new Command(BellButtonCommandHandler); TalkButtonCommand = new Command(TalkButtonCommandHandler); StoreAgreeCommand = new Command(StoreAgreeCommandHandler); PointSavingButtonCommand = new Command(PointSavingCommandHandler); TalkGetButtonCommand = new Command(TalkGetCommandHandler); this.PropertyChanged += VmPaymentsEnd_PropertyChanged; //TitileImage = ResourceManager.GetNximagePathAdd("img_gif_barcode_happy.gif", CommonValue.PBdesignImagesPath); CashReceipTitileImage = ResourceManager.GetNximagePathAdd("img_cashreceipt.png", CommonValue.PBdesignImagesPath); CashReceipButtonBackground = ResourceManager.GetNximagePathAdd("img_check_bg.png", CommonValue.PBdesignImagesPath); CashTypePersonButtonNormal = ResourceManager.GetNximagePathAdd("btn_check_n.png", CommonValue.PBdesignImagesPath); CashTypePersonButtonDisable = ResourceManager.GetNximagePathAdd("btn_check_s.png", CommonValue.PBdesignImagesPath); CashTypeCompanyButtonNormal = ResourceManager.GetNximagePathAdd("btn_check_n.png", CommonValue.PBdesignImagesPath); CashTypeCompanyButtonDisable = ResourceManager.GetNximagePathAdd("btn_check_s.png", CommonValue.PBdesignImagesPath); ProcessingGIF = ResourceManager.GetNximagePathAdd("ic_alert_ing2.gif", CommonValue.PBdesignImagesPath); SuccessImage = ResourceManager.GetNximagePathAdd("img_receipt.png", CommonValue.PBdesignImagesPath); TalkSuccessImage = ResourceManager.GetNximagePathAdd("ic_talk.png", CommonValue.PBdesignImagesPath); OkButtonText = Languages.GetMessages("BTN0033"); CancelButtonText = Languages.GetMessages("BTN0024"); CashTypePersonText = Languages.GetMessages("BTN0002"); CashTypeCompanyText = Languages.GetMessages("BTN0017"); SuccessText = Languages.GetMessages("LBL0030"); SuccessInfoText = Languages.GetMessages("LBL0076"); TalkSuccessText = Languages.GetMessages("LBL0075"); TalkSuccessInfoText = Languages.GetMessages("LBL0076"); ProcessingMessageText = Languages.GetMessages("LBL0087"); ProcessingGuide = Languages.GetMessages("LBL0028"); NumPadFormated = true; NumPadMaxLength = 11; NumPadGuidText = Languages.GetMessages("LBL0091"); BellOrNotifyTalkTitileImage = ResourceManager.GetNximagePathAdd("img_bell.png", CommonValue.PBdesignImagesPath); BellOrNotifyTalkText = Languages.GetMessages("LBL0078"); TalkNumPadFormated = false; TalkNumPadMaxLength = 3; TalkNumPadGuidText = Languages.GetMessages("LBL0104"); TotalPayHeaderText = Languages.GetMessages("PriceForPayment"); LastPayments = new posLastPayments(); WaitNumberSuccessPointImage = ResourceManager.GetNximagePathAdd("ic_point.png", CommonValue.PBdesignImagesPath); PointSavingButtonBackground = ResourceManager.GetNximagePathAdd("btn_store.png", CommonValue.PBdesignImagesPath); } /// /// Dispose /// public new void Dispose() { TitileImage = string.Empty; ProcessingGIF = string.Empty; this.PropertyChanged -= VmPaymentsEnd_PropertyChanged; if (posDataService != null) { posDataService.LastBarcodeDelete(); posDataService.Dispose(); posDataService = null; } if (ProcessTask != null) { ProcessTask.Dispose(); ProcessTask = null; } if (LastPayments != null) { CashReceiptRemoveEvents(); LastPayments.Dispose(); LastPayments = null; } base.Dispose(); } #endregion Ctor #region [ Methods ] private void SetStoreAgreeData() { var isFavoriteStore = HappyPointReturn is M_HappyPointReturn ? HappyPointReturn.IsFavoriteStore : false; StoreAgreeData = new M_StoreAgree { IsFavoriteStore = isFavoriteStore, DisplayLanguage = ShowLanguageType, Header = isFavoriteStore ? new List { new M_Language { Type=SupportLanguageType.ko, LanguageData="단골매장"} } : Languages.GetMessages("LBL0039"), BackgroundImage = ResourceManager.GetNximagePathAdd("store_bg.png", CommonValue.PBdesignImagesPath), StoreImage = ResourceManager.GetNximagePathAdd("ic_store.png", CommonValue.PBdesignImagesPath), StoreName = posDataService != null ? posDataService.StoreName() : string.Empty, FirstInfoText = Languages.GetMessages("LBL0040"), SecondInfoText = Languages.GetMessages("LBL0019"), WelcomeInfoText = new List { new M_Language { Type=SupportLanguageType.ko, LanguageData="고객님 저희 매장을 방문해 주셔서 감사합니다."} }, ButtonNormalBrush = ResourceManager.GetNximagePathAdd("btn_store_agree_n2.png", CommonValue.PBdesignImagesPath), ButtonSwitchOnBrush = "Transparent", ButtonText = Languages.GetMessages("BTN0010"), }; } private void TestDelay() { Thread.Sleep(1000); } private void CashReceiptCreateEvents() { if (LastPayments != null) { LastPayments.ReadStart += LastPayments_ReadStart; LastPayments.ReadEnd += LastPayments_ReadEnd; } } private void CashReceiptRemoveEvents() { if (LastPayments != null) { LastPayments.ReadStart -= LastPayments_ReadStart; LastPayments.ReadEnd -= LastPayments_ReadEnd; } } private void DoCashReceiptProcessing() { ProcessStart = true; TimerEnabled = false; CashReceiptCreateEvents(); var processTask = new Task(() => LastPayments.StartCashBill(InputNumber,divType,CashPayments,CashTax)); processTask.Start(); processTask.Wait(); DoBeforeReceiptPrint(); CashReceiptRemoveEvents(); processTask = null; ProcessStart = false; TimerEnabled = true; } private void DoNewMemberRequest() { ProcessStart = true; TimerEnabled = false; WaitWindowFrom.ShowWaitWindow(); var korItemName = BasketData.FirstOrDefault().ItemName.GetLanguageData(SupportLanguageType.ko); var itemCount = BasketData.Sum(r => r.Count).ToString(); //TODO:비회원 입력 전화 번호 처리 (InputNumber) using (var commonDataHelper = new DataHelper.CommonDataHelper()) { commonDataHelper.Send_NoticeTalk(InputNumber, korItemName, itemCount); } // test //DoReceiptPrint(); //TestDelay(); WaitWindowFrom.CloseWaitWindow(); ProcessStart = false; CanWindowClose = true; } private void DoRegFavoriteStore()//DoRegFavoriteStore { ProcessStart = true; TimerEnabled = false; WaitWindowFrom.ShowWaitWindow(); using (var PosHappyPoint = new posHappyPoint()) { PosHappyPoint.StartFavoriteStoreProcess(happyPointReturn.MemberCode, true); } WaitWindowFrom.CloseWaitWindow(); ProcessStart = false; CanWindowClose = true; } private void DoBeforeReceiptPrint() { switch (EndWindow) { case PaymentEndWindowEndType.Talk: TalkButtonEnable = false; PaymentEndWindow = PaymentEndWindowType.BellOrNotifyTalk; break; case PaymentEndWindowEndType.Bell: BellButtonEnable = false; PaymentEndWindow = PaymentEndWindowType.BellOrNotifyTalk; break; default: DoReceiptPrint(); break; } } private void DoAfterReceiptPrint() { switch (EndWindow) { case PaymentEndWindowEndType.None: PaymentEndWindow = PaymentEndWindowType.PaymentSuccess; break; case PaymentEndWindowEndType.Bell: PaymentEndWindow = PaymentEndWindowType.WaitNumberSuccess; break; case PaymentEndWindowEndType.Talk: if (string.IsNullOrEmpty(TalkNumPadNumber)) { PaymentEndWindow = PaymentEndWindowType.WaitNumberSuccess; } else { PaymentEndWindow = PaymentEndWindowType.TalkSuccess; } break; case PaymentEndWindowEndType.WaitNumber: PaymentEndWindow = PaymentEndWindowType.WaitNumberSuccess; break; default: PaymentEndWindow = PaymentEndWindowType.PaymentSuccess; break; } } private void DoReceiptPrint() { var waitNumber = string.Empty; var bellNo = EndWindow.Equals(PaymentEndWindowEndType.Bell) ? TalkNumPadNumber : string.Empty; var isTalk = EndWindow.Equals(PaymentEndWindowEndType.Talk); using (var ps = new PosDataService()) waitNumber=ps.PrintReceipt(bellNo, isTalk, HappyPointReserve,OkCashBagReserve); if (!string.IsNullOrEmpty(waitNumber)) WaitNumberText = waitNumber; DoAfterReceiptPrint(); } #endregion Methods #region [ Event Handlers ] private void CashTypePersonCommandHandler(object obj) { CashTypePersonEnable = false; } private void CashTypeCompanyCommandHandler(object obj) { CashTypeCompanyEnable = false; } private void BellButtonCommandHandler(object obj) { BellButtonEnable = false; } private void TalkButtonCommandHandler(object obj) { TalkButtonEnable = false; } private void PointSavingCommandHandler(object obj) { PointSavingButtonOk = true; } private void TalkGetCommandHandler(object obj) { //Console.WriteLine("알림톡 받기"); DoNewMemberRequest(); CanWindowClose = true; } private void CancelCommandHandler(object obj) { switch (PaymentEndWindow) { case PaymentEndWindowType.CashReceipt: certifyKey = InputNumber; divType = CashTypeCompanyEnable ? "0" : "1"; PaymentEndWindow = PaymentEndWindowType.Processing; break; case PaymentEndWindowType.PaymentSuccess: case PaymentEndWindowType.WaitNumberSuccess: case PaymentEndWindowType.TalkSuccess: CanWindowClose = true; break; } } private void OkCommandHandler(object obj) { switch (PaymentEndWindow) { case PaymentEndWindowType.CashReceipt: PaymentEndWindow = PaymentEndWindowType.Processing; break; case PaymentEndWindowType.BellOrNotifyTalk: DoReceiptPrint(); break; case PaymentEndWindowType.PaymentSuccess: case PaymentEndWindowType.WaitNumberSuccess: case PaymentEndWindowType.TalkSuccess: if (ProcessTask != null) ProcessTask.Wait(); CanWindowClose = true; break; } } private void StoreAgreeCommandHandler(object obj) { if (ProcessTask != null) ProcessTask.Wait(); if (HappyPointReturn is M_HappyPointReturn) { DoRegFavoriteStore(); } else { CanWindowClose = true; } } private void LastPayments_ReadStart(object sender) { TimerEnabled = false; ProcessStart = true; } private void LastPayments_ReadEnd(object sender) { ProcessStart = false; } private void VmPaymentsEnd_PropertyChanged(object sender, PropertyChangedEventArgs e) { try { switch (e.PropertyName) { case "IsTimeout": if (IsTimeout) { switch (PaymentEndWindow) { case PaymentEndWindowType.CashReceipt: InputNumber = string.Empty; PaymentEndWindow = PaymentEndWindowType.Processing; break; case PaymentEndWindowType.BellOrNotifyTalk: TalkNumPadNumber = string.Empty; DoReceiptPrint(); break; case PaymentEndWindowType.PaymentSuccess: case PaymentEndWindowType.WaitNumberSuccess: case PaymentEndWindowType.TalkSuccess: if (ProcessTask != null) ProcessTask.Wait(); CanWindowClose = true; break; } } break; case "HappyPointReturn": StoreAgreeView = HappyPointReturn is M_HappyPointReturn; SetStoreAgreeData(); break; case "EndWindow": switch (EndWindow) { case PaymentEndWindowEndType.Bell: BellAnsTalkToggleVisible = !CommonValue.DisableEndType.Equals(PaymentEndWindowEndType.Talk); break; case PaymentEndWindowEndType.Talk: BellAnsTalkToggleVisible = !CommonValue.DisableEndType.Equals(PaymentEndWindowEndType.Bell); break; } break; case "PaymentEndWindow": CashReceiptVisible = false; ProcessingVisible = false; BellOrNotifyTalkVisible = false; PaymentSuccessVisible = false; WaitNumberSuccessVisible = false; TalkSuccessVisible = false; switch (PaymentEndWindow) { case PaymentEndWindowType.CashReceipt: CashReceiptVisible = true; break; case PaymentEndWindowType.Processing: ProcessingVisible = true; break; case PaymentEndWindowType.BellOrNotifyTalk: BellOrNotifyTalkVisible = true; break; case PaymentEndWindowType.PaymentSuccess: PaymentSuccessVisible = true; break; case PaymentEndWindowType.WaitNumberSuccess: WaitNumberSuccessVisible = true; break; case PaymentEndWindowType.TalkSuccess: TalkSuccessVisible = true; break; } break; case "CashReceiptVisible": if (CashReceiptVisible) { using (var ps = new PosDataService()) ps.GetCashBill(ref cashPayments, ref cashTax); if (CashPayments.Equals(0)) { DoBeforeReceiptPrint(); } else { HeaderText = Languages.GetMessages("LBL0139"); ScanGuidText = Languages.GetMessages("LBL0053"); InfoGuid1Text = Languages.GetMessages("LBL0009"); InfoGuid2Text = Languages.GetMessages("LBL0010"); CancelButtonWidth = PopupWidth / 2; OKButtonWidth = PopupWidth / 2; OKButtonEnabled = false; CancelButtonText = Languages.GetMessages("BTN0033"); OkButtonText = Languages.GetMessages("BTN0024"); TimeOutSeconds = CommonValue.TimeOutSeconds; } } break; case "ProcessingVisible": if (ProcessingVisible) { HeaderText = Languages.GetMessages("LBL0139"); ScanGuidText = new List(); InfoGuid1Text = new List(); InfoGuid2Text = new List(); CancelButtonWidth = 0d; OKButtonWidth = 0d; if (ProcessTask != null) { ProcessTask.Dispose(); ProcessTask = null; } ProcessTask = new Task(DoCashReceiptProcessing); ProcessTask.Start(); } break; case "BellOrNotifyTalkVisible": if (BellOrNotifyTalkVisible) { HeaderText = Languages.GetMessages("LBL0029"); ScanGuidText = Languages.GetMessages("LBL0074"); InfoGuid1Text = Languages.GetMessages("LBL0011"); InfoGuid2Text = Languages.GetMessages("LBL0005"); CancelButtonWidth = 0d; OKButtonWidth = PopupWidth; OKButtonEnabled = false; OkButtonText = Languages.GetMessages("BTN0024"); TimeOutSeconds = CommonValue.TimeOutSeconds; } break; case "PaymentSuccessVisible": if (PaymentSuccessVisible) { InputNumber = string.Empty; HeaderText = Languages.GetMessages("LBL0029"); ScanGuidText = new List(); InfoGuid1Text = new List(); InfoGuid2Text = new List(); CancelButtonWidth = 0d; OKButtonWidth = PopupWidth; OKButtonEnabled = true; OkButtonText = Languages.GetMessages("BTN0039"); TimeOutSeconds = CommonValue.TimeOutSeconds; } break; case "WaitNumberSuccessVisible": if (WaitNumberSuccessVisible) { InputNumber = string.Empty; HeaderText = Languages.GetMessages("LBL0029"); ScanGuidText = Languages.GetMessages("LBL0093"); WaitNumberHeaderText = Languages.GetMessages("LBL0041"); if (EndWindow.Equals(PaymentEndWindowEndType.Bell) && !string.IsNullOrEmpty(TalkNumPadNumber)) { WaitNumberHeaderText = Languages.GetMessages("LBL0103"); WaitNumberText = TalkNumPadNumber; } InfoGuid1Text = new List(); InfoGuid2Text = new List(); CancelButtonWidth = 0d; OKButtonWidth = PopupWidth; OKButtonEnabled = true; OkButtonText = Languages.GetMessages("BTN0039"); TimeOutSeconds = CommonValue.TimeOutSeconds; } break; case "TalkSuccessVisible": if (TalkSuccessVisible) { InputNumber = string.Empty; HeaderText = Languages.GetMessages("LBL0029"); ScanGuidText = Languages.GetMessages("LBL0093"); InfoGuid1Text = new List(); InfoGuid2Text = new List(); CancelButtonWidth = 0d; OKButtonWidth = PopupWidth; OKButtonEnabled = true; OkButtonText = Languages.GetMessages("BTN0039"); TimeOutSeconds = CommonValue.TimeOutSeconds; } break; case "NumPadInputVisible": NumPadGuideVisible = !NumPadInputVisible; break; case "InputNumber": NumPadInputVisible = InputNumber.Length > 0; switch (PaymentEndWindow) { case PaymentEndWindowType.CashReceipt: if (!CashTypePersonEnable) { OKButtonEnabled = InputNumber.Length.Equals(10) || InputNumber.Length.Equals(11); } if (!CashTypeCompanyEnable) { OKButtonEnabled = InputNumber.Length.Equals(10); } break; case PaymentEndWindowType.PaymentSuccess: case PaymentEndWindowType.WaitNumberSuccess: case PaymentEndWindowType.TalkSuccess: TalkGetButtonEnabled = InputNumber.Length.Equals(10) || InputNumber.Length.Equals(11); break; default: OKButtonEnabled = InputNumber.Length.Equals(10) || InputNumber.Length.Equals(11); break; } break; case "TalkNumPadInputVisible": TalkNumPadGuideVisible = !TalkNumPadInputVisible; break; case "TalkNumPadNumber": TalkNumPadInputVisible = TalkNumPadNumber.Length > 0; if (!BellButtonEnable) { OKButtonEnabled = TalkNumPadNumber.Length > 0; } if (!TalkButtonEnable) { OKButtonEnabled = TalkNumPadNumber.Length.Equals(10) || TalkNumPadNumber.Length.Equals(11); } break; case "CashTypePersonEnable": if (!CashTypePersonEnable) { NumPadFormated = true; NumPadMaxLength = 11; NumPadGuidText = Languages.GetMessages("LBL0091"); InputNumber = string.Empty; CashTypeCompanyEnable = true; } break; case "CashTypeCompanyEnable": if (!CashTypeCompanyEnable) { NumPadFormated = false; NumPadMaxLength = 10; NumPadGuidText = Languages.GetMessages("LBL0056"); InputNumber = string.Empty; CashTypePersonEnable = true; } break; case "BellButtonEnable": if (!BellButtonEnable) { EndWindow = PaymentEndWindowEndType.Bell; TalkNumPadFormated = true; TalkNumPadMaxLength = 3; TalkNumPadGuidText = Languages.GetMessages("LBL0104"); BellOrNotifyTalkTitileImage = ResourceManager.GetNximagePathAdd("img_bell.png", CommonValue.PBdesignImagesPath); BellOrNotifyTalkText = Languages.GetMessages("LBL0078"); TalkNumPadNumber = string.Empty; TalkButtonEnable = true; } break; case "TalkButtonEnable": if (!TalkButtonEnable) { EndWindow = PaymentEndWindowEndType.Talk; TalkNumPadFormated = true; TalkNumPadMaxLength = 11; TalkNumPadGuidText = Languages.GetMessages("LBL0091"); BellOrNotifyTalkTitileImage = ResourceManager.GetNximagePathAdd("img_talk.png", CommonValue.PBdesignImagesPath); BellOrNotifyTalkText = Languages.GetMessages("LBL0036"); TalkNumPadNumber = string.Empty; BellButtonEnable = true; } break; } } catch (Exception ex) { CommonLog.ErrorLogWrite(this, "VmPaymentsEnd_PropertyChanged()", "Fail", string.Format("{0}\n{1}", ex.Message, ex.StackTrace)); } } #endregion Event Handlers } }