using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.Odbc; namespace InvoicingTool { public partial class InvoicingMain : Form { #region 属性 /// /// 服务器IP /// public string dbip { get { return (ConfigUrationValues("server_ip", "").Trim() == "" ? ConfigUrationValues("dbip", "").Trim() : ConfigUrationValues("server_ip", "").Trim()); } } /// /// 数据库端口 /// public string dbport { get { return (ConfigUrationValues("server_dbport", "").Trim() == "" ? ConfigUrationValues("dbport", "1521").Trim() : ConfigUrationValues("server_dbport", "1521").Trim()); } } /// /// 数据库名 /// public string dbname { get { return (ConfigUrationValues("server_dbname", "").Trim() == "" ? ConfigUrationValues("dbname", "highway_exchange").Trim() : ConfigUrationValues("server_dbname", "highway_exchange").Trim()); } } /// /// 数据库用户名 /// public string dbuser { get { return (ConfigUrationValues("server_dbuser", "").Trim() == "" ? ConfigUrationValues("dbuser", "highway_exchange").Trim() : ConfigUrationValues("server_dbuser", "highway_exchange").Trim()); } } /// /// 数据库密码 /// public string dbpass { get { return (ConfigUrationValues("server_dbpass", "").Trim() == "" ? ConfigUrationValues("dbpass", "qrwl").Trim() : ConfigUrationValues("server_dbpass", "qrwl").Trim()); } } /// /// 数据库连接名 /// public string conname { get { return (ConfigUrationValues("server_conname", "").Trim() == "" ? ConfigUrationValues("conname", "orcl").Trim() : ConfigUrationValues("server_conname", "orcl").Trim()); } } /// /// 服务区编码 /// public string serverpartcode { get { return ConfigUrationValues("serverpartcode", "").Trim(); } } /// /// 门店编码 /// public string shopcode { get { return ConfigUrationValues("shopcode", "").Trim(); } } /// /// 门店内码 /// public string serverpartshop_id { get { return DBHelper.QueryOdbc("select serverpartshop_id from t_shopmessage where serverpartcode = '" + serverpartcode + "' and shopcode = '" + shopcode + "'").Tables[0].Rows[0][0].ToString(); } } /// /// 门店内码 /// public string shopname { get { return DBHelper.QueryOdbc("select shopname from t_shopmessage where serverpartcode = '" + serverpartcode + "' and shopcode = '" + shopcode + "'").Tables[0].Rows[0][0].ToString(); } } /// /// 收银机编码 /// public string machinecode { get { return ConfigUrationValues("machinecode", "").Trim(); } } /// /// 收银员姓名 /// public string sellworkername { get { return DBHelper.QueryOdbc("select sellworkername from t_sellworker where serverpartcode = '" + serverpartcode + "' and sellworkercode = (select cashworker_code from t_personsell where serverpartcode = '" + serverpartcode + "' and shopcode = '" + shopcode + "' and machinecode = '" + machinecode + "' and enddate is null )" ).Tables[0].Rows[0]["sellworkername"].ToString(); } } public string ReceiveCode { get; set; } #endregion public InvoicingMain() { InitializeComponent(); Loading(); lblMessage.Text = "输入商品条码、进货数量后,按【Enter】保存"; txtbarcode.Focus(); txtbarcode.SelectAll(); } private void Loading() { //List _List = new List(); string _selectsql = "select receiveserverpart_id,receivecenter_code from t_receiveserverpart where receiveserverpart_state = 0 order by receiveserverpart_id desc"; DataTable _DateTable = DBHelper.QueryOdbc(_selectsql).Tables[0]; if (_DateTable.Rows.Count > 0) { if (MessageBox.Show("系统中存在未完成的入库单,是否继续录入?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes) { ReceiveCenter _ReceiveCenter = new ReceiveCenter("serverpart"); _ReceiveCenter.ShowDialog(); if (_ReceiveCenter.DialogResult == DialogResult.OK) { ReceiveCode = _ReceiveCenter.StrValue; } } else { decimal _MaxID = 0; try { _MaxID = decimal.Parse(DBHelper.QueryOdbc("select max(receiveserverpart_id) from t_receiveserverpart").Tables[0].Rows[0][0].ToString()); } catch { _MaxID = 0; } ReceiveCode = DateTime.Now.ToString("yy") + shopcode + TimeHelper.ConvertDataTimeLong(DateTime.Now).ToString(); string _insertsql = "insert into t_receiveserverpart (receiveserverpart_id,serverpartshop_id, receivecenter_date,receivecenter_person, receivecenter_code,receiveserverpart_state) " + "select '" + (_MaxID + 1) + "',serverpartshop_id,datetime('" + DateTime.Now.ToString() + "'),'" + sellworkername + "','" + ReceiveCode + "','0' from t_shopmessage " + "where serverpartcode = '" + serverpartcode + "' and shopcode = '" + shopcode + "'"; DBHelper.ExecuteSqlTran(_insertsql); } } else { decimal _MaxID = 0; try { _MaxID = decimal.Parse(DBHelper.QueryOdbc("select max(receiveserverpart_id) from t_receiveserverpart").Tables[0].Rows[0][0].ToString()); } catch { _MaxID = 0; } ReceiveCode = DateTime.Now.ToString("yy") + shopcode + TimeHelper.ConvertDataTimeLong(DateTime.Now).ToString(); string _insertsql = "insert into t_receiveserverpart (receiveserverpart_id,serverpartshop_id, receivecenter_date,receivecenter_person, receivecenter_code,receiveserverpart_state) " + "select '" + (_MaxID + 1) + "',serverpartshop_id,datetime('" + DateTime.Now.ToString() + "'),'" + sellworkername + "','" + ReceiveCode + "','0' from t_shopmessage " + "where serverpartcode = '" + serverpartcode + "' and shopcode = '" + shopcode + "'"; DBHelper.ExecuteSqlTran(_insertsql); } _selectsql = "select receiveserverpart_id,receivecenter_code,receivecenter_date,receivecenter_person,receiveserverpart_state " + "from t_receiveserverpart where receivecenter_code = '" + ReceiveCode + "'"; DataTable _ReceiveTable = DBHelper.QueryOdbc(_selectsql).Tables[0]; lblReceiveCode.Text = _ReceiveTable.Rows[0]["receivecenter_code"].ToString(); lblReceivePerson.Text = _ReceiveTable.Rows[0]["receivecenter_person"].ToString(); lblReceiveDate.Text = _ReceiveTable.Rows[0]["receivecenter_date"].ToString(); lblShopName.Text = shopname; SearchReceive(); } private void SearchReceive() { string _selectsql = "select a.receivedetailserverpart_id,a.commodity_barcode,a.commodity_name,a.delivercount " + "from t_receivedetailserverpart a,t_receiveserverpart b where b.receivecenter_code = '" + ReceiveCode + "' and a.cenreceivedetail_desc = b.receivecenter_code order by receivedetailserverpart_id"; DataTable _DataTable = DBHelper.QueryOdbc(_selectsql).Tables[0]; if (_DataTable.Rows.Count > 0) { for (int i = 0; i < _DataTable.Rows.Count; i++) { _DataTable.Rows[i]["receivedetailserverpart_id"] = i + 1; } InvoicingData.DataSource = _DataTable; } } /// /// 入库信息添加 /// private void Data_Entry() { //List _List = new List(); string _barcode = txtbarcode.Text; //string _receivecenter_code = lblReceiveCode.Text; string _select = "select commodityex_id,commodity_code,commodity_name,commodity_barcode " + "from t_commodityex where commodity_barcode = '" + _barcode + "'"; DataTable _DataTable = DBHelper.QueryOdbc(_select).Tables[0]; if (_DataTable.Rows.Count > 0) { DataTable _receivestate = DBHelper.QueryOdbc("select receiveserverpart_state from t_receiveserverpart where receivecenter_code = '" + ReceiveCode + "'").Tables[0]; if (_receivestate.Rows.Count>0) { if (_receivestate.Rows[0]["receiveserverpart_state"].ToString()!="0") { MessageBox.Show("请先添加一个入库单", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } } else { MessageBox.Show("请先添加一个入库单", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } _select = "select a.receivedetailserverpart_id,a.receiveserverpart_id, a.commodity_name,a.commodity_code, a.commodity_barcode, a.delivercount " + "from t_receivedetailserverpart a,t_receiveserverpart b where b.receivecenter_code = '" + ReceiveCode + "' and a.commodity_barcode = '" + _barcode + "' and a.receiveserverpart_id = b.receiveserverpart_id"; DataTable _ReceiveDetailServerPart = DBHelper.QueryOdbc(_select).Tables[0]; if (_ReceiveDetailServerPart.Rows.Count > 0) { if (MessageBox.Show("商品条码:" + _barcode + "\r已录入单据,是否叠加数量?\r是:叠加 否:覆盖", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes) { string _update = "update t_receivedetailserverpart set delivercount = delivercount+" + txtDeliverCount.Text + " where receiveserverpart_id = " + _ReceiveDetailServerPart.Rows[0]["receiveserverpart_id"]; DBHelper.ExecuteSqlTran(_update); } else { string _update = "update t_receivedetailserverpart set delivercount = " + txtDeliverCount.Text + " where receiveserverpart_id = " + _ReceiveDetailServerPart.Rows[0]["receiveserverpart_id"]; DBHelper.ExecuteSqlTran(_update); } } else { decimal _MaxID = 0; try { _MaxID = decimal.Parse(DBHelper.QueryOdbc("select max(receivedetailserverpart_id) from t_receivedetailserverpart").Tables[0].Rows[0][0].ToString()); } catch { _MaxID = 0; } string _insert = "insert into t_receivedetailserverpart (receivedetailserverpart_id, receiveserverpart_id, commodity_name, " + "commodity_code, commodity_barcode, unit, unitcount, delivercount,cenreceivedetail_desc) " + "select '" + (_MaxID + 1) + "',b.receiveserverpart_id,a.commodity_name,a.commodity_code," + "a.commodity_barcode,'1','1','" + txtDeliverCount.Text + "',b.receivecenter_code " + "from t_commodityex a,t_receiveserverpart b,t_shopmessage c " + "where a.commodity_barcode = '" + _barcode + "' and a.serverpartshop_id = c.serverpartshop_id " + "and c.shopcode = '" + shopcode + "' and b.receivecenter_code = '" + ReceiveCode + "'"; DBHelper.ExecuteSqlTran(_insert); } txtbarcode.Clear(); txtDeliverCount.Clear(); txtbarcode.Focus(); txtbarcode.SelectAll(); //MessageBox.Show("保存成功!", "系统提示"); lblMessage.Text = _barcode + "保存成功!"; } else { MessageBox.Show("条码为:" + _barcode + "的商品不存在,请核实后重新输入!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); txtbarcode.Focus(); txtbarcode.SelectAll(); return; } SearchReceive(); } #region 方法 -> 获取配置信息 /// /// 获取配置信息 /// /// 配置名称 /// 无配置信息时默认值 /// private string ConfigUrationValues(string ConfigUrationName, string defaultValue) { string strSQL = "select configuration_name,configuration_values from dba.t_configuration where lower(configuration_name) = lcase('" + ConfigUrationName + "')"; string strValues = ""; using (DataTable _DataTable = DBHelper.QueryOdbc(strSQL).Tables[0]) { if (_DataTable.Rows.Count > 0) { foreach (DataRow row in _DataTable.Rows) { if (row["configuration_name"].ToString() == ConfigUrationName) { strValues = row["configuration_values"].ToString(); } } } else { strValues = ConfigHelper.Win32API.INIGetStringValue(Environment.CurrentDirectory + "\\setup.ini", "DBCONECT", ConfigUrationName, defaultValue); if (strValues == "") strValues = ConfigHelper.Win32API.INIGetStringValue(Environment.CurrentDirectory + "\\set.ini", "DBCONECT", ConfigUrationName, defaultValue); } } return strValues; } #endregion private void txtbarcode_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { if (txtbarcode.Text == "") { MessageBox.Show("请输入商品条码", "系统提示"); txtbarcode.Focus(); txtbarcode.SelectAll(); return; } else { txtDeliverCount.Focus(); txtDeliverCount.SelectAll(); return; } } } private void txtDeliverCount_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { if (txtDeliverCount.Text == "") { MessageBox.Show("请输入入库数量", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); txtDeliverCount.Focus(); txtDeliverCount.SelectAll(); return; } else { try { decimal.Parse(txtDeliverCount.Text); } catch { MessageBox.Show("请正确输入入库数量", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); txtDeliverCount.Focus(); txtDeliverCount.SelectAll(); return; } Data_Entry(); } } } private void InvoicingMain_FormClosing(object sender, FormClosingEventArgs e) { List _List = new List(); DataTable _DataTable = DBHelper.QueryOdbc("select receiveserverpart_state from t_receiveserverpart where receivecenter_code = '" + ReceiveCode + "'").Tables[0]; if (_DataTable.Rows.Count > 0) { if (_DataTable.Rows[0]["receiveserverpart_state"].ToString() == "0") { if (decimal.Parse(DBHelper.QueryOdbc("select count(*) from t_receivedetailserverpart where cenreceivedetail_desc = '" + ReceiveCode + "'").Tables[0].Rows[0][0].ToString()) > 0) { if (MessageBox.Show("是否立即审核入库单信息并退出?\r 注:审核后当前入库单将不能再次添加商品入库信息。", "系统提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes) { string _update = "update t_receiveserverpart set receiveserverpart_state = 1 where receivecenter_code = '" + ReceiveCode + "'"; _List.Add(_update); try { DBHelper.ExecuteSqlTran(_List); MessageBox.Show("审核成功,按确定键返回收银系统", "系统提示"); } catch { MessageBox.Show("审核失败,请重试!", "系统提示"); e.Cancel = true; } } else { e.Cancel = true; } } else { if (MessageBox.Show("是否立即退出?", "系统提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) != DialogResult.Yes) { e.Cancel = true; } } } else { if (MessageBox.Show("是否立即退出?", "系统提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) != DialogResult.Yes) { e.Cancel = true; } } } else { if (MessageBox.Show("是否立即退出?", "系统提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) != DialogResult.Yes) { e.Cancel = true; } } } private void btnReceiveAdd_Click(object sender, EventArgs e) { Loading(); } private void btnSave_Click(object sender, EventArgs e) { if (txtbarcode.Text == "") { MessageBox.Show("请输入商品条码", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); txtbarcode.Focus(); txtbarcode.SelectAll(); return; } if (txtDeliverCount.Text == "") { MessageBox.Show("请输入入库数量", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); txtDeliverCount.Focus(); txtDeliverCount.SelectAll(); return; } try { decimal.Parse(txtDeliverCount.Text); Data_Entry(); } catch { MessageBox.Show("请正确输入入库数量", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); txtDeliverCount.Focus(); txtDeliverCount.SelectAll(); return; } } private void btnAuditing_Click(object sender, EventArgs e) { List _List = new List(); if (decimal.Parse(DBHelper.QueryOdbc("select count(*) from t_receivedetailserverpart where cenreceivedetail_desc = '" + ReceiveCode + "'").Tables[0].Rows[0][0].ToString()) > 0) { if (MessageBox.Show("是否立即审核入库单信息?\r 注:审核后当前入库单将不能再次添加商品入库信息。", "系统提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) != DialogResult.Yes) { return; } string _update = "update t_receiveserverpart set receiveserverpart_state = 1 where receivecenter_code = '" + ReceiveCode + "'"; _List.Add(_update); try { DBHelper.ExecuteSqlTran(_List); MessageBox.Show("审核成功", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); } catch { MessageBox.Show("审核失败,请重试!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); } } else { MessageBox.Show("请先添加入库商品信息!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); } } private void btnUpLoad_Click(object sender, EventArgs e) { List _List = new List(); List _UpdateList = new List(); string Columns; if (MessageBox.Show("立即上传商品入库信息?", "系统提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) != DialogResult.Yes) { return; } btnUpLoad.Enabled = false; lblMessage.Text = "正在上传商品入库信息,请稍候……"; string _selectsql = "select receiveserverpart_id,serverpartshop_id,receivecenter_date,receivecenter_person, receivecenter_code " + "from t_receiveserverpart where receiveserverpart_state = 1"; DataTable _ReceiveListTable = DBHelper.QueryOdbc(_selectsql).Tables[0]; _ReceiveListTable.TableName = "t_receiveserverpart"; if (_ReceiveListTable.Rows.Count > 0) { Columns = SqlColumns(_ReceiveListTable); foreach (DataRow _Row in _ReceiveListTable.Rows) { _List.Add("insert into " + dbname + ".t_receiveserverpart (" + Columns + ") values (" + SqlValues(_ReceiveListTable, _Row) + ")"); } _selectsql = "select a.receivedetailserverpart_id, a.receiveserverpart_id, a.commodity_name, a.commodity_code, " + "a.commodity_barcode, a.unit, a.unitcount, a.delivercount, a.cenreceivedetail_desc " + "from t_receivedetailserverpart a,t_receiveserverpart b " + "where a.cenreceivedetail_desc = b.receivecenter_code and b.receiveserverpart_state = 1"; DataTable _ReceiveDetailTable = DBHelper.QueryOdbc(_selectsql).Tables[0]; _ReceiveDetailTable.TableName = "t_receivedetailserverpart"; if (_ReceiveDetailTable.Rows.Count > 0) { Columns = SqlColumns(_ReceiveDetailTable); foreach (DataRow _Row in _ReceiveDetailTable.Rows) { _List.Add("insert into " + dbname + ".t_receivedetailserverpart (" + Columns + ") values (" + SqlValues(_ReceiveDetailTable, _Row) + ")"); } } } if (_List.Count() > 0) { OracleHelper _OracleHelper = new OracleHelper(dbip, dbport, conname, dbuser, dbpass); try { _OracleHelper.ExecuteSqlTran(_List); foreach (DataRow _dr in _ReceiveListTable.Rows) { string _updatesql = "update t_receiveserverpart set receiveserverpart_state = 2 " + "where receivecenter_code = '" + _dr["receivecenter_code"] + "' and receiveserverpart_state = 1"; _UpdateList.Add(_updatesql); } try { DBHelper.ExecuteSqlTran(_UpdateList); } catch { } MessageBox.Show("上传成功!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); lblMessage.Text = "入库信息上传成功!"; } catch(Exception ex) { MessageBox.Show("上传失败,请重试!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); lblMessage.Text = "入库信息上传失败,请重试!"; } } else { lblMessage.Text = "请先审核入库单!"; } btnUpLoad.Enabled = true; } /// /// 获取列名 /// /// /// private string SqlColumns(DataTable Table) { string _Columnsstr = ""; foreach (DataColumn col in Table.Columns) { _Columnsstr += (_Columnsstr == "" ? col.ColumnName : "," + col.ColumnName); } return _Columnsstr; } /// /// 获取行值 /// /// /// /// private string SqlValues(DataTable Table, DataRow Row) { string _valuesstr = ""; for (int i = 0; i < Table.Columns.Count; i++) { if (Table.Columns[i].DataType.ToString() == "System.Decimal") { _valuesstr += _valuesstr == "" ? (Row[i].ToString() == "" ? "NULL" : Row[i].ToString()) : "," + (Row[i].ToString() == "" ? "NULL" : Row[i].ToString()); } else if (Table.Columns[i].DataType.ToString() == "System.DateTime") { _valuesstr += _valuesstr == "" ? (Row[i].ToString() == "" ? "NULL" : "TO_DATE('" + Row[i].ToString() + "','YYYY/MM/DD HH24:MI:SS')") : "," + (Row[i].ToString() == "" ? "NULL" : "TO_DATE('" + Row[i].ToString() + "','YYYY/MM/DD HH24:MI:SS')"); } else { _valuesstr += _valuesstr == "" ? (Row[i].ToString() == "" ? "NULL" : "'" + Row[i].ToString()) + "'" : "," + (Row[i].ToString() == "" ? "NULL" : "'" + Row[i].ToString() + "'"); } } return _valuesstr; } private void InvoicingMain_KeyDown(object sender, KeyEventArgs e) { if(e.KeyCode==Keys.Escape) { Close(); } } private void btnClose_Click(object sender, EventArgs e) { Close(); } } }