275 lines
12 KiB
C#
275 lines
12 KiB
C#
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;
|
|
|
|
namespace InvoicingTool
|
|
{
|
|
public partial class CheckBill : Form
|
|
{
|
|
QualityHelper _QualityHelper = new QualityHelper();
|
|
BackgroundWorker bgCheckBill = new BackgroundWorker();
|
|
Timer StartTimer = new Timer();
|
|
decimal _ApplyTime = 0;
|
|
DateTime? _StartTime;
|
|
string _ServerPartCode = "";
|
|
string _ShopCode = "";
|
|
string _MachineCode = "";
|
|
string _SellWorkerName = "";
|
|
string _ShopName = "";
|
|
string _ServiceUrl = "";
|
|
int _ExitTime = 5;
|
|
bool _Working = true;
|
|
public CheckBill()
|
|
{
|
|
InitializeComponent();
|
|
_StartTime = DateTime.Now;
|
|
_ServerPartCode = _QualityHelper.serverpartcode;
|
|
_ShopName = _QualityHelper.shopname;
|
|
_ShopCode = _QualityHelper.shopcode;
|
|
_MachineCode = _QualityHelper.machinecode;
|
|
_ServiceUrl = "http://" + _QualityHelper.dbip + ":" + _QualityHelper.serviceport + "/Service.asmx";
|
|
bgCheckBill.WorkerReportsProgress = true;
|
|
bgCheckBill.WorkerSupportsCancellation = true;
|
|
bgCheckBill.DoWork += BgCheckBill_DoWork;
|
|
bgCheckBill.RunWorkerCompleted += BgCheckBill_RunWorkerCompleted;
|
|
StartTimer.Tick += new EventHandler(StartTimer_Tick);
|
|
StartTimer.Interval = 1000;
|
|
StartTimer.Start();
|
|
loadingCircle1.Switch();
|
|
}
|
|
|
|
private void BgCheckBill_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
|
|
{
|
|
//StartTimer.Stop();
|
|
}
|
|
|
|
private void BgCheckBill_DoWork(object sender, DoWorkEventArgs e)
|
|
{
|
|
CheckBillCreate();
|
|
}
|
|
|
|
private void StartTimer_Tick(object sender, EventArgs e)
|
|
{
|
|
if (_StartTime == null)
|
|
{
|
|
_StartTime = DateTime.Now;
|
|
}
|
|
//检查是否正在执行申请
|
|
if (!_Working)
|
|
{
|
|
LabelText("lblStartTime", "当前窗口将在(" + _ExitTime + ")秒后自动关闭。", Color.Black);
|
|
if (_ExitTime <= 0)
|
|
{
|
|
this.Close();
|
|
}
|
|
_ExitTime--;
|
|
}
|
|
else
|
|
{
|
|
if (!bgCheckBill.IsBusy)
|
|
{
|
|
bgCheckBill.RunWorkerAsync();
|
|
}
|
|
TimeSpan _TimeSpan = DateTime.Now - _StartTime.Value;
|
|
LabelText("lblStartTime", _TimeSpan.Minutes.ToString().PadLeft(2, '0') + "分" + _TimeSpan.Seconds.ToString().PadLeft(2, '0') + "秒", Color.Black);
|
|
}
|
|
}
|
|
|
|
private void CheckBillCreate()
|
|
{
|
|
string _CheckDate = "";
|
|
string _Result = "";
|
|
if (_ServerPartCode == "" || _ShopCode == "" || _MachineCode == "")
|
|
{
|
|
return;
|
|
}
|
|
string _SelectSql = string.Format("select enddate from t_endaccount_new " +
|
|
"where enddate = ( select max(enddate) from t_endaccount_new " +
|
|
"where serverpartcode = {0} and shopcode = {1} and machinecode = {2} and endaccount_type <> 5 )",
|
|
_ServerPartCode, _ShopCode, _MachineCode);
|
|
try
|
|
{
|
|
_CheckDate = DBHelper.QueryOdbc(_SelectSql).Tables[0].Rows[0]["enddate"].ToString();
|
|
}
|
|
catch
|
|
{
|
|
_CheckDate = "";
|
|
}
|
|
if (_CheckDate == "")
|
|
{
|
|
LabelText("lblCheckDate", _CheckDate, Color.White);
|
|
LabelText("lblShopName", _ShopName, Color.White);
|
|
LabelText("lblMess", "当前收银机从未结账,不能进行盘点操作。", Color.Red);
|
|
_Working = false;
|
|
}
|
|
else
|
|
{
|
|
LabelText("lblCheckDate", _CheckDate, Color.White);
|
|
LabelText("lblShopName", _ShopName, Color.White);
|
|
LabelText("lblMess", "正在申请创建盘点单......", Color.Red);
|
|
string[] args = { _ServerPartCode, _ShopCode, _CheckDate, _SellWorkerName, "1000", "0", "0" };
|
|
try
|
|
{
|
|
_Result = WSHelper.InvokeWebService(_ServiceUrl, "CreateCheckBill", args).ToString();
|
|
}
|
|
catch
|
|
{
|
|
_Result = "";
|
|
}
|
|
if (_Result != "")
|
|
{
|
|
switch (_Result)
|
|
{
|
|
case "101":
|
|
LabelText("lblMess", "盘点单申请成功,正在生成盘点明细。", Color.Black);
|
|
break;
|
|
case "201":
|
|
LabelText("lblMess", "当前门店状态异常,请联系系统管理员。", Color.Black);
|
|
break;
|
|
case "300":
|
|
LabelText("lblMess", "门店存在调拨退货业务,请前往综管平台处理。", Color.Black);
|
|
break;
|
|
case "301":
|
|
LabelText("lblMess", "门店正在盘点,不能创建新的盘点申请。", Color.Black);
|
|
break;
|
|
case "302":
|
|
LabelText("lblMess", "门店存在未校验的结账信息,请前往综管平台处理。", Color.Black);
|
|
break;
|
|
case "303":
|
|
LabelText("lblMess", "门店存在未扣除库存的单品信息,请稍后重试。", Color.Black);
|
|
break;
|
|
case "304":
|
|
LabelText("lblMess", "门店结账信息未上传,不能进行盘点操作。", Color.Black);
|
|
break;
|
|
case "999":
|
|
LabelText("lblMess", "通讯异常,盘点单创建申请失败,请稍后重试。", Color.Black);
|
|
break;
|
|
default:
|
|
LabelText("lblMess", "正在验证盘点申请结果,请稍候......", Color.Black);
|
|
DataSet _DataSet = JsonHelper.JsonToDataSet(_Result.Replace(" ", ""));
|
|
if (_DataSet.Tables.Count > 0)
|
|
{
|
|
DataTable _DataTable = _DataSet.Tables["CheckBill"];
|
|
if (_DataTable.Rows.Count > 0)
|
|
{
|
|
string _DeleteSql = "delete from t_checkcommoditydetail a where not exists ( " +
|
|
"select 1 from t_checkcommodityex b where a.checkcommodity_id = " +
|
|
"b.checkcommodity_id and b.check_state = 9)";
|
|
DBHelper.ExecuteSqlTran(_DeleteSql);
|
|
_DeleteSql = "delete from t_checkcommodityex where check_state <> 9";
|
|
DBHelper.ExecuteSqlTran(_DeleteSql);
|
|
foreach (DataRow _Row in _DataTable.Rows)
|
|
{
|
|
string checkcommodity_id = _Row["checkcommodity_id"].ToString();
|
|
string checkperson = _Row["checkperson"].ToString();
|
|
string checkdate = _Row["checkdate"].ToString();
|
|
string serverpart_id = _Row["serverpart_id"].ToString();
|
|
string serverpartshop_id = _Row["serverpartshop_id"].ToString();
|
|
string checkcommodity_desc = _Row["checkcommodity_desc"].ToString();
|
|
string check_state = _Row["check_state"].ToString();
|
|
string check_passport_guid = _Row["check_passport_guid"].ToString();
|
|
string check_type = _Row["check_type"].ToString();
|
|
//checkcommodity_id, checkperson, checkdate, serverpart_id, serverpartshop_id, checkcommodity_desc, check_state, check_passport_guid, check_type
|
|
if (DBHelper.QueryOdbc("select 1 from t_checkcommodityex " +
|
|
"where checkdate = datetime('" + checkdate + "')").Tables[0].Rows.Count == 0)
|
|
{
|
|
string _InsertSql = "insert into t_checkcommodityex (checkcommodity_id, checkperson," +
|
|
" checkdate, serverpart_id, serverpartshop_id, checkcommodity_desc, check_state," +
|
|
" check_passport_guid, check_type ) values(" + checkcommodity_id + ",'" + checkperson +
|
|
"',datetime('" + checkdate + "')," + serverpart_id + "," + serverpartshop_id + ",'" +
|
|
checkcommodity_desc + "'," + check_state + ",'" + check_passport_guid + "'," + check_type + ")";
|
|
DBHelper.ExecuteSqlTran(_InsertSql);
|
|
}
|
|
}
|
|
LabelText("lblMess", "盘点单创建成功,系统正在生成盘点明细。", Color.Black);
|
|
}
|
|
else
|
|
{
|
|
LabelText("lblMess", "盘点单验证失败,请重试。", Color.Black);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
LabelText("lblMess", "盘点单验证失败,请重试。", Color.Black);
|
|
}
|
|
break;
|
|
}
|
|
_Working = false;
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 线程输出文本
|
|
/// </summary>
|
|
/// <param name="name">控件名称</param>
|
|
/// <param name="txt">文本内容</param>
|
|
/// <param name="color">文本颜色</param>
|
|
public void LabelText(string name, string txt, Color color)
|
|
{
|
|
try
|
|
{
|
|
Invoke(new text(lbltext), new object[] { name, txt, color });
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
}
|
|
}
|
|
|
|
delegate void text(string name, string txt, Color color);
|
|
void lbltext(string name, string txt, Color color)
|
|
{
|
|
Label _Label = (Label)findControl(tlpCheckBill, name);
|
|
_Label.ForeColor = color;
|
|
_Label.Text = txt;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 在winform中查找控件
|
|
/// </summary>
|
|
/// <param ></param>
|
|
/// <param ></param>
|
|
/// <returns></returns>
|
|
private Control findControl(Control control, string controlName)
|
|
{
|
|
Control c1;
|
|
foreach (Control c in control.Controls)
|
|
{
|
|
if (c.Name == controlName)
|
|
{
|
|
return c;
|
|
}
|
|
else if (c.Controls.Count > 0)
|
|
{
|
|
c1 = findControl(c, controlName);
|
|
if (c1 != null)
|
|
{
|
|
return c1;
|
|
}
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
private void CheckBill_KeyDown(object sender, KeyEventArgs e)
|
|
{
|
|
switch (e.KeyCode)
|
|
{
|
|
case Keys.Escape:
|
|
this.Close();
|
|
break;
|
|
}
|
|
}
|
|
|
|
private void btnClose_Click(object sender, EventArgs e)
|
|
{
|
|
this.Close();
|
|
}
|
|
}
|
|
}
|