2025-03-27 15:05:14 +08:00

1036 lines
53 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 Microsoft.Win32;
using Oracle.ManagedDataAccess.Client;
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.Odbc;
using System.Data.OleDb;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net.NetworkInformation;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using SuperMap.RealEstate.Web;
using SuperMap.RealEstate.CoreFrameWork;
using SuperMap.RealEstate.ServiceModel;
using SuperMap.RealEstate.Configuration;
using SuperMap.RealEstate.Windows.Forms;
using Business = SuperMap.RealEstate.SaleStore.Storage.Business;
using SuperMap.RealEstate.Windows.Controls.NetSocket;
using Sap.Data.SQLAnywhere;
namespace InventoryTool
{
public partial class Form1 : SuperMap.RealEstate.Windows.Forms.FormBase
{
#region
static string dbip = "", dbport = "", dbname = "", dbuser = "", dbpass = "", conname = "", serverpartcode = "", shopcode = "", machinecode = "";
string SqlString = string.Empty;
string connString = string.Empty;
static string cashRegisterIP = "";
string odbcString = string.Empty;
string machineName = string.Empty;
string machineIP = string.Empty;
string strConnection = string.Empty;
string endAccountDate = string.Empty;
string serverpartshop_id = string.Empty;
string noBarCode = string.Empty;
string macAddress = string.Empty;
OleDbConnection con = null;
#endregion
#region
public Form1()
{
string filePath = Path.GetFullPath("InventoryData.mdb");
strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Persist Security Info=False";
con = new OleDbConnection(strConnection);
InitializeComponent();
QueryOracle();
label11.Text = "";
}
#endregion
#region
public OracleConnection QueryOracle()
{
try
{
//判断没有set.ini文件那么就新建set.ini文件
if (File.Exists("D:\\HighWayPosSoft\\setup.ini"))
{
FileStream fs = new FileStream("D:\\HighWayPosSoft\\setup.ini", FileMode.Open);
StreamReader m_streamReader = new StreamReader(fs);
m_streamReader.BaseStream.Seek(0, SeekOrigin.Begin);
string strLine = m_streamReader.ReadLine();
do
{
string[] split = strLine.Split('=');
string b = split[0];
if (b == "dbip")
dbip = split[1];
else if (b == "dbport")
dbport = split[1];
else if (b == "dbname")
dbname = split[1];
else if (b == "dbuser")
dbuser = split[1];
else if (b == "dbpass")
dbpass = split[1];
else if (b == "conname")
conname = split[1];
else if (b == "serverpartcode")
serverpartcode = split[1];
else if (b == "shopcode")
shopcode = split[1];
else if (b == "machinecode")
machinecode = split[1];
strLine = m_streamReader.ReadLine();
}
while (strLine != null);
m_streamReader.Close();
fs.Close();
}
else if (File.Exists("D:\\HighWayPosSoft\\set.ini"))
{
//如果已经存在set.ini文件则直接读取它信息
FileStream fs = new FileStream("D:\\HighWayPosSoft\\set.ini", FileMode.Open);
StreamReader STRreader = new StreamReader(fs);
STRreader.BaseStream.Seek(0, SeekOrigin.Begin);
string STRline = STRreader.ReadLine();
do
{
string[] split = STRline.Split('=');
string i = split[0];
if (i == "dbip")
dbip = split[1];
else if (i == "dbport")
dbport = split[1];
else if (i == "dbname")
dbname = split[1];
else if (i == "dbuser")
dbuser = split[1];
else if (i == "dbpass")
dbpass = split[1];
else if (i == "conname")
conname = split[1];
else if (i == "serverpartcode")
serverpartcode = split[1];
else if (i == "shopcode")
shopcode = split[1];
else if (i == "machinecode")
machinecode = split[1];
STRline = STRreader.ReadLine();
}
while (STRline != null);
STRreader.Close();
fs.Close();
}
else
{
Form2 frm = new Form2();
frm.ShowDialog();
if (frm.DialogResult == DialogResult.OK)
{
dbip = frm.Serverip;
dbport = frm.Serverport;
conname = frm.Connname;
dbuser = frm.User;
dbpass = frm.Pass;
}
}
}
catch (Exception ex)
{
LogHelper.WriteServiceLog(ex.Message);
}
connString = "Data Source = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = " + dbip + ")(PORT = " + dbport + "))(CONNECT_DATA = (SERVICE_NAME = " + conname + "))); User Id = " + dbuser + "; Password=" + dbpass + ";";
OracleConnection conn = new OracleConnection(connString);
string MACAddress = GetMACINFO();
#region Mac地址获取收银机IP和编号
//try
//{
// conn.Open();
// string comStr = "SELECT MACHINECODE,MACHINE_IP,MACHINE_MACADDRESS FROM HIGHWAY_EXCHANGE.T_MACHINEINFO A WHERE A.SHOPCODE=(" +
// "SELECT SHOPCODE FROM HIGHWAY_EXCHANGE.T_SHOPMESSAGE B WHERE B.SHOPNAME ='" + cobSHOPCODE.Text + "') ORDER BY MACHINECODE ASC";
// ArrayList listCompanyID = new ArrayList();
// OracleCommand Com = new OracleCommand(comStr, conn);
// OracleDataReader rd = Com.ExecuteReader();
// if (rd.HasRows)
// {
// while (rd.Read())
// {
// listCompanyID.Add(rd["MACHINECODE"].ToString());
// }
// listCompanyID.Insert(0, "全部");
// CobMACHINECODE.DataSource = listCompanyID;
// rd.Dispose();
// }
// conn.Close();
//}
//catch (Exception ex)
//{
// LogHelper.WriteServiceLog(ex.Message);
// conn.Close();
//}
#endregion
#region
try
{
conn.Open();
string comStr = "SELECT * FROM T_SHOPMESSAGE WHERE BUSINESSTYPE LIKE '%1000%' ORDER BY SERVERPARTSHOP_ID ASC";
ArrayList listshopID = new ArrayList();
OracleCommand Com = new OracleCommand(comStr, conn);
OracleDataReader rd = Com.ExecuteReader();
if (rd.HasRows)
{
con.Open();
while (rd.Read())
{
listshopID.Add(rd["SHOPNAME"].ToString());
string shopnameSql = "SELECT * FROM SHOPMESSAGE WHERE SERVERPARTSHOP_ID=" + Convert.ToInt64(rd["SERVERPARTSHOP_ID"]);
OleDbCommand comshop = new OleDbCommand(shopnameSql, con);
OleDbDataReader drshop = comshop.ExecuteReader();
if (!drshop.HasRows)
{
string insert1Sql = "INSERT INTO SHOPMESSAGE (ServerpartShop_id,SHOPCODE,SHOPNAME,BUSINESSTYPE) values (" +
Convert.ToInt64(rd["SERVERPARTSHOP_ID"]) + ",'" + Convert.ToString(rd["SHOPCODE"]) + "','" +
Convert.ToString(rd["SHOPNAME"]) + "','" + Convert.ToString(rd["BUSINESSTYPE"]) + "')";
OleDbCommand com = new OleDbCommand(insert1Sql, con);
com.ExecuteNonQuery();
}
}
con.Close();
listshopID.Insert(0, "请选择门店");
cobSHOPCODE.DataSource = listshopID;
rd.Dispose();
}
conn.Close();
CommodityInfo.Focus();
}
catch (Exception ex)
{
LogHelper.WriteServiceLog(ex.Message);
conn.Close();
con.Close();
}
#endregion
CommodityInfo.Focus();
return conn;
}
#endregion
#region
private void button1_Click(object sender, EventArgs e)
{
try
{
DialogResult dr = MessageBox.Show("盘点数据清空后将不可恢复!", "清空盘点数据", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
if (dr == DialogResult.OK)
{
con.Open();
string delSql = "delete * from CommodityInventory";
OleDbCommand comm = new OleDbCommand(delSql, con);
comm.ExecuteNonQuery();
con.Close();
MessageBox.Show("数据已清空", "", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
else
{
}
}
catch (Exception ex)
{
LogHelper.WriteServiceLog(ex.Message);
con.Close();
}
CommodityInfo.Focus();
}
#endregion
#region
private void btnSearch_Click(object sender, EventArgs e)
{
try
{
if (cobSHOPCODE.Text == "请选择门店")
{
MessageBox.Show("请先选择门店!");
}
else if (CobMACHINECODE.Text == "请选择收银机")
{
MessageBox.Show("请先选择收银机号!");
}
else
{
con.Open();
string selectSql = @"select ID,CommodityBarCode,CommodityName,
iif(isnull(InventoryNum),0,InventoryNum)+iif(isnull(SellCount),0,SellCount) AS InventoryNum,
iif(isnull(CheckDesc),0,CheckDesc) AS CheckDesc,
iif(isnull(TotalCount),0,TotalCount) AS TotalCount,InventoryDate,iif(isnull(Flag),0,Flag) AS Flag
from CommodityInventory where CheckDate='" + AccountDate.Text + "'";
OleDbDataAdapter da = new OleDbDataAdapter(selectSql, con); //创建适配对象
DataTable dt = new DataTable(); //新建表对象
da.Fill(dt); //用适配对象填充表对象
dataGridView1.DataSource = dt;
con.Close();
ChangeColor();
}
}
catch (Exception ex)
{
LogHelper.WriteServiceLog(ex.Message);
con.Close();
}
}
private void btnSearch1_Click(object sender, EventArgs e)
{
if (cobSHOPCODE.Text == "请选择门店" || CobMACHINECODE.Text == "请选择收银机")
{
Form3 frm1 = new Form3();
frm1.Text = "盘点查询门店选择";
frm1.ShowDialog();
if (frm1.DialogResult == DialogResult.OK)
{
con.Open();
string selectSql = @"select ID,CommodityBarCode,CommodityName,
iif(isnull(InventoryNum),0,InventoryNum)+iif(isnull(SellCount),0,SellCount) AS InventoryNum,
iif(isnull(CheckDesc),0,CheckDesc) AS CheckDesc,
iif(isnull(TotalCount),0,TotalCount) AS TotalCount,InventoryDate,iif(isnull(Flag),0,Flag) AS Flag
from CommodityInventory where CheckDate='" + frm1.CheckDate + "'";
OleDbDataAdapter da = new OleDbDataAdapter(selectSql, con); //创建适配对象
DataTable dt = new DataTable(); //新建表对象
da.Fill(dt); //用适配对象填充表对象
dataGridView1.DataSource = dt;
con.Close();
CommodityInfo.Focus();
ChangeColor();
}
else
{
this.btnSearch_Click(sender, e);
CommodityInfo.Focus();
}
}
else
{
this.btnSearch_Click(sender, e);
CommodityInfo.Focus();
}
}
#endregion
#region
private void CommodityInfo_KeyDown(object sender, KeyEventArgs e)
{
try
{
if (e.KeyCode == Keys.Enter)//判断回车键
{
if (cobSHOPCODE.Text == "请选择门店")
{
MessageBox.Show("请先选择门店!");
}
else if (CobMACHINECODE.Text == "请选择收银机")
{
MessageBox.Show("请先选择收银机号!");
}
else if (cobCHECKMODE.Text == "请选择盘点模式")
{
MessageBox.Show("请先选择盘点模式!");
}
else //保存盘点信息
{
string commodityInfo = CommodityInfo.Text;
string[] sArray = commodityInfo.Split(',');
CommodityBarCode.Text = sArray[0].ToString();
CommodityNum.Text = sArray[1].ToString();
InventoryDate.Text = sArray[2].ToString();
con.Open();
string selectSql = "select * from CommodityInventory where CommodityBarCode='" + CommodityBarCode.Text +
"' and CheckDate='" + AccountDate.Text + "' AND SERVERPARTSHOP_ID = " + serverpartshop_id + "";
string updateSql = "";
OleDbDataAdapter da = new OleDbDataAdapter(selectSql, con);
DataTable dt = new DataTable();
da.Fill(dt);
con.Close();
string barcode = @"select serverpartshop_id,commodity_name from DBA.t_commodityex" +
" where COMMODITY_BARCODE = '" + CommodityBarCode.Text + "'";
SAConnection conany = new SAConnection(odbcString);
conany.Open();
SACommand _barcode = new SACommand(barcode, conany);
SADataReader barcodereader = _barcode.ExecuteReader();
if (barcodereader.HasRows)
{
if (barcodereader.Read())
{
commodityname.Text = Convert.ToString(barcodereader["commodity_name"]);
}
}
if (cobCHECKMODE.Text == "门店盘点")//门店盘点模式
{
string sellDate = @"SELECT SUM(b.SELLCOUNT) AS SellCount,0 as TotalCount,Max(SELLDATA_DATE) as InventoryDate
FROM DBA.t_commodityex a, DBA.t_selldata b WHERE a.COMMODITY_CODE = b.COMMODITY_CODE AND
b.SELLDATA_DATE > '" + AccountDate.Text + "'" + " AND A.SERVERPARTSHOP_ID= " + serverpartshop_id +
" AND b.SELLDATA_DATE <= '" + InventoryDate.Text + "' AND A.COMMODITY_BARCODE = '" + CommodityBarCode.Text + "'";
SACommand sellCommand = new SACommand(sellDate, conany);
SADataReader sellRead = sellCommand.ExecuteReader();
if (sellRead.HasRows)//判断是否有流水
{
if (sellRead.Read())
{
if (dt.Rows.Count > 0)
{
foreach (DataRow dr in dt.Rows)
{
if (Convert.ToDateTime(dr["InventoryDate"]) <= Convert.ToDateTime(InventoryDate.Text))
{
updateSql = @"update CommodityInventory set InventoryNum=" +
(Convert.ToInt32(dr["InventoryNum"].ToString() == "" ? "0" : dr["InventoryNum"]) +
Convert.ToInt32(CommodityNum.Text)) + ",SellCount=" + Convert.ToInt32(sellRead["SellCount"].ToString() == "" ? "0" : sellRead["SellCount"]) +
",TotalCount=" + (Convert.ToInt32(dr["InventoryNum"].ToString() == "" ? "0" : dr["InventoryNum"]) +
Convert.ToInt32(CommodityNum.Text) + Convert.ToInt32(dr["CheckDesc"].ToString() == "" ? "0" : dr["CheckDesc"]) +
Convert.ToInt32(sellRead["SellCount"].ToString() == "" ? "0" : sellRead["SellCount"])) + ",InventoryDate='" +
Convert.ToDateTime(InventoryDate.Text).ToString("yyyy/MM/dd HH:mm:ss") + "' where CommodityBarCode='" +
CommodityBarCode.Text + "' AND CheckDate='" + AccountDate.Text + "' AND SERVERPARTSHOP_ID=" + serverpartshop_id;
con.Open();
OleDbCommand comm = new OleDbCommand(updateSql, con);
comm.ExecuteNonQuery();
con.Close();
}
else
{
updateSql = @"update CommodityInventory set InventoryNum=" + (Convert.ToInt32(dr["InventoryNum"].ToString() == "" ? "0" : dr["InventoryNum"]) +
Convert.ToInt32(CommodityNum.Text)) + ",TotalCount=" + (Convert.ToInt32(dr["InventoryNum"].ToString() == "" ? "0" :
dr["InventoryNum"]) + Convert.ToInt32(CommodityNum.Text) + Convert.ToInt32(dr["CheckDesc"].ToString() == "" ? "0" : dr["CheckDesc"]) +
Convert.ToInt32(dr["SellCount"].ToString() == "" ? "0" : dr["SellCount"])) +
" where CommodityBarCode='" + CommodityBarCode.Text + "' AND CheckDate='" + AccountDate.Text + "' AND SERVERPARTSHOP_ID=" + serverpartshop_id;
con.Open();
OleDbCommand comm = new OleDbCommand(updateSql, con);
comm.ExecuteNonQuery();
con.Close();
}
conany.Close();
}
}
else
{
string insertSql = "insert into CommodityInventory (CommodityBarCode,CommodityName,InventoryNum,SellCount,TotalCount,InventoryDate,ServerpartShop_id," +
"CheckDate) values ('" + CommodityBarCode.Text + "','" + commodityname.Text + "'," + CommodityNum.Text + "," +
Convert.ToInt32(sellRead["SellCount"].ToString() == "" ? "0" : sellRead["SellCount"]) + "," +
(Convert.ToInt32(CommodityNum.Text) + Convert.ToInt32(sellRead["SellCount"].ToString() == "" ? "0" : sellRead["SellCount"])) +
",'" + Convert.ToDateTime(InventoryDate.Text).ToString("yyyy/MM/dd HH:mm:ss") + "'," + serverpartshop_id + ",'" + AccountDate.Text + "')";
conany.Close();
con.Open();
OleDbCommand comm = new OleDbCommand(insertSql, con);
comm.ExecuteNonQuery();
con.Close();
}
}
}
else //没有流水记录
{
//string barcode = @"select serverpartshop_id,commodity_name from DBA.t_commodityex
// where COMMODITY_BARCODE = '" + CommodityBarCode.Text + "'";
//OdbcCommand _barcode = new OdbcCommand(barcode, conany);
//OdbcDataReader barcodereader = _barcode.ExecuteReader();
if (barcodereader.HasRows)
{
string insertSql = @"insert into CommodityInventory (CommodityBarCode,InventoryNum,SellCount,TotalCount,InventoryDate,ServerpartShop_id ,CheckDate)
values ('" + CommodityBarCode.Text + "'," + CommodityNum.Text + "," + Convert.ToInt32(sellRead["SellCount"].ToString() == "" ? "0" : sellRead["SellCount"]) +
"," + (CommodityNum.Text + Convert.ToInt32(sellRead["SellCount"].ToString() == "" ? "0" : sellRead["SellCount"])) + ",'" +
Convert.ToDateTime(InventoryDate.Text).ToString("yyyy/MM/dd HH:mm:ss") + "'," + serverpartshop_id + ",'" + AccountDate.Text + "')";
conany.Close();
con.Open();
OleDbCommand comm = new OleDbCommand(insertSql, con);
comm.ExecuteNonQuery();
con.Close();
//commodityname.Text = barcodereader["commodity_name"].ToString();
}
else
{
noBarCode += CommodityBarCode.Text;
CommodityInfo.Clear();
CommodityInfo.Focus();
return;
}
noBarCode += CommodityBarCode.Text;
CommodityInfo.Clear();
CommodityInfo.Focus();
return;
}
}
else //仓库盘点模式
{
if (barcodereader.HasRows) //检查条码是否存在
{
if (dt.Rows.Count > 0) //有盘点记录
{
foreach (DataRow dr in dt.Rows)
{
if (Convert.ToDateTime(dr["InventoryDate"]) < Convert.ToDateTime(InventoryDate.Text)) //盘点录入时间大于上一条记录
{
updateSql = "update CommodityInventory set CheckDesc=" + (Convert.ToInt32(dr["CheckDesc"].ToString() == "" ? "0" : dr["CheckDesc"]) +
Convert.ToInt32(CommodityNum.Text)) + ",TotalCount=" + (Convert.ToInt32(dr["InventoryNum"].ToString() == "" ? "0" :
dr["InventoryNum"]) + Convert.ToInt32(CommodityNum.Text) + Convert.ToInt32(dr["CheckDesc"].ToString() == "" ? "0" : dr["CheckDesc"]) +
Convert.ToInt32(dr["SellCount"].ToString() == "" ? "0" : dr["SellCount"])) + ",InventoryDate='" +
Convert.ToDateTime(InventoryDate.Text).ToString("yyyy/MM/dd HH:mm:ss") + "' where CommodityBarCode='" +
CommodityBarCode.Text + "' AND CheckDate='" + AccountDate.Text + "' AND SERVERPARTSHOP_ID=" + serverpartshop_id;
con.Open();
OleDbCommand comm = new OleDbCommand(updateSql, con);
comm.ExecuteNonQuery();
con.Close();
}
else //盘点录入时间小于上一条记录
{
updateSql = "update CommodityInventory set CheckDesc=" + (Convert.ToInt32(dr["CheckDesc"].ToString() == "" ? "0" : dr["CheckDesc"]) +
Convert.ToInt32(CommodityNum.Text)) + ",TotalCount=" + (Convert.ToInt32(dr["InventoryNum"].ToString() == "" ? "0" :
dr["InventoryNum"]) + Convert.ToInt32(CommodityNum.Text) + Convert.ToInt32(dr["CheckDesc"].ToString() == "" ? "0" : dr["CheckDesc"]) +
Convert.ToInt32(dr["SellCount"].ToString() == "" ? "0" : dr["SellCount"])) + " where CommodityBarCode='" +
CommodityBarCode.Text + "' AND CheckDate='" + AccountDate.Text + "' AND SERVERPARTSHOP_ID=" + serverpartshop_id;
con.Open();
OleDbCommand comm = new OleDbCommand(updateSql, con);
comm.ExecuteNonQuery();
con.Close();
}
conany.Close();
}
}
else //没有盘点记录
{
string insertSql = "insert into CommodityInventory (CommodityBarCode,CommodityName,CheckDesc,TotalCount,InventoryDate,ServerpartShop_id ,CheckDate) values ('" +
CommodityBarCode.Text + "','" + commodityname.Text + "'," + CommodityNum.Text + "," + (Convert.ToInt32(CommodityNum.Text)) + ",'" +
Convert.ToDateTime(InventoryDate.Text).ToString("yyyy/MM/dd HH:mm:ss") + "'," + serverpartshop_id + ",'" + AccountDate.Text + "')";
con.Open();
OleDbCommand comm = new OleDbCommand(insertSql, con);
comm.ExecuteNonQuery();
con.Close();
conany.Close();
}
this.btnSearch_Click(sender, e);
CommodityInfo.Clear();
CommodityInfo.Focus();
}
else
{
noBarCode += CommodityBarCode.Text;
CommodityInfo.Clear();
CommodityInfo.Focus();
return;
}
}
this.btnSearch_Click(sender, e);
CommodityInfo.Clear();
CommodityInfo.Focus();
return;
}
}
}
catch (Exception ex)
{
LogHelper.WriteServiceLog(ex.Message);
con.Close();
}
CommodityInfo.Focus();
}
#endregion
#region
private void btnCheck_Click(object sender, EventArgs e)
{
try
{
if (cobSHOPCODE.Text == "请选择门店")
{
MessageBox.Show("请先选择门店!");
}
else if (CobMACHINECODE.Text == "请选择收银机")
{
MessageBox.Show("请先选择收银机号!");
}
else
{
OdbcDataReader reader = null;
OdbcConnection conany = new OdbcConnection(odbcString);
conany.Open();
string commodity = @"SELECT a.COMMODITY_BARCODE AS CommodityBarCode,0 AS InventoryNum,
SUM(b.SELLCOUNT) AS SellCount,0 as TotalCount,Max(SELLDATA_DATE) as InventoryDate
FROM DBA.t_commodityex a, DBA.t_selldata b
WHERE a.COMMODITY_CODE = b.COMMODITY_CODE AND SELLDATA_DATE > '" + AccountDate.Text +
"' AND A.SERVERPARTSHOP_ID='" + serverpartshop_id + "' GROUP BY a.COMMODITY_BARCODE";
OdbcCommand command = new OdbcCommand(commodity, conany);
reader = command.ExecuteReader();
DataTable dt = new DataTable(); //新建表对象
dt.Load(reader);
con.Open();
string selectSql = @"
select CommodityBarCode,
iif(isnull(InventoryNum),0,InventoryNum) AS InventoryNum,
iif(isnull(SellCount),0,SellCount) AS SellCount,
iif(isnull(TotalCount),0,TotalCount) AS TotalCount,InventoryDate
from CommodityInventory
where InventoryDate > '" + AccountDate.Text + "'";
OleDbDataAdapter daInventory = new OleDbDataAdapter(selectSql, con);
DataTable dtInventory = new DataTable();
daInventory.Fill(dtInventory);
foreach (DataRow sell in dt.Rows)
{
bool has = false;
DataRow[] InvDr = dtInventory.Select("CommodityBarCode='" + sell["CommodityBarCode"].ToString() + "'");
if (InvDr.Length > 0)
{
string sellDate = @"SELECT SUM(b.SELLCOUNT) AS SellCount,0 as TotalCount,
Max(SELLDATA_DATE) as InventoryDate FROM DBA.t_commodityex a, DBA.t_selldata b
WHERE a.COMMODITY_CODE = b.COMMODITY_CODE AND SELLDATA_DATE > '" + AccountDate.Text + "'" +
"AND A.SERVERPARTSHOP_ID= " + serverpartshop_id + " AND b.SELLDATA_DATE <= '" +
InvDr[0]["InventoryDate"].ToString() + "' AND A.COMMODITY_BARCODE = '" +
sell["CommodityBarCode"].ToString() + "'";
OdbcCommand sellCommand = new OdbcCommand(sellDate, conany);
OdbcDataReader sellRead = sellCommand.ExecuteReader();
if (sellRead.HasRows)
{
has = true;
string updateSql = @"update CommodityInventory set SellCount=" +
Convert.ToInt32(sellRead["SellCount"].ToString() == "" ? "0" : sellRead["SellCount"]) +
",TotalCount=" + (Convert.ToInt32(sellRead["SellCount"].ToString() == "" ? "0" :
sellRead["SellCount"]) + Convert.ToInt32(InvDr[0]["InventoryNum"])) +
" where CommodityBarCode='" + sell["CommodityBarCode"].ToString() + "'";
OleDbCommand comm = new OleDbCommand(updateSql, con);
comm.ExecuteNonQuery();
}
}
if (!has)
{
string insertSql = @"insert into CommodityInventory
(CommodityBarCode,InventoryNum,SellCount,TotalCount,InventoryDate,CheckDate)
values ('" + sell["CommodityBarCode"] + "',0," + Convert.ToInt32(sell["SellCount"]) +
"," + Convert.ToInt32(sell["SellCount"]) + ",'" + sell["InventoryDate"] +
"','" + AccountDate.Text + "')";
OleDbCommand comm = new OleDbCommand(insertSql, con);
comm.ExecuteNonQuery();
}
}
conany.Close();
con.Close();
if (!string.IsNullOrEmpty(noBarCode))
{
MessageBox.Show("收银机不存在条码为:'" + noBarCode + "'的商品");
}
else
{
MessageBox.Show("数据校验成功!");
}
}
}
catch (Exception ex)
{
LogHelper.WriteServiceLog(ex.Message);
con.Close();
}
}
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
CommodityInfo.Focus();
ChangeColor();
}
#endregion
#region
private void cobSHOPCODE_SelectedIndexChanged_1(object sender, EventArgs e)
{
OracleConnection conn = new OracleConnection(connString);
#region IP和编号
try
{
if (cobSHOPCODE.Text != "请选择门店")
{
conn.Open();
string comStr = "SELECT MACHINECODE,MACHINE_IP,MACHINE_MACADDRESS FROM HIGHWAY_EXCHANGE.T_MACHINEINFO A WHERE A.SHOPCODE=(" +
"SELECT SHOPCODE FROM HIGHWAY_EXCHANGE.T_SHOPMESSAGE B WHERE B.SHOPNAME ='" + cobSHOPCODE.Text + "') ORDER BY MACHINECODE ASC";
ArrayList listCompanyID = new ArrayList();
OracleCommand Com = new OracleCommand(comStr, conn);
OracleDataReader rd = Com.ExecuteReader();
if (rd.HasRows)
{
while (rd.Read())
{
listCompanyID.Add(rd["MACHINECODE"].ToString());
}
listCompanyID.Insert(0, "请选择收银机");
CobMACHINECODE.DataSource = listCompanyID;
rd.Dispose();
ArrayList listmode = new ArrayList();
listmode.Insert(0, "请选择盘点模式");
listmode.Add("门店盘点");
listmode.Add("仓库盘点");
cobCHECKMODE.DataSource = listmode;
}
conn.Close();
}
}
catch (Exception ex)
{
LogHelper.WriteServiceLog(ex.Message);
conn.Close();
}
#endregion
CommodityInfo.Focus();
}
#endregion
#region
private void CobMACHINECODE_SelectedIndexChanged_1(object sender, EventArgs e)
{
if (CobMACHINECODE.Text != "请选择收银机")
{
OracleConnection conn = new OracleConnection(connString);
conn.Open();
string comStr = "SELECT MACHINECODE,MACHINE_IP,MACHINE_MACADDRESS FROM T_MACHINEINFO WHERE MACHINECODE = '" +
CobMACHINECODE.Text + "'";
ArrayList listCompanyID = new ArrayList();
OracleCommand Com = new OracleCommand(comStr, conn);
OracleDataReader rd = Com.ExecuteReader();
if (rd.HasRows)
{
while (rd.Read())
{
cashRegisterIP = rd["MACHINE_IP"].ToString();
macAddress = rd["MACHINE_MACADDRESS"].ToString();
}
}
conn.Close();
#region Mac地址获取收银机IP和名称
try
{
conn.Open();
string registerIPSql = "SELECT MACHINE_IP,MACHINENAME,SERVERPARTCODE,SHOPCODE FROM T_MACHINEINFO WHERE MACHINE_MACADDRESS = '" + macAddress + "'";
OracleCommand registerIPCom = new OracleCommand(registerIPSql, conn);
OracleDataReader registerIPrd = registerIPCom.ExecuteReader();
if (registerIPrd.HasRows)
{
while (registerIPrd.Read())
{
machineIP = registerIPrd["MACHINE_IP"].ToString();
machineName = registerIPrd["MACHINENAME"].ToString();
serverpartcode = registerIPrd["SERVERPARTCODE"].ToString();
shopcode = registerIPrd["SHOPCODE"].ToString();
}
}
conn.Close();
}
catch (Exception ex)
{
LogHelper.WriteServiceLog(ex.Message);
conn.Close();
}
#endregion
//odbcString = "DSN=anysql1;UID=dba;PWD=sql;";
//odbcString = "driver={RY Sybase SQL Anywhere 11.0};Dsn=" + machineName + ";UID=dba;PWD=sql;" +
// "servername=" + machineName + ";commlinks='SharedMemory,TCPIP{host=" + machineIP + "}'";
odbcString = "host=" + machineIP + ";server=" + machineName + ";userid=dba;password=sql";
#region
try
{
SAConnection conany = new SAConnection(odbcString);
conany.Open();
string serverpartshopid = @"select serverpartshop_id from DBA.t_shopmessage
where serverpartcode='" + serverpartcode + "' and shopcode=" + shopcode + "";
SACommand _serverpartshopid = new SACommand(serverpartshopid, conany);
SADataReader shopidreader = _serverpartshopid.ExecuteReader();
if (shopidreader.HasRows)
{
while (shopidreader.Read())
{
serverpartshop_id = shopidreader["serverpartshop_id"].ToString();
}
}
conany.Close();
}
catch (Exception ex)
{
MessageBox.Show("收银机连接失败,请重新选择!");
LogHelper.WriteServiceLog(ex.Message);
}
#endregion
#region
try
{
string checkDate = @"SELECT ENDACCOUNT_DATE FROM DBA.t_endaccount where ENDACCOUNT_DATE > Getdate()-5 ORDER BY ENDACCOUNT_DATE DESC";
SAConnection conany = new SAConnection(odbcString);
conany.Open();
AccountDate.Items.Clear();
SACommand _checkDate = new SACommand(checkDate, conany);
SADataReader checkDateRd = _checkDate.ExecuteReader();
if (checkDateRd.HasRows)
{
while (checkDateRd.Read())
{
AccountDate.Items.Add(checkDateRd[0].ToString());
//endAccountDate = Convert.ToDateTime(checkDateRd["ENDACCOUNT_DATE"]).ToString("yyyy/MM/dd HH:mm:ss");
}
}
conany.Close();
AccountDate.SelectedIndex = 0;
}
catch (Exception ex)
{
LogHelper.WriteServiceLog(ex.Message);
}
#endregion
}
CommodityInfo.Focus();
}
#endregion
private void AccountDate_SelectedIndexChanged_1(object sender, EventArgs e)
{
CommodityInfo.Focus();
}
private void cobCHECKMODE_SelectedIndexChanged_1(object sender, EventArgs e)
{
CommodityInfo.Focus();
}
#region MAC地址
public static string GetMACINFO()
{
string key = "SYSTEM\\CurrentControlSet\\Control\\Network\\{4D36E972-E325-11CE-BFC1-08002BE10318}\\";
string MacAddress = string.Empty;
try
{
NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface adapter in nics)
{
if (adapter.NetworkInterfaceType == NetworkInterfaceType.Ethernet
&& adapter.GetPhysicalAddress().ToString().Length != 0)
{
string fRegistryKey = key + adapter.Id + "\\Connection";
RegistryKey rk = Registry.LocalMachine.OpenSubKey(fRegistryKey, false);
if (rk != null)
{
string fPnpInstanceID = rk.GetValue("PnpInstanceID", "").ToString();
int fMediaSubType = Convert.ToInt32(rk.GetValue("MediaSubType", 0));
if (fPnpInstanceID.Length > 3 &&
fPnpInstanceID.Substring(0, 3) == "PCI")
{
MacAddress = adapter.GetPhysicalAddress().ToString();
for (int i = 1; i < 6; i++)
{
MacAddress = MacAddress.Insert(3 * i - 1, ":");
}
break;
}
}
}
}
}
catch (Exception ex)
{
//这里写异常的处理
}
return MacAddress;
}
#endregion
#region
private void btnUpLoad_Click(object sender, EventArgs e)
{
int temp = 0;
int tmp = 0;
int i = 0;
try
{
//if (cobSHOPCODE.Text == "请选择门店")
//{
// MessageBox.Show("请先选择门店!");
//}
//else if (CobMACHINECODE.Text == "请选择收银机")
//{
// MessageBox.Show("请先选择收银机号!");
//}
//else
//{
Form3 frm1 = new Form3();
frm1.Text = "盘点上传门店选择";
frm1.ShowDialog();
if (frm1.DialogResult == DialogResult.OK)
{
progressBar1.Visible = true;
label11.Visible = true;
progressBar1.Value = 0;
string log = string.Empty;
con.Open();
string selectSql = @"
select CommodityBarCode,iif(isnull(InventoryNum),0,InventoryNum) AS InventoryNum,
iif(isnull(SellCount),0,SellCount) AS SellCount,
iif(isnull(CheckDesc),0,CheckDesc) AS CheckDesc,
iif(isnull(TotalCount),0,TotalCount) AS TotalCount,InventoryDate,CheckDate
from CommodityInventory
where CheckDate > '" + frm1.CheckDate + "'";
OleDbDataAdapter daInventory = new OleDbDataAdapter(selectSql, con);
DataTable dtInventory = new DataTable();
daInventory.Fill(dtInventory);
con.Close();
foreach (DataRow dr in dtInventory.Rows)
{
string updateSql = @"UPDATE SALESTORE_STORAGE.T_CHECKCOMMODITYDETAIL A SET A.CUROVERPLUSCOUNT = " + dr["TotalCount"] +
",A.CHECKDESC = '仓库数量:" + dr["CheckDesc"] + "' WHERE COMMODITY_BARCODE = " + dr["CommodityBarCode"] +
" AND exists(select 1 from SALESTORE_STORAGE.T_CHECKCOMMODITY b where a.CHECKCOMMODITY_ID = b.CHECKCOMMODITY_ID and " +
" b.CHECKDATE = TO_DATE('" + dr["CheckDate"] + "','yyyy/MM/dd HH24:mi:ss') and b.SERVERPARTSHOP_ID = " +
frm1.Shop_id + " and b.CHECK_STATE = 0 and b.CHECK_TYPE IN(1000,3000))";
string selectStr = @"SELECT A.* FROM SALESTORE_STORAGE.T_CHECKCOMMODITYDETAIL A ,SALESTORE_STORAGE.T_CHECKCOMMODITY B
WHERE A.CHECKCOMMODITY_ID = B.CHECKCOMMODITY_ID AND COMMODITY_BARCODE=" + dr["CommodityBarCode"] +
" AND B.SERVERPARTSHOP_ID=" + frm1.Shop_id + " AND B.CHECK_STATE = 0 AND B.CHECK_TYPE IN(1000,3000)" +
" AND B.CHECKDATE = TO_DATE('" + dr["CheckDate"] + "','yyyy/MM/dd HH24:mi:ss')";
Business.CHECKCOMMODITYDETAIL _CHECKCOMMODITYDETAIL = new Business.CHECKCOMMODITYDETAIL(this.Transaction);
DataTable dt = _CHECKCOMMODITYDETAIL.ExecuteDataTable(selectStr, null);
i++;
label11.Text = "正在上传盘点数据······";
progressBar1.Value = (int)((decimal)((i / Convert.ToDecimal(dtInventory.Rows.Count.ToString())) * 100));
if (dt.Rows.Count > 0)
{
_CHECKCOMMODITYDETAIL.ExecuteNonQuery(updateSql, null);
string updateSql1 = "UPDATE CommodityInventory SET Flag = 0 WHERE CommodityBarCode = '" +
dr["CommodityBarCode"].ToString() + "'";
con.Open();
OleDbCommand comm = new OleDbCommand(updateSql1, con);
comm.ExecuteNonQuery();
con.Close();
tmp++;
}
else
{
string updateSql1 = "UPDATE CommodityInventory SET Flag = 1 WHERE CommodityBarCode = '" +
dr["CommodityBarCode"].ToString() + "'";
con.Open();
OleDbCommand comm = new OleDbCommand(updateSql1, con);
comm.ExecuteNonQuery();
con.Close();
log += dr["CommodityBarCode"].ToString() + ",\r\n";
temp++;
}
}
//string checkcommodity=@" INSERT INTO SALESTORE_STORAGE.T_CHECKCOMMODITY (CHECKPERSON,CHECKDATE,SERVERPART_ID,
// SERVERPARTSHOP_ID,CHECKCOMMODITY_DESC,CHECK_STATE,CHECK_PASSPORT_GUID,CHECK_TYPE) VALUES ()"
Business.CHECKCOMMODITY _CHECKCOMMODITY = new Business.CHECKCOMMODITY(this.Transaction);
label11.Text = "盘点数据上传完成!";
if (!string.IsNullOrEmpty(log))
{
MessageBox.Show("盘点数据上传结束!成功" + tmp + "条;失败" + temp +
"条;\r\n失败原因本期盘点无入库记录。点击确定查看失败记录详情");
con.Open();
string selectSql1 = @"select ID,CommodityBarCode,CommodityName,
iif(isnull(InventoryNum),0,InventoryNum)+iif(isnull(SellCount),0,SellCount) AS InventoryNum,
iif(isnull(CheckDesc),0,CheckDesc) AS CheckDesc,
iif(isnull(TotalCount),0,TotalCount) AS TotalCount,InventoryDate,iif(isnull(Flag),0,Flag) AS Flag
from CommodityInventory
where CheckDate='" + frm1.CheckDate + "'AND Flag = 1";
OleDbDataAdapter da = new OleDbDataAdapter(selectSql1, con); //创建适配对象
DataTable dt1 = new DataTable(); //新建表对象
da.Fill(dt1); //用适配对象填充表对象
dataGridView1.DataSource = dt1;
con.Close();
CommodityInfo.Focus();
ChangeColor();
label11.Text = "盘点数据上传结束!上传总数:" +(decimal)( tmp + temp) + "条;成功" + tmp + "条;失败" +
temp + "条,失败原因:无入库记录";
progressBar1.Visible = false;
}
else
{
MessageBox.Show("盘点数据上传完成!上传成功" + tmp + "条盘点记录");
con.Open();
string selectSql1 = @"select ID,CommodityBarCode,CommodityName,
iif(isnull(InventoryNum),0,InventoryNum)+iif(isnull(SellCount),0,SellCount) AS InventoryNum,
iif(isnull(CheckDesc),0,CheckDesc) AS CheckDesc,
iif(isnull(TotalCount),0,TotalCount) AS TotalCount,InventoryDate,iif(isnull(Flag),0,Flag) AS Flag
from CommodityInventory
where CheckDate='" + frm1.CheckDate + "'";
OleDbDataAdapter da = new OleDbDataAdapter(selectSql1, con); //创建适配对象
DataTable dt1 = new DataTable(); //新建表对象
da.Fill(dt1); //用适配对象填充表对象
dataGridView1.DataSource = dt1;
con.Close();
CommodityInfo.Focus();
label11.Text = "盘点数据上传结束!上传总数:" + (decimal)(tmp+temp) + "条;成功" + tmp + "条。";
progressBar1.Visible = false;
}
}
}
catch (Exception ex)
{
LogHelper.WriteServiceLog(ex.Message);
con.Close();
}
}
#endregion
#region
public void ChangeColor()
{
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
if (dataGridView1.Rows[i].Cells["Flag"].Value.ToString() == "1")
{
for (int j = 0; j < dataGridView1.Rows[i].Cells.Count; j++)
{
dataGridView1.Rows[i].Cells[j].Style.ForeColor = Color.Red;
dataGridView1.Rows[i].Cells[j].Style.Font = new Font(dataGridView1.Font, FontStyle.Bold);
}
}
}
}
#endregion
#region
private void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
{
SolidBrush b = new SolidBrush(this.dataGridView1.RowHeadersDefaultCellStyle.ForeColor);
e.Graphics.DrawString((e.RowIndex + 1).ToString(System.Globalization.CultureInfo.CurrentUICulture), this.dataGridView1.DefaultCellStyle.Font, b, e.RowBounds.Location.X + 20, e.RowBounds.Location.Y + 4);
}
#endregion
}
}