2025-03-28 09:49:56 +08:00

2209 lines
114 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Text;
using System.Linq;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows.Forms;
using RunUpdateExe;
using System.Globalization;
using System.Net;
namespace InvoicingTool
{
public partial class PurchaseMain : Form
{
[DllImport("user32.dll")]
public static extern bool ReleaseCapture();
[DllImport("user32.dll")]
public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
public const int WM_SYSCOMMAND = 0x0112;
public const int SC_MOVE = 0xF010;
public const int HTCAPTION = 0x0002;
#region /
//声明一些API函数
[DllImport("imm32.dll")]
public static extern IntPtr ImmGetContext(IntPtr hwnd);
[DllImport("imm32.dll")]
public static extern bool ImmGetOpenStatus(IntPtr himc);
[DllImport("imm32.dll")]
public static extern bool ImmSetOpenStatus(IntPtr himc, bool b);
[DllImport("imm32.dll")]
public static extern bool ImmGetConversionStatus(IntPtr himc, ref int lpdw, ref int lpdw2);
[DllImport("imm32.dll")]
public static extern int ImmSimulateHotKey(IntPtr hwnd, int lngHotkey);
private const int IME_CMODE_FULLSHAPE = 0x8;
private const int IME_CHOTKEY_SHAPE_TOGGLE = 0x11;
protected override void OnActivated(EventArgs e)
{
base.OnActivated(e);
IntPtr HIme = ImmGetContext(this.Handle);
//如果输入法处于打开状态
if (ImmGetOpenStatus(HIme))
{
int iMode = 0;
int iSentence = 0;
//检索输入法信息
bool bSuccess = ImmGetConversionStatus(HIme, ref iMode, ref iSentence);
if (bSuccess)
{
//如果是全角,转换成半角
if ((iMode & IME_CMODE_FULLSHAPE) > 0)
ImmSimulateHotKey(this.Handle, IME_CHOTKEY_SHAPE_TOGGLE);
}
}
}
#endregion /
WaiteFrom _WaitForm;
//static string ServiceUrl = "http://192.168.12.117:8010/MobileServicePlatform/Handler/handler_ajax.ashx?action_type=";
static string ServiceUrl = "http://183.129.232.100:8010/MobileServicePlatform/Handler/handler_ajax.ashx";
//string UploadSellerUrl = "http://192.168.10.110:8010/MobileServicePlatform/Handler/handler_ajax.ashx?action_type=UploadSeller";
string UploadSellerUrl = ServiceUrl + "action_type=UploadSeller";
//string _PayServiceUrl = "http://192.168.11.192:7080/Service.asmx";
//string _PayServiceUrl = "http://" + _QualityHelper.dbip + ":" + _QualityHelper.serviceport + "/Service.asmx";
string _PayServiceUrl = "http://cloud.eshangtech.com:7080/Service.asmx";
string str_SellerCommodityById = ServiceUrl + "?action_type=DownLoadSeller&action_data=SellerCommodityById";
string str_GetGoodsBrand = ServiceUrl + "?action_type=GetGoodsBrand";
string str_GetScoreSetting = ServiceUrl + "?action_type=GetScoreSetting";
string str_GetAutoGoods = ServiceUrl + "?action_type=GetAutoGoods";
static QualityHelper _QualityHelper = new QualityHelper();
DownLoadHelper downLoadHelper = new DownLoadHelper();
string _ServerDate = "";
string _Score = "";
Timer _Roll = new Timer();
/// <summary>
/// 价格类型
/// </summary>
string PriceType { get; set; }
/// <summary>
/// 启动后首次下载
/// </summary>
bool FirstDown { get; set; }
/// <summary>
/// 是否存在更新
/// </summary>
bool DataUpdate { get; set; }
/// <summary>
/// 为了是主界面能够移动
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void MainForm_MouseDown(object sender, MouseEventArgs e)
{
ReleaseCapture();
SendMessage(this.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);
}
public PurchaseMain()
{
InitializeComponent();
PriceType = "";
_Roll.Interval = 20;
_Roll.Tick += new EventHandler(_Roll_Tick);
_Roll.Start();
FirstDown = true;
//string path = Application.StartupPath+"\\pangmen.ttf";
//PrivateFontCollection pfc = new PrivateFontCollection();
//pfc.AddFontFile(path);
//Font f = new Font(pfc.Families[0], 16);
//lblMain.Font = f;
}
private void _Roll_Tick(object sender, EventArgs e)
{
lblSale.Left -= 1;
if (lblSale.Right < 0)
{
lblSale.Left = panel4.Width;
}
}
#region
private void Purchase_Load(object sender, EventArgs e)
{
ShowWaiteForm();
_WaitForm.ShowMessage("骋客优品报货系统正在加载,请稍候......");
DataUpdate = false;
string strDate = "";
string url = "";
string _strRolePriceName = "";
try
{
string _strSelect = "SELECT A.ADDTIME,B.ROLEPRICE_NAME " +
" FROM T_SELLERCOMMODITY A,T_ROLEPRICE B " +
" WHERE A.SELLERCOMMODITY_ID = B.SELLERCOMMODITY_ID AND " +
" A.ADDTIME = ( SELECT MAX(A.ADDTIME) FROM T_SELLERCOMMODITY A,T_ROLEPRICE B " +
" WHERE A.SELLERCOMMODITY_ID = B.SELLERCOMMODITY_ID ) ";
DataTable _DataTable = DBHelper.QueryOdbc(_strSelect).Tables[0];
if (_DataTable.Rows.Count > 0)
{
strDate = _DataTable.Rows[0]["ADDTIME"].ToString();
_strRolePriceName = _DataTable.Rows[0]["ROLEPRICE_NAME"].ToString();
}
}
catch
{
strDate = "1970/01/01 00:00:00";
}
if (strDate == "")
{
strDate = "1970/01/01 00:00:00";
}
//获取当前门店收藏夹商品信息
url = str_GetAutoGoods + "&SERVERPARTSHOP_ID=" + _QualityHelper.serverpartshop_id;
try
{
if (DataBaseUpdate())
{
string _Result = downLoadHelper.GetAjaxData(url);
if (_Result != "")
{
using (DataSet _DataSet = JsonHelper.JsonToDataSet(_Result))
{
if (_DataSet != null)
{
for (int i = 0; i < _DataSet.Tables.Count; i++)
{
switch (_DataSet.Tables[i].TableName.ToLower())
{
case "t_sellercommodity":
if (_DataSet.Tables[0].Rows.Count > 0)
{
DataTable _GoodsTable = DBHelper.QueryOdbc("select * from t_goodsinfo where 1=0").Tables[0];
string _insertsql = downLoadHelper.DataBaseInsert(_DataSet.Tables[0], _GoodsTable, "t_goodsinfo");
DBHelper.ExecuteSqlTran("delete from t_goodsinfo");
DBHelper.ExecuteSqlTran(_insertsql);
}
else
{
DBHelper.ExecuteSqlTran("delete from t_goodsinfo");
}
break;
}
}
}
else
{
DBHelper.ExecuteSqlTran("delete from t_goodsinfo");
}
}
}
else
{
DBHelper.ExecuteSqlTran("delete from t_goodsinfo");
}
}
}
catch
{ }
//获取商品版本及促销信息
try
{
string _Result = downLoadHelper.GetAjaxData(str_GetScoreSetting + "&action_data=" + _QualityHelper.serverpartshop_id);
if (_Result != "")
{
//_Result = _Result.Replace("[", "").Replace("]", "");
using (DataTable _DataTable = JsonHelper.ToDataTable(_Result))
{
if (_DataTable.Rows.Count > 0)
{
_Score = _DataTable.Rows[0]["SCORE_NAME"].ToString();
_ServerDate = _DataTable.Rows[0]["ADDTIME"].ToString();
PriceType = _DataTable.Rows[0]["PRICE_TYPE"].ToString();
}
}
// JObject _JObject = JObject.Parse(_Result);
//_ServerDate = _JObject["SCORESETTING"]["ADDTIME"].ToString();
//_Score = _JObject["SCORESETTING"]["SCORE_NAME"].ToString();
}
else
{
_WaitForm.Close();
_WaitForm.Dispose();
if (MessageBox.Show("当前门店未开通报货权限,请联系高速商贸。", "系统提示", MessageBoxButtons.OK,
MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1, MessageBoxOptions.ServiceNotification) == DialogResult.OK)
{
Close();
return;
}
}
if (String.IsNullOrWhiteSpace(PriceType))
{
_WaitForm.Close();
_WaitForm.Dispose();
if (MessageBox.Show("当前门店未开通报货权限,请联系高速商贸。", "系统提示", MessageBoxButtons.OK,
MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1,MessageBoxOptions.ServiceNotification) == DialogResult.OK)
{
Close();
return;
}
}
lblSale.Text = _Score;
if (DateTime.Parse(_ServerDate) != DateTime.Parse(strDate) || _strRolePriceName != PriceType)
{
DataUpdate = true;
lblUpdate.Text = "商品库有更新,请点击【商品同步】";
}
else
{
lblUpdate.Text = "当前商品库版本:" + DateTime.Parse(strDate).ToString("yyyyMMddHHmmss") + "(最新)";
}
}
catch
{
lblSale.Text = "";
lblUpdate.Text = "当前商品库版本:" + DateTime.Parse(strDate).ToString("yyyyMMddHHmmss") + "(最新)";
}
#region
//try
//{
// string _Result = downLoadHelper.GetAjaxData(url);
// if (_Result != "")
// {
// _Result = _Result.Replace("[", "").Replace("]", "");
// JObject _JObject = JObject.Parse(_Result);
// _ServerDate = _JObject["GOODSSTOCK"]["ADDTIME"].ToString();
// if (DateTime.ParseExact(_ServerDate, "yyyyMMddHHmmss", CultureInfo.CurrentCulture) > DateTime.Parse(strDate))
// {
// lblUpdate.Text = "商品库有更新,请点击【商品同步】";
// }
// else
// {
// lblUpdate.Text = "当前商品库版本:" + DateTime.Parse(strDate).ToString("yyyyMMddHHmmss");
// }
// }
// #region 暂注释,待上方测试方法通过后删除
// //using (DataSet _DataSet = JsonHelper.JsonToDataSet(downLoadHelper.GetAjaxData(url)))
// //{
// // if (_DataSet.Tables.Count > 0)
// // {
// // foreach (DataTable _DataTable in _DataSet.Tables)
// // {
// // if (_DataTable.TableName.ToLower() == "t_sellercommodity")
// // {
// // if (_DataTable.Rows.Count > 0)
// // {
// // DataRow[] _Row = _DataTable.Select("addtime = '" + _DataTable.Compute("max(addtime)", "").ToString() + "'");
// // if (_Row.Count() > 0)
// // {
// // _ServerDate = _Row[0]["addtime"].ToString();
// // if (DateTime.Parse(_Row[0]["addtime"].ToString()) > DateTime.Parse(strDate))
// // {
// // lblUpdate.Text = "商品库有更新,请点击【商品同步】";
// // }
// // else
// // {
// // lblUpdate.Text = "当前商品库版本:" + DateTime.Parse(strDate).ToString("yyyyMMddHHmmss");
// // }
// // }
// // }
// // break;
// // }
// // }
// // }
// //}
// #endregion
//}
//catch
//{
// lblUpdate.Text = "当前商品库版本:" + DateTime.Parse(strDate).ToString("yyyyMMddHHmmss");
//}
#endregion
cobState.Items.Add("全部");
cobState.Items.Add("待付款");
cobState.Items.Add("已付款");
cobState.Items.Add("已关闭");
GetData();
getType();
DataTable _PurchaseTable = dgv_Purchase.DataSource as DataTable;
if (_PurchaseTable.Select("purchase_state not in ('已付款','已关闭')").Count() > 0)
{
cobState.Text = "待付款";
}
else
{
cobState.Text = "全部";
}
cobState_DropDownClosed(null, null);
getCommodity();
getFavorite();
txtBarcodeAdd.Focus();
_WaitForm.Close();
_WaitForm.Dispose();
}
#endregion
/// <summary>
/// 显示我的收藏
/// </summary>
private void getFavorite()
{
DataTable _DataTable = dgv_Commodity.DataSource as DataTable;
if (_DataTable.Select("Favorite = 1").Count() > 0)
{
cobOneType.SelectedValue = 0;
}
cobOneType_DropDownClosed(null, null);
}
/// <summary>
/// 绑定商品类别下拉列表
/// </summary>
private void getType()
{
string sql = "SELECT TYPE_NAME,SELLERCOMMODITYTYPE_ID,TYPE_PID " +
"FROM T_SELLERCOMMODITYTYPE WHERE TYPE_PID = -1 " +
"AND SELLERCOMMODITYTYPE_ID IN ( " +
"SElECT DISTINCT(TYPE_PID) FROM T_SELLERCOMMODITYTYPE " +
"WHERE TYPE_PID <> -1 AND SELLERCOMMODITYTYPE_ID IN " +
"(SELECT DISTINCT(SELLERCOMMODITYTYPE_ID) FROM T_SELLERCOMMODITY))";
DataTable dt = DBHelper.QueryOdbc(sql).Tables[0];
DataRow drr = dt.NewRow();
drr["TYPE_NAME"] = "我的收藏";
drr["SELLERCOMMODITYTYPE_ID"] = 0;
dt.Rows.InsertAt(drr, 0);
drr = dt.NewRow();
drr["TYPE_NAME"] = "全部";
drr["SELLERCOMMODITYTYPE_ID"] = -1;
dt.Rows.InsertAt(drr, 0);
cobOneType.DataSource = dt;
cobOneType.DisplayMember = "TYPE_NAME";
cobOneType.ValueMember = "SELLERCOMMODITYTYPE_ID";
string sqls = "SElECT TYPE_NAME,SELLERCOMMODITYTYPE_ID,TYPE_PID " +
"FROM T_SELLERCOMMODITYTYPE " +
"WHERE TYPE_PID <> -1 AND SELLERCOMMODITYTYPE_ID IN " +
"(SELECT DISTINCT(SELLERCOMMODITYTYPE_ID) FROM T_SELLERCOMMODITY)";
DataTable dts = DBHelper.QueryOdbc(sqls).Tables[0];
DataRow dr = dts.NewRow();
dr["TYPE_NAME"] = "全部";
dr["SELLERCOMMODITYTYPE_ID"] = -1;
dts.Rows.InsertAt(dr, 0);
cobTwoType.DataSource = dts;
cobTwoType.DisplayMember = "TYPE_NAME";
cobTwoType.ValueMember = "SELLERCOMMODITYTYPE_ID";
}
/// <summary>
/// 绑定商品列表
/// </summary>
private void getCommodity()
{
//string selectsql = "SELECT 1 AS ID,ISNULL(A.COMMODITY_BOXCOSTPRICE,0) AS COMMODITY_BOXCOSTPRICE," +
// "B.COMMODITY_CODE,B.COMMODITY_NAME,B.COMMODITY_UNIT,A.SELLTAXPRICE," +
// "A.COMMODITY_BOXSELLPRICE,B.COMMODITY_BARCODE,B.COMMODITY_RULE,A.SUPPLIER_ID,A.SELLERCOMMODITY_ID," +
// "B.BOXENTRY_COUNT,B.SELLERCOMMODITYTYPE_ID,IFNULL(D.SELLERCOMMODITY_ID,0,1) AS FAVORITE,B.COMMODITY_DESC " +
// "FROM T_ROLEPRICE A LEFT JOIN T_SELLERCOMMODITY B ON A.SELLERCOMMODITY_ID = B.SELLERCOMMODITY_ID " +
// "LEFT JOIN T_GOODSINFO D ON A.SELLERCOMMODITY_ID = D.SELLERCOMMODITY_ID " +
// "WHERE A.ROLEPRICE_NAME = '1000' AND A.COMMODITY_BOXSELLPRICE <> 0 AND A.COMMODITY_BOXSELLPRICE IS NOT NULL " +
// "AND NOT EXISTS( SELECT 1 FROM T_ROLEPRICE C WHERE B.SELLERCOMMODITY_ID = C.SELLERCOMMODITY_ID AND A.ROLEPRICE_NAME = '1021')";
//DataTable dataTable = DBHelper.QueryOdbc(selectsql).Tables[0];
string sql = String.Format("SELECT ROW_NUMBER() OVER (ORDER BY ROLEPRICE_ID) AS ID," +
"ISNULL(A.COMMODITY_BOXCOSTPRICE,0) AS COMMODITY_BOXCOSTPRICE," +
"B.COMMODITY_CODE,B.COMMODITY_NAME,B.COMMODITY_UNIT,A.SELLTAXPRICE," +
"A.COMMODITY_BOXSELLPRICE,B.COMMODITY_BARCODE,B.COMMODITY_RULE,A.SUPPLIER_ID," +
"A.SELLERCOMMODITY_ID,B.BOXENTRY_COUNT,B.SELLERCOMMODITYTYPE_ID," +
"IFNULL(D.SELLERCOMMODITY_ID,0,1) AS FAVORITE,B.COMMODITY_DESC " +
"FROM T_ROLEPRICE A LEFT JOIN T_SELLERCOMMODITY B ON A.SELLERCOMMODITY_ID = B.SELLERCOMMODITY_ID " +
"LEFT JOIN T_GOODSINFO D ON A.SELLERCOMMODITY_ID = D.SELLERCOMMODITY_ID " +
"WHERE A.ROLEPRICE_NAME = '{0}' AND A.COMMODITY_BOXSELLPRICE <> 0 AND " +
"A.COMMODITY_BOXSELLPRICE IS NOT NULL", PriceType);
DataTable _DataTable = DBHelper.QueryOdbc(sql).Tables[0];
//_DataTable.Merge(dataTable);
//if (_DataTable.Rows.Count > 0)
//{
// for (int i = 0; i < _DataTable.Rows.Count; i++)
// {
// _DataTable.Rows[i]["id"] = i + 1;
// }
//}
dgv_Commodity.AutoGenerateColumns = false;
dgv_Commodity.DataSource = _DataTable;
}
#region
private void btnColse_Click(object sender, EventArgs e)
{
Close();
}
#endregion
#region
private void btnPurchaseAdd_Click(object sender, EventArgs e)
{
btnPriceUpdate_Click(null, null);
if (DataUpdate)
{
MessageBox.Show("商品库未更新,不能新增订单;\n请点击商品同步进行商品库信息更新!", "系统提示", MessageBoxButtons.OK,
MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.ServiceNotification);
return;
}
try
{
string sqls = "SELECT 1 FROM T_PURCHASE WHERE PURCHASE_STATE = 0 AND SERVERPARTSHOP_ID = " + _QualityHelper.serverpartshop_id;
DataTable dts = DBHelper.QueryOdbc(sqls).Tables[0];
//获取最大内码
if (dts.Rows.Count == 0)
{
decimal _MaxID = 0;
try
{
_MaxID = decimal.Parse(DBHelper.QueryOdbc("SELECT MAX(PURCHASE_ID) " +
"FROM T_PURCHASE").Tables[0].Rows[0][0].ToString());
}
catch
{
_MaxID = 0;
}
//_MaxID + 1
string PurchaseCode = DateTime.Now.ToString("yy") + _QualityHelper.shopcode +
TimeHelper.ConvertDataTimeLong(DateTime.Now).ToString();
string sql = "INSERT INTO T_PURCHASE (PURCHASE_ID,PURCHASE_CODE,SERVERPARTSHOP_ID," +
"PURCHASE_PERSON,PURCHASE_DATE,RESERVE_DATE,PURCHASE_TYPE,PURCHASE_STATE) " +
"VALUES('" + (_MaxID + 1) + "','" + PurchaseCode + "','" + _QualityHelper.serverpartshop_id +
"','" + _QualityHelper.shopname + "',DATETIME('" + DateTime.Now.ToString() +
"'),DATETIME('" + DateTime.Now.ToString() + "'),'1000','0')";
DBHelper.ExecuteSqlTran(sql);
if (dgv_Purchase.Rows.Count > 0)
{
DialogResult _DialogResult = MessageBox.Show("报货单添加成功,是否添加已选订单商品信息?", "系统提示",
MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1, MessageBoxOptions.ServiceNotification);
if (_DialogResult == DialogResult.Yes)
{
//string _SelectSql = "SELECT COMMODITY_BARCODE FROM T_PURCHASEDETAIL " +
// "WHERE PURCHASEDETAIL_DESC IN (SELECT TOP 1 PURCHASE_CODE " +
// "FROM T_PURCHASE WHERE PURCHASE_STATE <> 0 ORDER BY RESERVE_DATE DESC)";
ShowWaiteForm();
_WaitForm.ShowMessage("正在添加采购商品...");
string _SelectSql = "SELECT COMMODITY_BARCODE FROM T_PURCHASEDETAIL " +
"WHERE PURCHASEDETAIL_DESC IN ('" +
dgv_Purchase.CurrentRow.Cells["purchase_code"].EditedFormattedValue.ToString() + "')";
using (DataTable _DataTable = DBHelper.QueryOdbc(_SelectSql).Tables[0])
{
for (int i = 0; i < _DataTable.Rows.Count; i++)
{
DetailAdd(_DataTable.Rows[i]["COMMODITY_BARCODE"].ToString(), PurchaseCode);
}
}
_WaitForm.Close();
_WaitForm.Dispose();
}
}
GetData();
cobState.Text = "待付款";
cobState_DropDownClosed(null, null);
}
else
{
MessageBox.Show("已存在正在填写的报货单!", "系统提示", MessageBoxButtons.OK,
MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.ServiceNotification);
}
}
catch (Exception ex)
{
}
}
#endregion
#region
private void dgv_Purchase_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (dgv_Purchase.Rows.Count > 0)
{
string strColumnName = dgv_Purchase.Columns[e.ColumnIndex].Name;
string _state = dgv_Purchase.CurrentRow.Cells["purchase_state"].EditedFormattedValue.ToString();
string _PurchaseCode = dgv_Purchase.CurrentRow.Cells["purchase_code"].EditedFormattedValue.ToString();
switch (strColumnName)
{
case "PurchaseChecked":
if (_state == "填写中")
{
if ((bool)dgv_Purchase.CurrentRow.Cells[e.ColumnIndex].EditedFormattedValue)
{
dgv_Purchase.CurrentRow.Cells[e.ColumnIndex].Value = false;
}
else
{
dgv_Purchase.CurrentRow.Cells[e.ColumnIndex].Value = true;
}
}
break;
case "purchase_state":
if (_state == "待付款")
{
try
{
OutTimeOrder();
if (DBHelper.QueryOdbc("SELECT 1 FROM T_PURCHASE WHERE PURCHASE_CODE = '" +
_PurchaseCode + "' AND PURCHASE_STATE = 1").Tables[0].Rows.Count > 0)
{
string _SelectSql = "SELECT PURCHASEPAY_TYPE,PURCHASEPAY_CODE,PURCHASEPAY_AMOUNT," +
"PURCHASEPAY_BALANCE,PURCHASEPAY_PAYMENT,ORDER_RESULT,ORDER_PAYURL,TRADE_NUM " +
"FROM T_PURCHASE_PAYCHECK WHERE PURCHASEPAY_CODE = (SELECT PURCHASE_DESC " +
"FROM T_PURCHASE WHERE PURCHASE_CODE = '" + _PurchaseCode + "')";
try
{
using (DataTable _DataTable = DBHelper.QueryOdbc(_SelectSql).Tables[0])
{
if (_DataTable.Rows.Count > 0)
{
string _OrderCode = _DataTable.Rows[0]["PURCHASEPAY_CODE"].ToString();
string _OrderAmount = decimal.Parse(_DataTable.Rows[0]["PURCHASEPAY_AMOUNT"].ToString()).ToString("F2");
string _OrderBalance = decimal.Parse(_DataTable.Rows[0]["PURCHASEPAY_BALANCE"].ToString()).ToString("F2");
string _OrderPrice = decimal.Parse(_DataTable.Rows[0]["PURCHASEPAY_PAYMENT"].ToString()).ToString("F2");
string _OrderResult = _DataTable.Rows[0]["ORDER_RESULT"].ToString();
string _PayUrl = _DataTable.Rows[0]["ORDER_PAYURL"].ToString();
string _TradeNum = _DataTable.Rows[0]["TRADE_NUM"].ToString();
string _PayType = _DataTable.Rows[0]["PURCHASEPAY_TYPE"].ToString();
ScanPay _ScanPay = new ScanPay(_OrderCode, _OrderAmount, _OrderBalance, _OrderPrice);
if (_ScanPay.ShowDialog() == DialogResult.OK)
{
string _UpdateSql = "UPDATE T_PURCHASE SET PURCHASE_STATE = 9 WHERE PURCHASE_DESC IN ('" + _OrderCode + "')";
try
{
DBHelper.ExecuteSqlTran(_UpdateSql);
}
catch (Exception ex)
{
}
dgv_Purchase.CurrentRow.Cells["purchase_state"].Value = "已付款";
}
else
{
OutTimeOrder();
try
{
if (DBHelper.QueryOdbc("SELECT PURCHASE_STATE FROM T_PURCHASE WHERE PURCHASE_DESC IN ('" +
_OrderCode + "')").Tables[0].Rows[0]["PURCHASE_STATE"].ToString() == "9000")
{
dgv_Purchase.CurrentRow.Cells["purchase_state"].Value = "已关闭";
}
}
catch (Exception ex)
{ }
}
#region
//if (_OrderResult == "100")
//{
// ScanPay _ScanPay = new ScanPay(_OrderCode, _OrderAmount, _OrderBalance, _OrderPrice, _PayUrl, _TradeNum, _PayType);
// if(_ScanPay.ShowDialog()==DialogResult.OK)
// {
// string _UpdateSql = "update t_purchase set purchase_state = 9 where purchase_desc in ('" + _OrderCode + "')";
// try
// {
// DBHelper.ExecuteSqlTran(_UpdateSql);
// }
// catch (Exception ex)
// {
// }
// }
//}
//else
//{
// //PaymentMenu _PaymentMenu = new PaymentMenu();
// //if (_PaymentMenu.ShowDialog() == DialogResult.OK)
// //{
// string[] strargs = { _OrderCode, _OrderPrice, _PayType };
// string _Result = WSHelper.InvokeWebService(_PayServiceUrl, "createpay_customerscan", strargs).ToString();
// if (_Result != "")
// {
// // { "trade_no":"","trade_num":"OA139815067412867988","result_code":"101","result_desc":":(未支付)"}
// JObject _JObject = JObject.Parse(_Result);
// string trade_no = _JObject["trade_no"].ToString();
// string trade_num = _JObject["trade_num"].ToString();
// string result_code = _JObject["result_code"].ToString();
// string result_desc = _JObject["result_desc"].ToString();
// if (result_code == "100")
// {
// string updatesql = "update t_purchase_paycheck set purchasepay_type='" + _PayType +
// "',order_result = '" + result_code + "',order_payurl = '" + result_desc +
// "',trade_num = '" + trade_num + "' where purchasepay_code = '" + _OrderCode + "'";
// try
// {
// DBHelper.ExecuteSqlTran(updatesql);
// }
// catch (Exception ex)
// { }
// ScanPay scanAudit = new ScanPay(_OrderCode, _OrderAmount, _OrderBalance, _OrderPrice, result_desc, trade_num, _PayType);//支付宝ALIPAY微信WECHAT
// if (scanAudit.ShowDialog() == DialogResult.OK)
// {
// updatesql = "update t_purchase set purchase_state = 9 where purchase_code in (" + purchase_code + ")";
// try
// {
// DBHelper.ExecuteSqlTran(updatesql);
// }
// catch (Exception ex)
// {
// }
// }
// }
// else
// {
// lblMess.Text = "提示:" + result_desc;
// }
// }
// //}
//}
#endregion
}
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
else
{
lblMess.Text = "当前订单付款超时已关闭";
dgv_Purchase.CurrentRow.Cells["purchase_state"].Value = "已关闭";
}
}
catch (Exception ex)
{
}
GetData();
DataTable _DataSource = dgv_Purchase.DataSource as DataTable;
if (_DataSource.Select("purchase_state not in ('已付款','已关闭')").Count() == 0)
{
cobState.Text = "全部";
}
cobState_DropDownClosed(null, null);
if (dgv_Purchase.Rows.Count <= 0)
{
dgv_Detail.DataSource = null;
dgv_Detail.Rows.Clear();
}
}
break;
}
}
}
private void dgv_Purchase_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (dgv_Purchase.Rows.Count > 0)
{
string strColumnName = dgv_Purchase.Columns[e.ColumnIndex].Name;
string _state = dgv_Purchase.CurrentRow.Cells["purchase_state"].Value.ToString();
string _PurchaseCode = dgv_Purchase.CurrentRow.Cells["purchase_code"].Value.ToString();
switch (strColumnName)
{
case "Delete":
//if (_state == "填写中")
//{
if (MessageBox.Show("确认删除该报货单吗?\n 注:单据删除后将不可恢复", "系统提示", MessageBoxButtons.YesNo,
MessageBoxIcon.Question, MessageBoxDefaultButton.Button2, MessageBoxOptions.ServiceNotification) == DialogResult.Yes)
{
List<string> _List = new List<string>();
if (_state == "已付款")
{
//已付款订单不直接删除
string sql = "update t_purchase set purchase_state = 9999 where purchase_code = '" + _PurchaseCode + "'";
_List.Add(sql);
}
else
{
string sql = "delete t_purchase where purchase_code = '" + _PurchaseCode + "'";
_List.Add(sql);
string sqls = "delete t_purchasedetail where purchasedetail_desc = '" + _PurchaseCode + "'";
_List.Add(sqls);
}
DBHelper.ExecuteSqlTran(_List);
GetData();
DataTable _DataTable = dgv_Purchase.DataSource as DataTable;
if (_DataTable.Select("purchase_state not in ('已付款','已关闭')").Count() == 0)
{
cobState.Text = "全部";
}
cobState_DropDownClosed(null, null);
if (dgv_Purchase.Rows.Count <= 0)
{
dgv_Detail.DataSource = null;
dgv_Detail.Rows.Clear();
}
}
//}
//else
//{
// lblMess.Text = "提示:只能删除未提交的报货单。";
//}
break;
}
}
}
#endregion
#region (使)
private void btnSave_Click(object sender, EventArgs e)
{
//判断是否有状态为0的业务
//string sql = "select purchase_code from t_purchase where purchase_state = 0";
//DataTable dt = DBHelper.QueryOdbc(sql).Tables[0];
//if (dt.Rows.Count > 0)
//{
// string _Strsql = "select purchasedetail_id from t_purchasedetail where purchasedetail_desc = " + dt.Rows[0][0].ToString() + "";
// DataTable dts = DBHelper.QueryOdbc(_Strsql).Tables[0];
// if (dts.Rows.Count > 0)
// {
// if (MessageBox.Show("是否确认审核正在办理的业务!", "系统提示", MessageBoxButtons.YesNo,
// MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
// {
// string sqls = "update t_purchase set purchase_state=1 where purchase_code='" + dt.Rows[0][0].ToString() + "'";
// DBHelper.ExecuteSqlTran(sqls);
// MessageBox.Show("审核成功!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information,
// MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly);
// GetData();
// }
// else
// {
// return;
// }
// }
// else
// {
// MessageBox.Show("请添加详细采购信息!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information,
// MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly);
// }
//}
//else
//{
// MessageBox.Show("不存在正在办理的业务!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information,
// MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly);
//}
}
#endregion
/// <summary>
/// 关闭超时订单
/// </summary>
/// <returns></returns>
private bool OutTimeOrder()
{
//关闭超时订单
string _UpdateSql = "UPDATE T_PURCHASE SET PURCHASE_STATE = 9000 WHERE RESERVE_DATE < DATETIME('" +
DateTime.Now.AddMinutes(-25).ToString("yyyy/MM/dd HH:mm:ss") + "') AND PURCHASE_STATE = 1";
try
{
DBHelper.ExecuteSqlTran(_UpdateSql);
return true;
}
catch (Exception ex)
{
return false;
}
}
#region
/// <summary>
/// 采购单列表数据
/// </summary>
private void GetData()
{
string sql = "SELECT ROW_NUMBER() OVER (ORDER BY A.PURCHASE_DATE DESC) AS ID,A.PURCHASE_ID," +
"A.PURCHASE_CODE,A.PURCHASE_PERSON,A.PURCHASE_DATE,ISNULL(A.PURCHASE_AMOUNT,0) AS PURCHASE_AMOUNT," +
"(CASE ISNULL(A.PURCHASE_STATE,0) WHEN 0 THEN '填写中' WHEN 1 THEN '待付款' WHEN 9 THEN '已付款' ELSE '已关闭' END) " +
"AS PURCHASE_STATE FROM T_PURCHASE A WHERE A.SERVERPARTSHOP_ID = " + _QualityHelper.serverpartshop_id +
" AND A.PURCHASE_STATE <> 9999 ORDER BY A.PURCHASE_DATE DESC";
DataTable _DataTable = DBHelper.QueryOdbc(sql).Tables[0];
//加一列显示商品
_DataTable.Columns.Add("Commodityinfo", typeof(string));
for (int i = 0; i < _DataTable.Rows.Count; i++)
{
string purchasedetail = "select commodity_name from t_purchasedetail where purchasedetail_desc='" +
_DataTable.Rows[i]["purchase_code"].ToString() + "'";
DataTable _tablepurchasedetail = DBHelper.QueryOdbc(purchasedetail).Tables[0];
if (_tablepurchasedetail.Rows.Count > 0)
{
if (_tablepurchasedetail.Rows.Count > 1)
{
_DataTable.Rows[i]["Commodityinfo"] = _tablepurchasedetail.Rows[0]["commodity_name"].ToString() + "…";
}
else
{
_DataTable.Rows[i]["Commodityinfo"] = _tablepurchasedetail.Rows[0]["commodity_name"].ToString();
}
}
else
{
_DataTable.Rows[i]["Commodityinfo"] = "无商品";
}
}
dgv_Purchase.AutoGenerateColumns = false;
dgv_Purchase.DataSource = _DataTable;
for (int j = 0; j < dgv_Purchase.Rows.Count; j++)
{
if (_DataTable.Rows[j]["purchase_state"].ToString() != "填写中")
{
dgv_Purchase.Rows[j].Cells["Submit"].Value = "详情";
}
}
//}
}
#endregion
#region ->
private void dgv_Purchase_RowEnter(object sender, DataGridViewCellEventArgs e)
{
//当采购单列表数量大于0时点击加载采购单详情
if (e.RowIndex >= 0)
{
string _PurchaseCode = dgv_Purchase.Rows[e.RowIndex].Cells["purchase_code"].Value.ToString();
string strDetailSql = @"SELECT ROW_NUMBER() OVER (ORDER BY A.PURCHASEDETAIL_ID) AS ID,
A.COMMODITY_BARCODE,A.COMMODITY_NAME,A.COMMODITY_RULE||'*'||CAST(B.BOXENTRY_COUNT AS DECIMAL(16,0)) AS COMMODITY_RULE,
REPLACE(REPLACE(A.UNIT,2,'箱'),1,B.COMMODITY_UNIT) AS UNIT,ISNULL(A.PURCHASE_COUNT,0) AS PURCHASE_COUNT,
ISNULL(A.UNITCOUNT,1) AS UNITCOUNT,ISNULL(A.PURCHASE_PRICE,0) AS PURCHASE_PRICE,
ISNULL(A.TOTAL_PRICE,0) AS TOTAL_PRICE,A.PURCHASEDETAIL_ID,ISNULL(A.TOTAL_COUNT,0) AS TOTAL_COUNT,
A.PURCHASE_COUNT AS COUNT,B.COMMODITY_UNIT AS COMMODITY_UNIT,'箱' AS BOX_UNIT,B.BOXENTRY_COUNT
FROM
T_PURCHASEDETAIL A LEFT JOIN T_SELLERCOMMODITY B ON B.COMMODITY_BARCODE = A.COMMODITY_BARCODE
WHERE
A.PURCHASEDETAIL_DESC='" + _PurchaseCode + "' ORDER BY PURCHASEDETAIL_ID";
using (DataTable _DataTable = DBHelper.QueryOdbc(strDetailSql).Tables[0])
{
dgv_Detail.AutoGenerateColumns = false;
dgv_Detail.DataSource = _DataTable;
lblOrderMess.Text = "当前单据合计金额:" + dgv_Purchase.Rows[e.RowIndex].Cells["purchase_amount"].EditedFormattedValue.ToString();
}
//判断采购单状态,设置采购详情是否可编辑
if (dgv_Purchase.Rows[e.RowIndex].Cells["purchase_state"].Value.ToString() != "填写中")
{
dgv_Detail.Columns["ComboxUnit"].ReadOnly = true;
dgv_Detail.Columns["purchase_count"].ReadOnly = true;
for (int i = 0; i < dgv_Detail.Columns.Count; i++)
{
dgv_Detail.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
}
}
else
{
dgv_Detail.Columns["ComboxUnit"].ReadOnly = false;
dgv_Detail.Columns["purchase_count"].ReadOnly = false;
for (int i = 0; i < dgv_Detail.Columns.Count; i++)
{
dgv_Detail.Columns[i].SortMode = DataGridViewColumnSortMode.Automatic;
}
}
if (dgv_Detail.Rows.Count > 0)
{
dgv_Detail.CurrentRow.Cells["purchase_count"].Selected = true;
}
}
}
#endregion
/// <summary>
/// 提交报货单
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnUpLoad_Click(object sender, EventArgs e)
{
string strWhere = "";
for (int i = 0; i < dgv_Purchase.Rows.Count; i++)
{
if ((bool)dgv_Purchase.Rows[i].Cells["PurchaseChecked"].EditedFormattedValue)
{
strWhere += (strWhere == "" ? "'" + dgv_Purchase.Rows[i].Cells["purchase_code"].Value.ToString() + "'"
: ",'" + dgv_Purchase.Rows[i].Cells["purchase_code"].Value.ToString() + "'");
}
}
if (strWhere == "")
{
}
PostData(strWhere);
}
public void ShowWaiteForm()
{
_WaitForm = WaiteFrom.GetInstance();
//设置WaitForm的父窗体为当前窗体以便在WaitForm中使用父窗体对象
_WaitForm.TopMost = true;
_WaitForm.Owner = this;
_WaitForm.ShowMessage("加载中......");
_WaitForm.Show();
Application.DoEvents();
_WaitForm.Refresh();
}
public void PostData(string PurchaseCode)
{
btnPriceUpdate_Click(null, null);
GetData();
cobState_DropDownClosed(null, null);
string purchaseSql = "SELECT PURCHASE_ID, PURCHASE_CODE, SERVERPARTSHOP_ID, SERVERPART_ID, PURCHASE_PERSON, " +
"PURCHASE_PERSONTEL, PURCHASE_DATE, RESERVE_DATE, PURCHASE_AMOUNT, PURCHASE_TYPE, PURCHASE_STATE, " +
"PASSPORT_GUID, PURCHASE_DESC FROM T_PURCHASE WHERE SERVERPARTSHOP_ID = " + _QualityHelper.serverpartshop_id;
if (PurchaseCode == "")
{
//if (MessageBox.Show("确定提交全部订货单?", "系统提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) != DialogResult.OK)
//{
// return;
//}
purchaseSql += " AND PURCHASE_STATE = 0";
}
else
{
purchaseSql += " AND PURCHASE_STATE = 0 AND PURCHASE_CODE IN(" + PurchaseCode + ")";
}
DataTable dt = null;
try
{
dt = DBHelper.QueryOdbc(purchaseSql).Tables[0];
}
catch (Exception e)
{
MessageBox.Show("查询数据库出错");
return;
}
if (dt.Rows.Count > 0)
{
decimal amount = 0;
string purchase_code = "";
for (int i = 0; i < dt.Rows.Count; i++)
{
try
{
amount += decimal.Parse(dt.Rows[i]["purchase_amount"].ToString());
}
catch
{
amount += 0;
}
purchase_code += (purchase_code == "" ? "'" + dt.Rows[i]["purchase_code"].ToString() + "'"
: ",'" + dt.Rows[i]["purchase_code"].ToString() + "'");
}
if (amount > 30000)
{
lblMess.Text = "当前订单金额大于3万请拆分报货";
return;
}
else if (amount == 0)
{
lblMess.Text = "当前订单所有商品库存不足,请重新添加商品";
return;
}
DataTable _DetailTable = null;
string purchasedetailSql = "SELECT PURCHASEDETAIL_ID, PURCHASE_ID, COMMODITY_ID, COMMODITY_NAME, COMMODITY_CODE, " +
"COMMODITY_BARCODE, COMMODITY_RULE, COMMODITY_WEIGHT, SERVERPARTSHOP_ID, SERVERPART_ID, UNIT, UNITCOUNT, " +
"PURCHASE_COUNT, TOTAL_COUNT, PURCHASE_PRICE, TOTAL_PRICE, SUPPLIER_ID, SUPPLIER_NAME, PURCHASEDETAIL_DESC " +
"FROM T_PURCHASEDETAIL WHERE PURCHASE_COUNT > 0 AND PURCHASEDETAIL_DESC IN (" + purchase_code + ")";
try
{
_DetailTable = DBHelper.QueryOdbc(purchasedetailSql).Tables[0];
if (_DetailTable.Rows.Count == 0)
{
lblMess.Text = "提示:订单未添加商品或商品库存不足";
return;
}
}
catch (Exception e)
{
MessageBox.Show("查询数据库出错");
return;
}
ReportPreview _ReportPreview = new ReportPreview(purchase_code);
if (_ReportPreview.ShowDialog() != DialogResult.OK)
{
return;
}
try
{
DBHelper.ExecuteSqlTran("update t_purchase set reserve_date = datetime('" +
DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") +
"') where purchase_code in (" + purchase_code + ")");
}
catch (Exception ex)
{ }
ShowWaiteForm();
_WaitForm.ShowMessage("正在提交报货单...");
try
{
DateTime now = DateTime.Now;
DateTime d1 = new DateTime(now.Year, now.Month, 1);
DateTime d2 = d1.AddMonths(1).AddDays(-1);
string _UpperAmountSql = "SELECT ISNULL(SUM(ISNULL(PURCHASE_AMOUNT,0)),0) AS UPPER_AMOUNT " +
"FROM T_PURCHASE WHERE PURCHASE_STATE IN (1,9,9999) AND RESERVE_DATE BETWEEN DATETIME('" +
d1.ToString("yyyy/MM/dd") + " 00:00:00') AND DATETIME('" + d2.ToString("yyyy/MM/dd") + " 23:59:59')";
string _UpperAmount = DBHelper.QueryOdbc(_UpperAmountSql).Tables[0].Rows[0]["UPPER_AMOUNT"].ToString();
if (decimal.Parse(_UpperAmount) > 200000)
{
lblMess.Text = "您本月报货金额已超过20万上限请联系商贸公司处理";
for (int i = 3; i > 0; i--)
{
_WaitForm.ShowMessage("报货失败您本月报货金额已超过20万上限请联系商贸公司处理(" + i + ")");
System.Threading.Thread.Sleep(1 * 1000);
}
_WaitForm.Close();
_WaitForm.Dispose();
return;
}
}
catch (Exception ex)
{
_WaitForm.Close();
_WaitForm.Dispose();
MessageBox.Show("查询数据库出错");
return;
}
dt = DBHelper.QueryOdbc(purchaseSql).Tables[0];
string purchaseJsonStr = JsonHelper.ToJson(dt);
string purchasedetailJsonStr = JsonHelper.ToJson(_DetailTable);
string strPostData = "action_type=UploadSeller&t_purchase=" + purchaseJsonStr + "&t_purchasedetail=" + purchasedetailJsonStr; //+ "&action_data=888888";//注释部分测试用
try
{
string _UpLoadResult = PostDataHelper.HttpPost(ServiceUrl, strPostData);//http://localhost:49898/Handler1.ashx
if (_UpLoadResult != "")
{
_UpLoadResult = _UpLoadResult.Replace("[", "").Replace("]", "");
JObject _UploadJOject = JObject.Parse(_UpLoadResult);
string ResultCode = _UploadJOject["ResultObject"]["ResultCode"].ToString();
string FirstParameter = _UploadJOject["ResultObject"]["FirstParameter"].ToString();
string SecondParameter = _UploadJOject["ResultObject"]["SecondParameter"].ToString();
string ThirdParameter = _UploadJOject["ResultObject"]["ThirdParameter"].ToString();
string FourthParameter = _UploadJOject["ResultObject"]["FourthParameter"].ToString();
string FifthParameter = _UploadJOject["ResultObject"]["FifthParameter"].ToString();
string ResultDesc = _UploadJOject["ResultObject"]["ResultDesc"].ToString();
if (ResultCode == "100")
{
string _UpdateSql = "update t_purchase set purchase_state = 1,purchase_desc = " +
(FirstParameter == "" ? "null" : "'" + FirstParameter + "' ") +
" where purchase_code in (" + purchase_code + ")";
DBHelper.ExecuteSqlTran(_UpdateSql);
decimal payment = 0;
decimal.TryParse(FourthParameter, out payment);
long maxid = 0;
try
{
maxid = long.Parse(DBHelper.QueryOdbc("select max(purchase_paycheck_id) from t_purchase_paycheck").
Tables[0].Rows[0][0].ToString());
}
catch
{
maxid = 0;
}
string insertsql = "insert into t_purchase_paycheck (purchase_paycheck_id, serverpartcode, serverpartshop_id, " +
"shopcode, machinecode, purchasepay_date, purchasepay_code, purchasepay_amount, " +
"purchasepay_balance, purchasepay_payment) values (" + (maxid + 1) +
",'" + _QualityHelper.serverpartcode + "'," + _QualityHelper.serverpartshop_id + ",'" + _QualityHelper.shopcode +
"','" + _QualityHelper.machinecode + "',datetime('" + DateTime.Now.ToString() +
"'),'" + FirstParameter + "'," + SecondParameter + "," + ThirdParameter + "," + FourthParameter + ")";
try
{
DBHelper.ExecuteSqlTran(insertsql);
}
catch (Exception ex)
{ }
if (payment > 0)
{
lblMess.Text = "订单:" + FirstParameter + "正在请求支付,请稍候......";
_WaitForm.ShowMessage("正在等待支付......");
ScanPay _ScanPay = new ScanPay(FirstParameter, SecondParameter, ThirdParameter, FourthParameter);
if (_ScanPay.ShowDialog() == DialogResult.OK)
{
_WaitForm.ShowMessage("正在确认订单......");
_UpdateSql = "update t_purchase set purchase_state = 9,purchase_desc = " +
(FirstParameter == "" ? "null" : "'" + FirstParameter + "' ") +
" where purchase_code in (" + purchase_code + ")";
try
{
DBHelper.ExecuteSqlTran(_UpdateSql);
}
catch (Exception ex)
{
}
GetData();
cobState.Text = "已付款";
cobState_DropDownClosed(null, null);
}
else
{
OutTimeOrder();
GetData();
cobState.Text = "待付款";
cobState_DropDownClosed(null, null);
}
#region
// PaymentMenu _PaymentMenu = new PaymentMenu();
// if (_PaymentMenu.ShowDialog() == DialogResult.OK)
// {
// string paytype = _PaymentMenu.PayType;
// //string _PayServiceUrl = "http://192.168.12.140:7080/EShangTechService/Service.asmx";
// string[] strargs = { FirstParameter, FourthParameter, paytype };
// string _Result = WSHelper.InvokeWebService(_PayServiceUrl, "createpay_customerscan", strargs).ToString();
// if (_Result != "")
// {
// // { "trade_no":"","trade_num":"OA139815067412867988","result_code":"101","result_desc":":(未支付)"}
// JObject _JObject = JObject.Parse(_Result);
// string trade_no = _JObject["trade_no"].ToString();
// string trade_num = _JObject["trade_num"].ToString();
// string result_code = _JObject["result_code"].ToString();
// string result_desc = _JObject["result_desc"].ToString();
// if (result_code == "100")
// {
// string updatesql = "update t_purchase_paycheck set purchasepay_type = '" + paytype +
// "',order_result = '" + result_code + "',order_payurl = '" + result_desc +
// "',trade_num = '" + trade_num + "' where purchasepay_code = '" + FirstParameter + "'";
// try
// {
// DBHelper.ExecuteSqlTran(updatesql);
// }
// catch (Exception ex)
// { }
// ScanPay scanAudit = new ScanPay(_UpLoadResult, _Result, paytype);//支付宝ALIPAY微信WECHAT
// if (scanAudit.ShowDialog() == DialogResult.OK)
// {
// purchasedetailSql = "update t_purchase set purchase_state = 9,purchase_desc = " +
// (FirstParameter == "" ? "null" : "'" + FirstParameter + "' ") +
// " where purchase_code in (" + purchase_code + ")";
// try
// {
// DBHelper.ExecuteSqlTran(purchasedetailSql);
// }
// catch (Exception e)
// {
// }
// }
// }
// }
// }
#endregion
}
else
{
GetData();
cobState.Text = "已付款";
cobState_DropDownClosed(null, null);
}
lblMess.Text = "";
_WaitForm.Close();
_WaitForm.Dispose();
//MessageBox.Show("采购单上传成功!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information,
// MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly);
}
else
{
//MessageBox.Show("报货单上传失败,请重试!", "系统提示", MessageBoxButtons.OK,
// MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
lblMess.Text = "报货单上传失败,请重试!";
for (int i = 3; i > 0; i--)
{
_WaitForm.ShowMessage("报货单上传失败,请重试!(" + i + ")");
System.Threading.Thread.Sleep(1 * 1000);
}
_WaitForm.Close();
_WaitForm.Dispose();
return;
}
}
else
{
lblMess.Text = "报货单上传失败,请重试!";
for (int i = 3; i > 0; i--)
{
_WaitForm.ShowMessage("报货单上传失败,请重试!(" + i + ")");
System.Threading.Thread.Sleep(1 * 1000);
}
_WaitForm.Close();
_WaitForm.Dispose();
//MessageBox.Show("报货单上传失败,请重试!", "系统提示", MessageBoxButtons.OK,
// MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
return;
}
}
catch (Exception ex)
{
lblMess.Text = "报货单上传失败,请重试!";
for (int i = 3; i > 0; i--)
{
_WaitForm.ShowMessage("报货单上传失败,请重试!(" + i + ")");
System.Threading.Thread.Sleep(1 * 1000);
}
_WaitForm.Close();
_WaitForm.Dispose();
//MessageBox.Show("报货单上传失败:" + ex.Message, "系统提示", MessageBoxButtons.OK,
// MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
return;
}
}
else
{
lblMess.Text = "请添加报货单!";
for (int i = 3; i > 0; i--)
{
_WaitForm.ShowMessage("请添加报货单!(" + i + ")");
System.Threading.Thread.Sleep(1 * 1000);
}
_WaitForm.Close();
_WaitForm.Dispose();
//MessageBox.Show("请先添加报货单", "系统提示", MessageBoxButtons.OK,
// MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
return;
}
}
/// <summary>
/// 一级类别选择事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void cobOneType_DropDownClosed(object sender, EventArgs e)
{
DataTable _TypeTable = cobTwoType.DataSource as DataTable;
DataView _DataView = _TypeTable.DefaultView;
//一级类别选择后关联显示对应大类下全部商品信息
if (cobOneType.Text != "全部")
{
cobTwoType.Text = "全部";
if (cobOneType.Text != "我的收藏")
{
string TYPE_PID = cobOneType.SelectedValue.ToString();
_TypeTable.DefaultView.RowFilter = "TYPE_PID=" + TYPE_PID + " or TYPE_NAME = '全部'";
_DataView.RowFilter = "TYPE_PID=" + TYPE_PID + " or TYPE_NAME = '全部'";
}
else
{
string TYPE_PID = "";
DataTable _GoodsType = dgv_Commodity.DataSource as DataTable;
DataRow[] _PIDRow = _GoodsType.Select("FAVORITE = 1");
for (int i = 0; i < _PIDRow.Count(); i++)
{
TYPE_PID += (TYPE_PID == "" ? _PIDRow[i]["SELLERCOMMODITYTYPE_ID"].ToString() :
"," + _PIDRow[i]["SELLERCOMMODITYTYPE_ID"].ToString());
}
if (TYPE_PID != "")
{
_TypeTable.DefaultView.RowFilter = "SELLERCOMMODITYTYPE_ID IN (" + TYPE_PID + ") or TYPE_NAME = '全部'";
_DataView.RowFilter = "SELLERCOMMODITYTYPE_ID IN(" + TYPE_PID + ") or TYPE_NAME = '全部'";
}
else
{
_TypeTable.DefaultView.RowFilter = "TYPE_NAME = '全部'";
_DataView.RowFilter = "TYPE_NAME = '全部'";
}
}
}
else
{
cobTwoType.Text = "全部";
string TYPE_PID = cobOneType.SelectedValue.ToString();
_TypeTable.DefaultView.RowFilter = "TYPE_NAME is not null";
_DataView.RowFilter = "TYPE_NAME is not null";
}
string TYPE_ID = "";
for (int i = 0; i < _DataView.ToTable().Rows.Count; i++)
{
TYPE_ID += (TYPE_ID == "" ? _DataView.ToTable().Rows[i]["SELLERCOMMODITYTYPE_ID"].ToString()
: "," + _DataView.ToTable().Rows[i]["SELLERCOMMODITYTYPE_ID"].ToString());
}
DataTable _CommodityTable = dgv_Commodity.DataSource as DataTable;
if (cobOneType.Text != "我的收藏")
{
_CommodityTable.DefaultView.RowFilter = "SELLERCOMMODITYTYPE_ID IN (" + TYPE_ID + ")";
}
else
{
_CommodityTable.DefaultView.RowFilter = "FAVORITE = 1 AND SELLERCOMMODITYTYPE_ID IN (" + TYPE_ID + ")";
}
}
/// <summary>
/// 二级类别选择事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void cobTwoType_DropDownClosed(object sender, EventArgs e)
{
//显示对应类别商品
if (cobTwoType.Text != "全部")
{
string TYPE_ID = cobTwoType.SelectedValue.ToString();
DataTable _CommodityTable = dgv_Commodity.DataSource as DataTable;
if (cobOneType.Text != "我的收藏")
{
_CommodityTable.DefaultView.RowFilter = "SELLERCOMMODITYTYPE_ID = " + TYPE_ID;
}
else
{
_CommodityTable.DefaultView.RowFilter = "FAVORITE = 1 AND SELLERCOMMODITYTYPE_ID = " + TYPE_ID;
}
}
else
{
string TYPE_ID = "";
DataTable _DataTable = cobTwoType.DataSource as DataTable;
DataView _TypeView = _DataTable.DefaultView;
if (cobOneType.Text != "全部")
{
if (cobOneType.Text != "我的收藏")
{
string TYPE_PID = cobOneType.SelectedValue.ToString();
_TypeView.RowFilter = "TYPE_PID=" + TYPE_PID + " or TYPE_NAME = '全部'";
}
else
{
string TYPE_PID = "";
DataTable _GoodsType = dgv_Commodity.DataSource as DataTable;
DataRow[] _PIDRow = _GoodsType.Select("FAVORITE = 1");
for (int i = 0; i < _PIDRow.Count(); i++)
{
TYPE_PID += (TYPE_PID == "" ? _PIDRow[i]["SELLERCOMMODITYTYPE_ID"].ToString() :
"," + _PIDRow[i]["SELLERCOMMODITYTYPE_ID"].ToString());
}
if (TYPE_PID != "")
{
_TypeView.RowFilter = "SELLERCOMMODITYTYPE_ID IN(" + TYPE_PID + ") or TYPE_NAME = '全部'";
}
else
{
_TypeView.RowFilter = "TYPE_NAME = '全部'";
}
}
}
else
{
string TYPE_PID = cobOneType.SelectedValue.ToString();
_TypeView.RowFilter = "TYPE_NAME is not null";
}
for (int i = 0; i < _TypeView.ToTable().Rows.Count; i++)
{
TYPE_ID += (TYPE_ID == "" ? _TypeView.ToTable().Rows[i]["SELLERCOMMODITYTYPE_ID"].ToString()
: "," + _TypeView.ToTable().Rows[i]["SELLERCOMMODITYTYPE_ID"].ToString());
}
DataTable _CommodityTable = dgv_Commodity.DataSource as DataTable;
if (cobOneType.Text != "我的收藏")
{
_CommodityTable.DefaultView.RowFilter = "SELLERCOMMODITYTYPE_ID IN (" + TYPE_ID + ")";
}
else
{
_CommodityTable.DefaultView.RowFilter = "FAVORITE = 1 AND SELLERCOMMODITYTYPE_ID IN (" + TYPE_ID + ")";
}
}
}
private void dgv_Detail_DataError(object sender, DataGridViewDataErrorEventArgs e)
{
//处理表格异常,勿去除
}
private void dgv_Detail_DataSourceChanged(object sender, EventArgs e)
{
//加载列表时的下拉选项绑定
for (int i = 0; i < dgv_Detail.Rows.Count; i++)
{
DataGridViewComboBoxCell _ComboBoxColumn = dgv_Detail.Rows[i].Cells["ComboxUnit"] as DataGridViewComboBoxCell;
_ComboBoxColumn.Items.Clear();
_ComboBoxColumn.Items.Add(dgv_Detail.Rows[i].Cells["Box_Unit"].Value);
//最小单位采购,暂注释
//_ComboBoxColumn.Items.Add(dgv_Detail.Rows[i].Cells["Commodity_Unit"].Value);
_ComboBoxColumn.Value = dgv_Detail.Rows[i].Cells["Unit"].Value;
}
}
private void dgv_Detail_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
//点击表格标题排序时下拉列表加载
for (int i = 0; i < dgv_Detail.Rows.Count; i++)
{
DataGridViewComboBoxCell _ComboBoxColumn = dgv_Detail.Rows[i].Cells["ComboxUnit"] as DataGridViewComboBoxCell;
_ComboBoxColumn.Items.Clear();
_ComboBoxColumn.Items.Add(dgv_Detail.Rows[i].Cells["Box_Unit"].Value);
_ComboBoxColumn.Items.Add(dgv_Detail.Rows[i].Cells["Commodity_Unit"].Value);
_ComboBoxColumn.Value = dgv_Detail.Rows[i].Cells["Unit"].Value;
}
}
/// <summary>
/// 商品列表选择
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void dgv_Commodity_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex >= 0)
{
string _ColumnName = dgv_Commodity.Columns[e.ColumnIndex].Name;
switch (_ColumnName)
{
case "Choose":
if (dgv_Purchase.Rows.Count > 0)
{
if (dgv_Purchase.CurrentRow.Cells["purchase_state"].EditedFormattedValue.ToString() == "填写中")
{
if (DataUpdate)
{
lblMess.Text = "商品库未更新,请先点击【商品同步】";
MessageBox.Show("商品库未更新,不能添加商品;\n请点击商品同步进行商品库信息更新!", "系统提示",
MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.ServiceNotification);
return;
}
decimal _Stock = decimal.Parse(dgv_Commodity.Rows[e.RowIndex].Cells["commodity_boxcostprice"].EditedFormattedValue.ToString());
if (_Stock <= 0)
{
lblMess.Text = dgv_Commodity.Rows[e.RowIndex].Cells["GoodsName"].EditedFormattedValue.ToString() + "【库存不足】";
return;
}
if (DetailAdd(dgv_Commodity.Rows[e.RowIndex].Cells["barcode"].EditedFormattedValue.ToString(),
dgv_Purchase.CurrentRow.Cells["purchase_code"].EditedFormattedValue.ToString()))
{
dgv_Purchase_RowEnter(null, new DataGridViewCellEventArgs(dgv_Purchase.CurrentRow.
Cells["purchase_code"].ColumnIndex, dgv_Purchase.CurrentRow.Index));
}
else
{
lblMess.Text = "添加失败,请重试";
}
}
else
{
lblMess.Text = "报货单已提交,如需添加商品请先新增报货单";
}
}
else
{
lblMess.Text = "请先添加报货单";
}
break;
}
}
}
/// <summary>
/// 采购详情数量编辑更新
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void dgv_Detail_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
int row = e.RowIndex;
int col = e.ColumnIndex;
string strColumnName = dgv_Detail.Columns[e.ColumnIndex].Name;
string _Barcode = dgv_Detail.CurrentRow.Cells["commodity_barcode"].EditedFormattedValue.ToString();
string _PurchaseCode = dgv_Purchase.CurrentRow.Cells["purchase_code"].EditedFormattedValue.ToString();
DataTable _DataTable = dgv_Commodity.DataSource as DataTable;
DataRow[] _DataRow = _DataTable.Select("COMMODITY_BARCODE = '" + _Barcode + "'");
if (_DataRow.Count() > 0)
{
decimal _Stock = decimal.Parse(_DataRow[0]["commodity_boxcostprice"].ToString());//库存
decimal _CountTmp = decimal.Parse(dgv_Detail.CurrentRow.Cells["purchase_count"].EditedFormattedValue.ToString());
decimal _Count = decimal.Parse(dgv_Detail.CurrentRow.Cells["purchase_count"].EditedFormattedValue.ToString());//采购数量
if (_Stock < _Count)
{
_Count = Math.Floor(_Stock);
lblMess.Text = dgv_Detail.CurrentRow.Cells["commodity_name"].EditedFormattedValue.ToString() + "库存不足,已自动调整报货数量";
}
decimal _Unit = dgv_Detail.CurrentRow.Cells["ComboxUnit"].EditedFormattedValue.ToString() == "箱" ? 2 : 1;//采购单位
decimal _BoxPrice = decimal.Parse(_DataRow[0]["COMMODITY_BOXSELLPRICE"].ToString());//箱单价
decimal _BoxCount = decimal.Parse(dgv_Detail.CurrentRow.Cells["box_count"].EditedFormattedValue.ToString());//箱数量
decimal _UnitCount = (_Unit == 2 ? _BoxCount : 1);//单位数量
decimal _TotalCount = (_Unit == 2 ? _BoxCount : 1) * _Count;//采购总数
decimal _PurchasePrice = (_Unit == 2 ? _BoxPrice : _BoxPrice / _BoxCount);//采购单价
decimal _TotalPrice = _Count * _PurchasePrice;//采购金额
switch (strColumnName)
{
case "purchase_count":
//dgv_Detail.CurrentRow.Cells["unitcount"].Value = _UnitCount;
//dgv_Detail.CurrentRow.Cells["purchase_price"].Value = _PurchasePrice;
//dgv_Detail.CurrentRow.Cells["total_price"].Value = _TotalPrice;
//break;
case "ComboxUnit":
dgv_Detail.CurrentRow.Cells["purchase_count"].Value = _Count;
dgv_Detail.CurrentRow.Cells["unitcount"].Value = _UnitCount;
dgv_Detail.CurrentRow.Cells["purchase_price"].Value = _PurchasePrice;
dgv_Detail.CurrentRow.Cells["total_price"].Value = _TotalPrice;
UpdateDetail(_PurchaseCode, _Barcode, _Count, _Unit, _UnitCount, _PurchasePrice, _TotalCount, _TotalPrice);
break;
}
}
}
#region
/// <summary>
/// 添加采购单详情
/// </summary>
/// <param name="Barcode">商品条码</param>
/// <param name="PurchaseCode">采购单号</param>
/// <returns></returns>
private bool DetailAdd(string Barcode, string PurchaseCode)
{
/*按配送价类型获取商品价格信息,
1021便利店价格1000通用价格
优先选择便利店价格信息*/
string _selectsql = "SELECT A.SELLERCOMMODITY_ID,A.COMMODITY_CODE,A.COMMODITY_NAME,A.COMMODITY_BARCODE," +
"A.COMMODITY_UNIT, A.COMMODITY_RULE, A.COMMODITY_STATE, A.BOXENTRY_COUNT,B.COMMODITY_BOXSELLPRICE," +
"B.SELLTAXPRICE,TRUNCNUM(ISNULL(B.COMMODITY_BOXCOSTPRICE,0),0) AS COMMODITY_BOXCOSTPRICE " +
"FROM T_SELLERCOMMODITY A, T_ROLEPRICE B WHERE A.SELLERCOMMODITY_ID = B.SELLERCOMMODITY_ID " +
"AND A.COMMODITY_STATE = 1 AND B.SELLTAXPRICE <> 0 AND B.COMMODITY_BOXSELLPRICE <> 0 ";
string _sqlwhere = string.Format(" AND A.COMMODITY_BARCODE = '{0}' AND B.ROLEPRICE_NAME = '1021'", Barcode);
DataTable _DataTable = DBHelper.QueryOdbc(_selectsql + _sqlwhere).Tables[0];
if (_DataTable.Rows.Count <= 0)
{
_sqlwhere = string.Format(" AND A.COMMODITY_BARCODE = '{0}' AND B.ROLEPRICE_NAME = '1000'", Barcode);
_DataTable = DBHelper.QueryOdbc(_selectsql + _sqlwhere).Tables[0];
}
if (_DataTable.Rows.Count > 0)
{
//检查当前采购单是否已经添加过选择的商品,并进行处理
_selectsql = "SELECT 1 FROM T_PURCHASEDETAIL WHERE PURCHASEDETAIL_DESC = '" + PurchaseCode +
"' AND COMMODITY_BARCODE = '" + Barcode + "'";
try
{
if (DBHelper.QueryOdbc(_selectsql).Tables[0].Rows.Count > 0)
{
for (int i = 0; i < dgv_Detail.Rows.Count; i++)
{
if (dgv_Detail.Rows[i].Cells["commodity_barcode"].EditedFormattedValue.ToString() == Barcode)
{
dgv_Detail.CurrentCell = dgv_Detail["purchase_count", i];
dgv_Detail.Rows[i].Selected = true;
break;
}
}
}
else
{
//InputCount _inputCount = new InputCount(_DataTable.Rows[0]);
//_inputCount.TopMost = true;
//_inputCount.ShowInTaskbar = false;
//_inputCount.ShowDialog();
//if (_inputCount.DialogResult == DialogResult.OK)
//{
decimal _Stock = decimal.Parse(_DataTable.Rows[0]["COMMODITY_BOXCOSTPRICE"].ToString());//库存数量
if (_Stock > 0)
{
decimal _Count = _Stock > 1 ? 1 : _Stock;// _inputCount.Count;
decimal _Unit = 2;//_inputCount.Unit;
decimal _UnitCount = (_Unit == 2 ? decimal.Parse(_DataTable.Rows[0]["BOXENTRY_COUNT"].ToString()) : 1);
decimal _TotalCount = (_Unit == 2 ? decimal.Parse(_DataTable.Rows[0]["BOXENTRY_COUNT"].ToString()) : 1) * _Count;
decimal _PurchasePrice = (_Unit == 2 ? decimal.Parse(_DataTable.Rows[0]["COMMODITY_BOXSELLPRICE"].ToString())
: decimal.Parse(_DataTable.Rows[0]["SELLTAXPRICE"].ToString()));
decimal _TotalPrice = _Count * _PurchasePrice;
string _Commodity_Id = _DataTable.Rows[0]["SELLERCOMMODITY_ID"].ToString();
string _Commodity_Name = _DataTable.Rows[0]["COMMODITY_NAME"].ToString();
string _Commodity_Code = _DataTable.Rows[0]["COMMODITY_CODE"].ToString();
string _Commodity_Rule = _DataTable.Rows[0]["COMMODITY_RULE"].ToString();
string _Purchase_id = DBHelper.QueryOdbc("SELECT PURCHASE_ID FROM T_PURCHASE " +
"WHERE PURCHASE_CODE='" + PurchaseCode + "'").Tables[0].Rows[0]["PURCHASE_ID"].ToString();
decimal _MaxID = 0;
try
{
_MaxID = decimal.Parse(DBHelper.QueryOdbc("SELECT MAX(PURCHASEDETAIL_ID) FROM T_PURCHASEDETAIL").Tables[0].Rows[0][0].ToString());
}
catch
{
_MaxID = 0;
}
string _insertsql = "INSERT INTO T_PURCHASEDETAIL ( PURCHASEDETAIL_ID, PURCHASE_ID, COMMODITY_ID, " +
"COMMODITY_NAME, COMMODITY_CODE, COMMODITY_BARCODE, COMMODITY_RULE, SERVERPARTSHOP_ID, " +
"UNIT, UNITCOUNT, PURCHASE_COUNT, TOTAL_COUNT, PURCHASE_PRICE, TOTAL_PRICE, PURCHASEDETAIL_DESC) " +
"VALUES ('" + (_MaxID + 1) + "','" + _Purchase_id + "','" + _Commodity_Id + "','" + _Commodity_Name +
"','" + _Commodity_Code + "','" + Barcode + "','" + _Commodity_Rule + "','" + _QualityHelper.serverpartshop_id +
"'," + _Unit + "," + _UnitCount + "," + _Count + "," + _TotalCount + "," +
_PurchasePrice + "," + _TotalPrice + ",'" + PurchaseCode + "')";
DBHelper.ExecuteSqlTran(_insertsql);
string sql = "SELECT ISNULL(SUM(TOTAL_PRICE),0) FROM T_PURCHASEDETAIL " +
"WHERE PURCHASEDETAIL_DESC = '" + PurchaseCode + "'";
DataTable dt = DBHelper.QueryOdbc(sql).Tables[0];
if (dt.Rows[0][0].ToString() != "")
{
string _Strsql = "UPDATE T_PURCHASE SET PURCHASE_AMOUNT=" + dt.Rows[0][0].ToString() +
" WHERE PURCHASE_CODE = '" + PurchaseCode + "'";
DBHelper.ExecuteSqlTran(_Strsql);
//更新采购单据DataGridView中的金额信息
dgv_Purchase.CurrentRow.Cells["purchase_amount"].Value = dt.Rows[0][0];
lblOrderMess.Text = "当前单据合计金额:" + dgv_Purchase.CurrentRow.Cells["purchase_amount"].EditedFormattedValue.ToString();
lblMess.Text = _Commodity_Name + "添加成功";
}
}
else
{
lblMess.Text = _DataTable.Rows[0]["COMMODITY_NAME"].ToString() + "【库存不足】";
}
//}
}
}
catch (Exception ex)
{
return false;
}
}
return true;
}
/// <summary>
/// 更新采购详情信息
/// </summary>
/// <param name="PurchaseCode">采购单号</param>
/// <param name="Barcode">商品条码</param>
/// <param name="Count">采购数量</param>
/// <param name="Unit">采购单位</param>
/// <param name="UnitCount">单位数量</param>
/// <param name="PurchasePrice">采购单价</param>
/// <param name="TotalCount">采购总数</param>
/// <param name="TotalPrice">采购金额</param>
/// <returns></returns>
private bool UpdateDetail(string PurchaseCode, string Barcode, decimal Count, decimal Unit,
decimal UnitCount, decimal PurchasePrice, decimal TotalCount, decimal TotalPrice)
{
string strUpdateSql = string.Format("UPDATE T_PURCHASEDETAIL SET UNIT = {0},UNITCOUNT = {1}," +
"PURCHASE_COUNT = {2},TOTAL_COUNT = {3},PURCHASE_PRICE = {4},TOTAL_PRICE = {5} " +
"WHERE PURCHASEDETAIL_DESC = '{6}' AND COMMODITY_BARCODE = '{7}'", Unit, UnitCount, Count,
TotalCount, PurchasePrice, TotalPrice, PurchaseCode, Barcode);
try
{
DBHelper.ExecuteSqlTran(strUpdateSql);
string sql = "SELECT ISNULL(SUM(TOTAL_PRICE),0) FROM T_PURCHASEDETAIL " +
"WHERE PURCHASEDETAIL_DESC = '" + PurchaseCode + "'";
DataTable dt = DBHelper.QueryOdbc(sql).Tables[0];
if (dt.Rows[0][0].ToString() != "")
{
//更新采购单主表金额信息
string _Strsql = "UPDATE T_PURCHASE SET PURCHASE_AMOUNT=" + dt.Rows[0][0].ToString() +
" WHERE PURCHASE_CODE = '" + PurchaseCode + "'";
DBHelper.ExecuteSqlTran(_Strsql);
//更新采购单据DataGridView中的金额信息
dgv_Purchase.CurrentRow.Cells["purchase_amount"].Value = dt.Rows[0][0];
lblOrderMess.Text = "当前单据合计金额:" + dgv_Purchase.CurrentRow.Cells["purchase_amount"].EditedFormattedValue.ToString();
}
return true;
}
catch (Exception ex)
{
return false;
}
}
/// <summary>
/// 删除采购详情记录
/// </summary>
/// <param name="Barcode">商品条码</param>
/// <param name="PurchaseCode">采购单号</param>
/// <returns></returns>
private bool DeleteDetail(string Barcode, string PurchaseCode)
{
string strDeleteSql = string.Format("DELETE FROM T_PURCHASEDETAIL " +
"WHERE PURCHASEDETAIL_DESC = '{0}' AND COMMODITY_BARCODE = '{1}'",
PurchaseCode, Barcode);
try
{
DBHelper.ExecuteSqlTran(strDeleteSql);
string sql = "SELECT ISNULL(SUM(TOTAL_PRICE),0) FROM T_PURCHASEDETAIL " +
"WHERE PURCHASEDETAIL_DESC = '" + PurchaseCode + "'";
DataTable dt = DBHelper.QueryOdbc(sql).Tables[0];
if (dt.Rows[0][0].ToString() != "")
{
//更新采购单主表金额信息
string _Strsql = "UPDATE T_PURCHASE SET PURCHASE_AMOUNT=" + dt.Rows[0][0].ToString() +
" WHERE PURCHASE_CODE = '" + PurchaseCode + "'";
DBHelper.ExecuteSqlTran(_Strsql);
//更新采购单据DataGridView金额信息
dgv_Purchase.CurrentRow.Cells["purchase_amount"].Value = dt.Rows[0][0];
}
return true;
}
catch (Exception ex)
{
return false;
}
}
#endregion
#region ENTER键转换为TAB
//protected override void OnKeyUp(KeyEventArgs e)
//{
// base.OnKeyUp(e);
// if (e.KeyCode == Keys.Enter && dgv_Detail.Focus())
// {
// if (dgv_Detail.CurrentCell.OwningColumn.Name == "purchase_count")
// {
// e.Handled = true;
// SendKeys.Send("{TAB}");
// }
// else
// {
// e.Handled = true;
// int _RowIndex = dgv_Detail.CurrentRow.Index;
// if (_RowIndex + 1 < dgv_Detail.Rows.Count)
// {
// dgv_Detail.Rows[_RowIndex + 1].Cells["purchase_count"].Selected = true;
// }
// }
// }
//}
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
switch (keyData)
{
case Keys.Enter:
{
if (dgv_Detail.IsCurrentCellInEditMode)
{
if (dgv_Detail.CurrentCell.OwningColumn.Name == "purchase_count")
{
SendKeys.Send("{TAB}");
return true;
}
else
{
int _RowIndex = dgv_Detail.CurrentRow.Index;
if (_RowIndex + 1 < dgv_Detail.Rows.Count)
{
dgv_Detail.Rows[_RowIndex + 1].Cells["purchase_count"].Selected = true;
}
else
{
SendKeys.Send("{TAB}");
}
return true;
}
}
}
return false;
}
return base.ProcessCmdKey(ref msg, keyData);
}
#endregion
private void txtBarcodeAdd_TextChanged(object sender, EventArgs e)
{
string _Barcode = txtBarcodeAdd.Text.Trim();
if (_Barcode != "")
{
DataTable _DataTable = dgv_Commodity.DataSource as DataTable;
//搜索全部包含输入内容的商品
_DataTable.DefaultView.RowFilter = "COMMODITY_BARCODE LIKE '%" + txtBarcodeAdd.Text +
"%' OR COMMODITY_NAME LIKE '%" + txtBarcodeAdd.Text + "%'";
}
#region
//if (cobTwoType.Text != "全部")
//{
// string TYPE_ID = cobTwoType.SelectedValue.ToString();
// _DataTable.DefaultView.RowFilter = "SELLERCOMMODITYTYPE_ID = " + TYPE_ID +
// " AND (COMMODITY_BARCODE LIKE '%" + txtBarcodeAdd.Text +
// "%' OR COMMODITY_NAME LIKE '%" + txtBarcodeAdd.Text + "%')";
//}
//else
//{
// string TYPE_ID = "";
// DataView _TypeView = _DataTable.DefaultView;
// if (cobOneType.Text != "全部")
// {
// string TYPE_PID = cobOneType.SelectedValue.ToString();
// _TypeView.RowFilter = "TYPE_PID=" + TYPE_PID + " or TYPE_NAME = '全部'";
// }
// else
// {
// string TYPE_PID = cobOneType.SelectedValue.ToString();
// _TypeView.RowFilter = "TYPE_NAME is not null";
// }
// for (int i = 0; i < _TypeView.ToTable().Rows.Count; i++)
// {
// TYPE_ID += (TYPE_ID == "" ? _TypeView.ToTable().Rows[i]["SELLERCOMMODITYTYPE_ID"].ToString()
// : "," + _TypeView.ToTable().Rows[i]["SELLERCOMMODITYTYPE_ID"].ToString());
// }
// _DataTable.DefaultView.RowFilter = "SELLERCOMMODITYTYPE_ID IN (" + TYPE_ID +
// ") AND (COMMODITY_BARCODE LIKE '%" + txtBarcodeAdd.Text +
// "%' OR COMMODITY_NAME LIKE '%" + txtBarcodeAdd.Text + "%')";
//}
#endregion
}
/// <summary>
/// 输入框刷条码添加采购商品
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void txtBarcodeAdd_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
string _Barcode = txtBarcodeAdd.Text.Trim();
txtBarcodeAdd.Clear();
txtBarcodeAdd.Focus();
if (_Barcode != "")
{
if (dgv_Purchase.CurrentRow.Cells["purchase_state"].EditedFormattedValue.ToString() == "填写中")
{
if (DataUpdate)
{
lblMess.Text = "商品库未更新,请先点击【商品同步】";
MessageBox.Show("商品库未更新,不能添加商品;\n请点击商品同步进行商品库信息更新!", "系统提示",
MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.ServiceNotification);
return;
}
if (DetailAdd(_Barcode, dgv_Purchase.CurrentRow.Cells["purchase_code"].EditedFormattedValue.ToString()))
{
dgv_Purchase_RowEnter(null, new DataGridViewCellEventArgs(dgv_Purchase.CurrentRow.
Cells["purchase_code"].ColumnIndex, dgv_Purchase.CurrentRow.Index));
}
else
{
lblMess.Text = "添加失败,请重试";
}
}
else
{
lblMess.Text = "配送单已提交,如需添加商品请先新增配送单";
}
}
else
{
if (dgv_Commodity.Rows.Count == 0)
{
getCommodity();
}
}
}
}
private void dgv_Detail_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (dgv_Detail.Rows.Count > 0)
{
string strColumnsName = dgv_Detail.CurrentCell.OwningColumn.Name;
switch (strColumnsName)
{
case "DetailDelete":
string _PurchaseCode = dgv_Purchase.CurrentRow.Cells["purchase_code"].EditedFormattedValue.ToString();
string _Barcode = dgv_Detail.CurrentRow.Cells["commodity_barcode"].EditedFormattedValue.ToString();
if (dgv_Purchase.CurrentRow.Cells["purchase_state"].EditedFormattedValue.ToString() == "填写中")
{
if (DeleteDetail(_Barcode, _PurchaseCode))
{
dgv_Purchase_RowEnter(null, new DataGridViewCellEventArgs(dgv_Purchase.CurrentRow.
Cells["purchase_code"].ColumnIndex, dgv_Purchase.CurrentRow.Index));
}
else
{
lblMess.Text = "提示:配送单详情信息删除失败,请重试!";
}
}
else
{
lblMess.Text = "提示:当前订单已提交,不可更改配送详情信息!";
}
break;
}
}
}
private void btnRefresh_Click(object sender, EventArgs e)
{
GetData();
cobState_DropDownClosed(null, null);
}
/// <summary>
/// 更新商品库数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnPriceUpdate_Click(object sender, EventArgs e)
{
ShowWaiteForm();
_WaitForm.ShowMessage("正在更新商品库存信息...");
string strDate = "";
//判断是否首次点击商品同步
if (!FirstDown)
{
try
{
string _strSelect = "SELECT MAX(ADDTIME) AS ADDTIME FROM T_SELLERCOMMODITY";
DataTable _DataTable = DBHelper.QueryOdbc(_strSelect).Tables[0];
if (_DataTable.Rows.Count > 0)
{
strDate = _DataTable.Rows[0]["ADDTIME"].ToString();
}
}
catch
{
strDate = "";
}
}
if (downLoadHelper.SellerCommodityById(_QualityHelper.serverpartshop_id, strDate))
{
DataUpdate = false;
FirstDown = false;
}
//获取当前门店收藏夹商品信息
string url = str_GetAutoGoods + "&SERVERPARTSHOP_ID=" + _QualityHelper.serverpartshop_id;
try
{
string _Result = downLoadHelper.GetAjaxData(url);
if (_Result != "")
{
using (DataSet _DataSet = JsonHelper.JsonToDataSet(_Result))
{
if (_DataSet != null)
{
for (int i = 0; i < _DataSet.Tables.Count; i++)
{
switch (_DataSet.Tables[i].TableName.ToLower())
{
case "t_sellercommodity":
if (_DataSet.Tables[0].Rows.Count > 0)
{
DataTable _GoodsTable = DBHelper.QueryOdbc("select * from t_goodsinfo where 1=0").Tables[0];
string _insertsql = downLoadHelper.DataBaseInsert(_DataSet.Tables[0], _GoodsTable, "t_goodsinfo");
DBHelper.ExecuteSqlTran("delete from t_goodsinfo");
DBHelper.ExecuteSqlTran(_insertsql);
}
else
{
DBHelper.ExecuteSqlTran("delete from t_goodsinfo");
}
break;
}
}
}
else
{
DBHelper.ExecuteSqlTran("delete from t_goodsinfo");
}
}
}
else
{
DBHelper.ExecuteSqlTran("delete from t_goodsinfo");
}
}
catch
{ }
//更新已添加商品价格数量
//string _UpdateSql = "UPDATE T_PURCHASEDETAIL A SET A.PURCHASE_PRICE = B.COMMODITY_BOXSELLPRICE ," +
// "A.TOTAL_PRICE = CASE WHEN A.PURCHASE_COUNT > TRUNCNUM(B.COMMODITY_BOXCOSTPRICE,0) " +
// "THEN TRUNCNUM(B.COMMODITY_BOXCOSTPRICE,0) ELSE A.PURCHASE_COUNT END * B.COMMODITY_BOXSELLPRICE," +
// "PURCHASE_COUNT = CASE WHEN A.PURCHASE_COUNT > TRUNCNUM(B.COMMODITY_BOXCOSTPRICE,0) THEN " +
// "TRUNCNUM(B.COMMODITY_BOXCOSTPRICE,0) ELSE A.PURCHASE_COUNT END ,A.TOTAL_COUNT = CASE WHEN " +
// "A.PURCHASE_COUNT > TRUNCNUM(B.COMMODITY_BOXCOSTPRICE, 0) THEN TRUNCNUM(B.COMMODITY_BOXCOSTPRICE,0) " +
// "ELSE A.PURCHASE_COUNT END * CASE A.UNIT WHEN 2 THEN TRUNCNUM(D.BOXENTRY_COUNT,0) ELSE 1 END," +
// "A.UNITCOUNT = CASE A.UNIT WHEN 2 THEN TRUNCNUM(D.BOXENTRY_COUNT,0) ELSE 1 END "+
// "FROM T_ROLEPRICE B,T_SELLERCOMMODITY D WHERE A.COMMODITY_ID = B.SELLERCOMMODITY_ID AND " +
// "D.SELLERCOMMODITY_ID = B.SELLERCOMMODITY_ID AND B.COMMODITY_BOXSELLPRICE > 0 AND " +
// "A.PURCHASEDETAIL_DESC IN (SELECT PURCHASE_CODE FROM T_PURCHASE C WHERE C.PURCHASE_STATE = 0 AND " +
// "C.SERVERPARTSHOP_ID = " + _QualityHelper.serverpartshop_id + ") ";
string _UpdateSql = "UPDATE T_PURCHASEDETAIL A SET A.PURCHASE_PRICE = ISNULL(TRUNCNUM(B.COMMODITY_BOXSELLPRICE,6),0)," +
"A.TOTAL_PRICE = CASE WHEN A.PURCHASE_COUNT > ISNULL(TRUNCNUM(B.COMMODITY_BOXCOSTPRICE, 6), 0) " +
"THEN ISNULL(TRUNCNUM(B.COMMODITY_BOXCOSTPRICE,6),0) ELSE A.PURCHASE_COUNT END * " +
"ISNULL(TRUNCNUM(B.COMMODITY_BOXSELLPRICE, 6), 0)," +
"A.PURCHASE_COUNT = CASE WHEN A.PURCHASE_COUNT > ISNULL(TRUNCNUM(B.COMMODITY_BOXCOSTPRICE, 6), 0) " +
"THEN ISNULL(TRUNCNUM(B.COMMODITY_BOXCOSTPRICE,6),0) ELSE A.PURCHASE_COUNT END," +
" A.TOTAL_COUNT = CASE WHEN A.PURCHASE_COUNT > ISNULL(TRUNCNUM(B.COMMODITY_BOXCOSTPRICE, 6), 0) " +
"THEN ISNULL(TRUNCNUM(B.COMMODITY_BOXCOSTPRICE,6),0) ELSE A.PURCHASE_COUNT END * " +
"CASE A.UNIT WHEN 2 THEN ISNULL(TRUNCNUM(D.BOXENTRY_COUNT,6),0) ELSE 1 END," +
"A.UNITCOUNT = CASE A.UNIT WHEN 2 THEN ISNULL(TRUNCNUM(D.BOXENTRY_COUNT,6),0) ELSE 1 END " +
"FROM T_SELLERCOMMODITY D LEFT JOIN T_ROLEPRICE B ON D.SELLERCOMMODITY_ID = B.SELLERCOMMODITY_ID " +
"WHERE A.COMMODITY_ID = D.SELLERCOMMODITY_ID AND A.PURCHASEDETAIL_DESC IN ( SELECT PURCHASE_CODE " +
"FROM T_PURCHASE C WHERE C.PURCHASE_STATE = 0 AND C.SERVERPARTSHOP_ID = " + _QualityHelper.serverpartshop_id + ") ";
try
{
DBHelper.ExecuteSqlTran(_UpdateSql);
DBHelper.ExecuteSqlTran("UPDATE T_PURCHASE A SET A.PURCHASE_AMOUNT = " +
"(SELECT SUM(B.TOTAL_PRICE) FROM T_PURCHASEDETAIL B " +
"WHERE A.PURCHASE_CODE = B.PURCHASEDETAIL_DESC GROUP BY B.PURCHASEDETAIL_DESC) " +
"WHERE A.PURCHASE_STATE = 0 AND A.SERVERPARTSHOP_ID = " + _QualityHelper.serverpartshop_id);
}
catch (Exception ex)
{ }
if (dgv_Purchase.Rows.Count > 0)
{
dgv_Purchase_RowEnter(null, new DataGridViewCellEventArgs(dgv_Purchase.CurrentRow.Cells["purchase_code"].ColumnIndex, dgv_Purchase.CurrentRow.Index));
}
getCommodity();
getType();
getFavorite();
_WaitForm.ShowMessage("商品库存信息更新完成");
lblMess.Text = "商品库存信息更新完成。";
try
{
string _strSelect = "SELECT MAX(ADDTIME) AS ADDTIME FROM T_SELLERCOMMODITY";
DataTable _DataTable = DBHelper.QueryOdbc(_strSelect).Tables[0];
if (_DataTable.Rows.Count > 0)
{
strDate = _DataTable.Rows[0]["ADDTIME"].ToString();
}
}
catch
{
strDate = "1970/01/01 00:00:00";
}
if (strDate == "")
{
strDate = "1970/01/01 00:00:00";
}
//获取商品版本及促销信息
try
{
string _Result = downLoadHelper.GetAjaxData(str_GetScoreSetting);
if (_Result != "")
{
//_Result = _Result.Replace("[", "").Replace("]", "");
using (DataTable _DataTable = JsonHelper.ToDataTable(_Result))
{
if (_DataTable.Rows.Count > 0)
{
_Score = _DataTable.Rows[0]["SCORE_NAME"].ToString();
_ServerDate = _DataTable.Rows[0]["ADDTIME"].ToString();
}
}
}
lblSale.Text = _Score;
if (DateTime.Parse(_ServerDate) != DateTime.Parse(strDate))
{
lblUpdate.Text = "商品库有更新,请点击【商品同步】";
DataUpdate = true;
}
else
{
lblUpdate.Text = "当前商品库版本:" + DateTime.Parse(strDate).ToString("yyyyMMddHHmmss") + "(最新)";
}
}
catch
{
lblSale.Text = "";
lblUpdate.Text = "当前商品库版本:" + DateTime.Parse(strDate).ToString("yyyyMMddHHmmss") + "(最新)";
}
_WaitForm.Close();
_WaitForm.Dispose();
}
/// <summary>
/// 采购单列表筛选
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void cobState_DropDownClosed(object sender, EventArgs e)
{
DataTable _DataTable = dgv_Purchase.DataSource as DataTable;
switch (cobState.Text)
{
case "全部":
_DataTable.DefaultView.RowFilter = "";
break;
case "待付款":
_DataTable.DefaultView.RowFilter = "purchase_state not in ('已付款','已关闭')";
break;
case "已付款":
_DataTable.DefaultView.RowFilter = "purchase_state = '已付款'";
break;
case "已关闭":
_DataTable.DefaultView.RowFilter = "purchase_state = '已关闭'";
break;
}
}
/// <summary>
/// 数据库表升级
/// </summary>
/// <returns></returns>
private bool DataBaseUpdate()
{
try
{
DBHelper.QueryOdbc("select 1 from t_goodsinfo");
}
catch
{
string _CreateTableSql = "create table dba.t_goodsinfo (sellercommodity_id decimal(9, 0) not null," +
"sellerbusinesstype decimal(9, 0) null,commodity_code char(200) null,commodity_name char(200) null," +
"commodity_barcode char(50) null,commodity_boxcode char(50) null,commodity_allname char(50) null," +
"commodity_en char(50) null,commodity_unit char(100) null,commodity_rule char(100) null," +
"commodity_ori char(80) null,commodity_grade char(100) null,commodity_state decimal(8, 0) null," +
"commodity_desc char(3000) null,addtime timestamp null,isbulk decimal(6, 0) null," +
"meteringmethod decimal(6, 0) null,seller_id decimal(9, 0) null,sellercommoditytype_id decimal(9, 0) null," +
"boxentry_count decimal(16, 6) null,supplier_id decimal(9, 0) null,shop_price decimal(16, 6) null," +
"shop_boxprice decimal(16, 6) null,shop_avrprice decimal(16, 6) null,surplus_stock decimal(16, 6) null," +
"image_content char(500) null,table_id decimal(8, 0) null,image_title char(200) null,image_date timestamp null," +
"image_path char(200) null,constraint t_goodsinfo_pk primary key(sellercommodity_id ))";
try
{
DBHelper.ExecuteSqlTran(_CreateTableSql);
}
catch (Exception ex)
{
LogHelper.WriteServiceLog(ex.Message);
return false;
}
}
return true;
}
private void dgv_Detail_CellMouseEnter(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex >= 1 && e.RowIndex >= 0 && dgv_Detail.Columns[e.ColumnIndex].Name != "DetailDelete")
{
dgv_Detail[e.ColumnIndex, e.RowIndex].ToolTipText = dgv_Detail[e.ColumnIndex, e.RowIndex].EditedFormattedValue.ToString();
}
}
private void btnOrderEnd_Click(object sender, EventArgs e)
{
OrderEnd _OrderEnd = new OrderEnd();
_OrderEnd.TopMost = true;
_OrderEnd.FormBorderStyle = FormBorderStyle.FixedDialog;
_OrderEnd.ImeMode = ImeMode.Off;
_OrderEnd.ShowDialog();
}
private void dgv_Commodity_MouseMove(object sender, MouseEventArgs e)
{
//if (e.X + 210 > dgv_Commodity.Width)
//{
// picGoods.Location = new Point(e.X - 200, e.Y + 20);
//}
//else
//{
// picGoods.Location = new Point(e.X + 15, e.Y + 20);
//}
}
private void dgv_Commodity_RowEnter(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex >= 0)
{
string _ImgUri = dgv_Commodity.Rows[e.RowIndex].Cells["PicURI"].EditedFormattedValue.ToString();
if (_ImgUri != "")
{
try
{
Image _Image = Image.FromStream(WebRequest.Create(_ImgUri.Replace('-', '/')).GetResponse().GetResponseStream());
picGoods.Image = _Image;
if (!picGoods.Visible)
{
picGoods.Visible = true;
}
}
catch
{
picGoods.Image = null;
}
}
else
{
picGoods.Image = null;
}
}
}
}
}