Exemplo n.º 1
0
        public bool SendStatistic()
        {
            Ipaybox.AddToLog(Ipaybox.Logs.Main, "Формирование инкассации.");
            if (Ipaybox.Incass.incass_amount > 0)
            {
                string data = "<request>";
                data += "<protocol>1.00</protocol>";
                data += "<type>1.00</type>";
                data += "<terminal>" + Ipaybox.Terminal.terminal_id + "</terminal>";
                data += "<pass>" + Ipaybox.Terminal.terminal_pass + "</pass>";

                XmlDocument inc = new XmlDocument();
                inc.Load(Ipaybox.StartupPath + @"\incass.xml");

                XmlElement el = inc.CreateElement("incass-stop-date");
                el.InnerText = DateTime.Now.ToString("yyyy.MM.dd HH:mm:ss");
                inc.DocumentElement.InsertAfter(el, inc.DocumentElement.LastChild);

                data += "<statistic> " + inc.DocumentElement.InnerXml + "</statistic>";
                data += "</request>";
                Ipaybox.AddToLog(Ipaybox.Logs.Main, "Посылаем инкассацию на сервер...");
                string response = TryPostData(data);

                if (response != "")
                {
                    try
                    {
                        XmlDocument resp = new XmlDocument();

                        resp.LoadXml(response);

                        XmlElement root = resp.DocumentElement;


                        for (int i = 0; i < root.ChildNodes.Count; i++)
                        {
                            XmlElement row = (XmlElement)root.ChildNodes[i];

                            if (row.Name == "incass")
                            {
                                string res     = row.GetAttribute("result");
                                string comment = row.GetAttribute("comment");

                                if (res != "0")
                                {
                                    // все плохо
                                    Ipaybox.AddToLog(Ipaybox.Logs.Main, "...Сервер не принял инкассацию.");
                                    return(false);
                                }
                                else
                                {
                                    Ipaybox.AddToLog(Ipaybox.Logs.Main, "...Успешно. Формируем инкассационный чек.");
                                    string check = "IPAYBOX ZEUS CORE V" + Ipaybox.CoreVersion + "\r\n" +
                                                   Ipaybox.Terminal.jur_name + "\r\nТерминал: " + Ipaybox.Terminal.terminal_id + "\r\n";
                                    check += "ИНКАССАЦИОННЫЙ ЧЕК\r\n_____________________\r\n";
                                    check += "СУММА: " + Ipaybox.Incass.incass_amount.ToString() + "\r\n";
                                    check += "Кол-во купюр: " + Ipaybox.Incass.count + "\r\n";
                                    check += "Кол-во купюр 10 руб: " + Ipaybox.Incass.CountR10 + "\r\n";
                                    check += "Кол-во купюр 50 руб: " + Ipaybox.Incass.CountR50 + "\r\n";
                                    check += "Кол-во купюр 100 руб: " + Ipaybox.Incass.CountR100 + "\r\n";
                                    check += "Кол-во купюр 500 руб: " + Ipaybox.Incass.CountR500 + "\r\n";
                                    check += "Кол-во купюр 1000 руб: " + Ipaybox.Incass.CountR1000 + "\r\n";
                                    check += "Кол-во купюр 5000 руб: " + Ipaybox.Incass.CountR5000 + "\r\n";
                                    check += "Кол-во чеков: " + Ipaybox.Incass.countchecks + "\r\n";
                                    check += "Дата начала: " + Ipaybox.Incass.incass_date_start.ToString() + "\r\n";
                                    check += "Дата инкасс: " + DateTime.Now.ToString() + "\r\n";
                                    check += "____________________\r\n";
                                    check += "Сервер инкасации: " + res + "\\" + comment + "\r\n";
                                    check += "Bytes send: " + Ipaybox.Incass.bytesSend + "\r\n";
                                    check += "Bytes recieve: " + Ipaybox.Incass.bytesRead + "\r\n";
                                    Ipaybox.AddToLog(Ipaybox.Logs.Main, "...Печатаем чек.");
                                    PrintCheck = check;
                                    if (!Ipaybox.WindowsPrinter)
                                    {
                                        Ipaybox.Printer.Print(check);
                                    }
                                    else
                                    {
                                        doc.Print();
                                    }
                                    Ipaybox.AddToLog(Ipaybox.Logs.Main, "...Чек распечатан. Очистка статистики.");
                                    Ipaybox.Incass.bytesRead         = 0;
                                    Ipaybox.Incass.bytesSend         = 0;
                                    Ipaybox.Incass.count             = 0;
                                    Ipaybox.Incass.CountR10          = 0;
                                    Ipaybox.Incass.CountR50          = 0;
                                    Ipaybox.Incass.CountR100         = 0;
                                    Ipaybox.Incass.CountR500         = 0;
                                    Ipaybox.Incass.CountR1000        = 0;
                                    Ipaybox.Incass.CountR5000        = 0;
                                    Ipaybox.Incass.countchecks       = 0;
                                    Ipaybox.Incass.incass_amount     = 0;
                                    Ipaybox.Incass.incass_date_start = DateTime.Now;
                                    Ipaybox.FlushStatistic();
                                    Ipaybox.LoadIncass();
                                    Ipaybox.AddToLog(Ipaybox.Logs.Main, "...Инкассация успешно проведена.");
                                    return(true);
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        HelperClass.CrashLog.AddCrash(ex);
                        Ipaybox.AddToLog(Ipaybox.Logs.Main, "Ошибка при инкассации нераспознанный ответ сервера.\r\n-----\r\n" + response + "\r\n-----");
                        return(false);
                    }
                }
                else
                {
                    return(false);
                }
            }
            else
            {
                return(true);
            }



            return(false);
        }