internal static void AddRemoteChkToQuereLocal(int ChkId, int PaymentId, int Empl, decimal PayMentSumm) { Utils.ToCardLog("Добавление чека в очередь закрытия текущего терминала" + ChkId); int Count = 0; while ((Interlocked.CompareExchange(ref TimerSyncPoint, 1, 0) != 0) && (Count < 5000)) { Thread.CurrentThread.Join(50); // Utils.ToCardLog("GetCashReg lock" + Count); Count += 50; } CRemoteCloseChk Chk = new CRemoteCloseChk() { Id = ChkId, PaymentId = PaymentId, Empl = Empl, PaymentSumm = PayMentSumm }; CloseingChecksQuere.Add(Chk); Interlocked.CompareExchange(ref TimerSyncPoint, 0, 1); CloseingChecksQuereWH.Set(); Utils.ToCardLog("Добавил чек в очередь закрытия" + ChkId); }
private static void CloseAlohaTable(CRemoteCloseChk RemChk) { int TermNum = iniFile.RemoteCloseTerminal; try { Utils.ToCardLog("Отправляю чек из очереди на закрытие" + RemChk.Id); AlohaTSClass.LogOut(TermNum); AlohaTSClass.LogIn(TermNum, iniFile.RemoteCloseEmployee); Check Chk = AlohaTSClass.GetCheckById(RemChk.Id); if (Chk == null) { RemChk.ErrorCount++; return; } /* * if ((Chk.Oplata != 0) && (Chk.Oplata != Chk.Summ)) * { * AlohaTSClass.DeletePayments(Chk, TermNum); * } * */ //if ((Chk.Oplata == 0)) // { // if (RemChk.PaymentSumm == 0) //{ // RemChk.PaymentSumm = Chk.Summ; //} AlohaTSClass.ApplyPayment(TermNum, RemChk.Id, (double)RemChk.PaymentSumm, RemChk.PaymentId); //} AlohaTSClass.CloseCheck(TermNum, RemChk.Id); if (!AlohaTSClass.CheckIsClosed(RemChk.Id)) { RemChk.ErrorCount++; } else { RemChk.ErrorCount = 0; AlohaTSClass.LogOut(TermNum); AlohaTSClass.LogIn(TermNum, RemChk.Empl); AlohaTSClass.CloseTable(TermNum, Chk.TableId); } AlohaTSClass.LogOut(TermNum); } catch { AlohaTSClass.LogOut(TermNum); RemChk.ErrorCount++; } }