/// <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(); } } }
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); }
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); }