Example #1
0
        /// <summary>
        /// Главный вызываемый метод по отправке бонусов
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void sent_Click(object sender, EventArgs e)
        {
            if (MainStaticClass.PassPromo == "")
            {
                MessageBox.Show("Эта касса не учавствует в бонусной программе ");
                return;
            }

            NpgsqlConnection conn = MainStaticClass.NpgsqlConn();

            try
            {
                conn.Open();
                string query = " SELECT document_number, client, cash_desk_number,date_time_start,bonuses_it_is_written_off,id_transaction,id_transaction_sale,check_type  " +
                               " FROM checks_header WHERE sent_to_processing_center = 0 and its_deleted=0";
                NpgsqlCommand    command       = new NpgsqlCommand(query, conn);
                NpgsqlDataReader reader        = command.ExecuteReader();
                BuyNewRequest    buyNewRequest = new BuyNewRequest();
                while (reader.Read())//Здесь перебираем документы
                {
                    //предварительно было отправлено buy_new, поэтому если нет оплаты бонусами то нужно отправить buycommit
                    //if ((reader["id_transaction"].ToString().Trim() != "")&&(Convert.ToInt32(reader["bonuses_it_is_written_off"]) == 0))
                    if (reader["id_transaction"].ToString().Trim() != "")
                    {
                        BuyCommit buyCommit = new BuyCommit();
                        buyCommit.transactionId = reader["id_transaction"].ToString().Trim();
                        sent_document_buyCommit(buyCommit, reader["document_number"].ToString().Trim());
                        continue;
                    }
                    if (reader["check_type"].ToString() == "0")
                    {
                        buyNewRequest.cashierName = MainStaticClass.Cash_Operator;
                        buyNewRequest.commit      = "1";
                        buyNewRequest.date        = Convert.ToDateTime(reader["date_time_start"]).ToString("yyyy-MM-dd HH:mm:ss");
                        //if (reader["client"].ToString().Trim().Length == 36)
                        //{
                        //    buyNewRequest.cardTrack2 = reader["client"].ToString();
                        //}
                        if (reader["client"].ToString().Trim().Length >= 10)
                        {
                            buyNewRequest.cardNum = reader["client"].ToString();
                        }

                        if ((Convert.ToInt32(reader["bonuses_it_is_written_off"]) != 0) && (reader["client"].ToString().Trim().Length == 10))
                        {
                            buyNewRequest.charge = (Convert.ToInt32(reader["bonuses_it_is_written_off"]) * 100).ToString();
                        }

                        //if (reader["client"].ToString().Trim().Length == 0)
                        //{
                        //    buyNewRequest.type = "6";
                        //}
                        //else
                        //{
                        buyNewRequest.type = "4";
                        //}
                        if (fill_items(buyNewRequest, reader["document_number"].ToString(), reader["client"].ToString()))
                        {
                            sent_document(buyNewRequest, reader["document_number"].ToString());
                        }
                    }
                    else if (reader["check_type"].ToString() == "1")
                    {
                        BuyReturnRequest buyReturnRequest = new BuyReturnRequest();
                        buyReturnRequest.cashierName = MainStaticClass.Cash_Operator;
                        buyReturnRequest.commit      = "1";
                        //buyReturnRequest.date = Convert.ToDateTime(reader["date_time_start"]).ToString("yyyy-MM-dd HH:mm:ss");
                        buyReturnRequest.transactionId = reader["id_transaction_sale"].ToString();
                        if (fill_items(buyReturnRequest, reader["document_number"].ToString(), reader["client"].ToString()))
                        {
                            sent_documentbuyReturn(buyReturnRequest, reader["document_number"].ToString());
                        }
                    }

                    //if (fill_items(buyNewRequest, reader["document_number"].ToString(),reader["client"].ToString()))
                    //{
                    //    if (reader["check_type"].ToString() == "0")
                    //    {

                    //    }
                    //    else if (reader["check_type"].ToString() == "1")
                    //    {
                    //        sent_documentbuyReturn(buyNewRequest, reader["document_number"].ToString());
                    //    }
                    //}
                }
                reader.Close();
                conn.Close();
            }
            catch (NpgsqlException ex)
            {
                if (!run_in_the_background)
                {
                    MyMessageBox mmb = new MyMessageBox(ex.Message, " Отправка неотправленных бонусов ");
                    mmb.ShowDialog();
                }
            }
            catch (Exception ex)
            {
                if (!run_in_the_background)
                {
                    MyMessageBox mmb = new MyMessageBox(ex.Message, " Отправка неотправленных бонусов ");
                    mmb.ShowDialog();
                }
            }
            finally
            {
                if (conn.State == ConnectionState.Open)
                {
                    conn.Close();
                }
            }
        }
Example #2
0
        public bool fill_items(BuyNewRequest buyNewRequest, string document_number, string client)
        {
            bool             result = true;
            NpgsqlConnection conn   = MainStaticClass.NpgsqlConn();

            try
            {
                conn.Open();
                string           query   = "SELECT numstr, tovar_code, quantity, price,price_at_a_discount,sum_at_a_discount,action_num_doc2 FROM checks_table where document_number =" + document_number + " order by numstr desc";
                NpgsqlCommand    command = new NpgsqlCommand(query, conn);
                NpgsqlDataReader reader  = command.ExecuteReader();
                buyNewRequest.items = new Items();
                Items items = new Items();
                //List<Item> list_items= new List<Item>();// items2 = new items.item();
                items.item = new List <Item>();// items2 = new items.item();
                while (reader.Read())
                {
                    Item item = new Item();
                    item.pos = (Convert.ToInt32(reader["numstr"]) + 1).ToString();
                    //item.pos = Convert.ToInt32(reader["numstr"]).ToString();
                    item.SKU = reader["tovar_code"].ToString();
                    item.qty = reader["quantity"].ToString();
                    if (client == "")
                    {
                        item.price = Convert.ToInt32((Convert.ToDecimal(reader["price_at_a_discount"]) * 100)).ToString();
                    }
                    else
                    {
                        item.price = Convert.ToInt32((Convert.ToDecimal(reader["price"]) * 100)).ToString();
                    }
                    if (reader["action_num_doc2"].ToString() == "0")
                    {
                        item.productMarketingFlags = "7";
                    }
                    else
                    {
                        item.productMarketingFlags = "0";
                    }

                    //item.discount = Convert.ToInt32(((Convert.ToDecimal(reader["sum_at_a_discount"]) - Convert.ToDecimal(reader["quantity"]) * Convert.ToDecimal(reader["price"]))*100)*-1).ToString();
                    //item.discount = Convert.ToInt32(((Convert.ToDecimal(reader["price_at_a_discount"])- Convert.ToDecimal(reader["price"])) * 100)*-1).ToString();
                    items.item.Add(item);
                    //list_items.Add(item);
                    //buyNewrequest.items.Add(item);
                }
                //items.item = list_items;
                buyNewRequest.items = items;
            }
            catch (NpgsqlException ex)
            {
                result = false;
            }
            catch (Exception ex)
            {
                result = false;
            }
            finally
            {
                if (conn.State == ConnectionState.Open)
                {
                    conn.Close();
                }
            }
            return(result);
        }
Example #3
0
        public bool sent_document(BuyNewRequest buyNewRequest, string document_number)
        {
            bool result = true;

            string json = JsonConvert.SerializeObject(buyNewRequest, Newtonsoft.Json.Formatting.Indented, new JsonSerializerSettings {
                NullValueHandling = NullValueHandling.Ignore
            });

            txtB_jason.Text = json;
            string url = "http://92.242.41.218/processing/v3/buyNew/";

            byte[]         body         = Encoding.UTF8.GetBytes(json);
            HttpWebRequest request      = (HttpWebRequest)WebRequest.Create(url);
            string         shop_request = "";

            if (MainStaticClass.Nick_Shop.Substring(0, 1).ToUpper() == "A")
            {
                shop_request = MainStaticClass.Nick_Shop + MainStaticClass.CashDeskNumber;
            }
            else
            {
                shop_request = "1" + Convert.ToInt16(MainStaticClass.Nick_Shop.Substring(1, 2)).ToString() + MainStaticClass.CashDeskNumber;
            }

            //var authString = Convert.ToBase64String(Encoding.Default.GetBytes("A011" + ":" + "JpDkHs~AE%zS8Y7HDpVM"));
            var authString = Convert.ToBase64String(Encoding.Default.GetBytes(shop_request + ":" + MainStaticClass.PassPromo));

            request.Headers.Add("Authorization", "Basic " + authString);

            request.Method        = "POST";
            request.ContentType   = "application/json; charset=utf-8";
            request.ContentLength = body.Length;

            using (Stream stream = request.GetRequestStream())
            {
                stream.Write(body, 0, body.Length);
                stream.Close();
            }

            NpgsqlConnection conn = MainStaticClass.NpgsqlConn();

            try
            {
                using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
                {
                    byte[] buf   = new byte[10000];
                    int    count = -1;
                    String read  = "";
                    do
                    {
                        count = response.GetResponseStream().Read(buf, 0, buf.Length);
                        read += Encoding.UTF8.GetString(buf, 0, count);
                    } while (response.GetResponseStream().CanRead&& count != 0);
                    //txtB_json_response.Text = JsonConvert.DeserializeObject(read).ToString();
                    //string answer = JsonConvert.DeserializeObject(read.Replace("{}", @"""""")).ToString();//read.Replace("{}","\"\"")
                    BuynewResponse buynewResponse = JsonConvert.DeserializeObject <BuynewResponse>(read.Replace("{}", @""""""), new JsonSerializerSettings {
                        NullValueHandling = NullValueHandling.Ignore
                    });
                    if (buynewResponse.res == "1")
                    {
                        conn.Open();
                        string        query        = "UPDATE checks_header SET sent_to_processing_center=1 WHERE document_number =" + document_number;
                        NpgsqlCommand command      = new NpgsqlCommand(query, conn);
                        int           rowsaffected = command.ExecuteNonQuery();

                        if (buyNewRequest.type == "6")//это продажа без карты значит надо записать в документ buynewResponse.transactionId
                        {
                            query   = "UPDATE checks_header SET id_transaction=" + buynewResponse.transactionId;
                            command = new NpgsqlCommand(query, conn);
                            command.ExecuteNonQuery();
                        }
                        conn.Close();
                        command.Dispose();
                    }
                    else //Куда то записать информацию о трудностях
                    {
                        //MessageBox.Show(buynewResponse.res);
                    }
                    response.Close();
                }
            }
            catch (WebException ex)
            {
                if (!run_in_the_background)
                {
                    MessageBox.Show(ex.Message);
                }
            }
            catch (NpgsqlException ex)
            {
                if (!run_in_the_background)
                {
                    MessageBox.Show(ex.Message);
                }
            }
            catch (Exception ex)
            {
                if (!run_in_the_background)
                {
                    MessageBox.Show(ex.Message);
                }
            }
            finally
            {
                if (conn.State == ConnectionState.Open)
                {
                    conn.Close();
                }
            }

            return(result);
        }