宜昌华友成品库管理软件
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

721 lines
23 KiB

using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using System.Collections;
namespace SSLMS.MobileUI.uc
{
public partial class ucMANAGE_INOUT : UserControl
{
private PLAN_MAIN _mPLAN_MAIN;
private PLAN_TYPE _mPLAN_TYPE;
private bool _bZuPan
{
get { return !string.IsNullOrEmpty(this.txtSTOCK_BARCODE.Text) && "1".Equals(this._mPLAN_TYPE._plan_type_inout); }
}
private bool _bAddSTOCK
{
get
{
string AREA_ID = this.cmbAREA.SelectedValue.ToString();
string STOCK_BARCODE = this.txtSTOCK_BARCODE.Text.Trim();
string sResult = string.Empty; ;
return this._bZuPan && ("1".Equals(this._mPLAN_TYPE._plan_type_inout)) && !Program._I_StorageService.STORAGE_LIST_CheckStock_1(STOCK_BARCODE, out sResult);
}
}
public ucMANAGE_INOUT()
{
InitializeComponent();
}
public ucMANAGE_INOUT(string PLAN_ID)
{
this.InitializeComponent();
try
{
this._mPLAN_MAIN = Program._I_PlanService.PLAN_GetModel(Convert.ToInt32(PLAN_ID));
this._mPLAN_TYPE = Program._I_PlanService.PLAN_GetModel_1(_mPLAN_MAIN._plan_type_code);
this.cmbWAREHOUSE_Bind();
if ("1".Equals(this._mPLAN_TYPE._plan_type_inout))
{
this.cmbSTOCK_Bind();
cmbCELLMODEL_Bind();
}
//if ("2".Equals(this._mPLAN_TYPE._plan_type_inout))
//{
// this.plOperation.Visible = true;
//}
this.PLAN_LIST_Bind();
this.txtSTOCK_BARCODE.Focus();
}
catch (Exception ex)
{
MessageBox.Show("系统异常" + ex.Message);
}
}
private void cbWAREHOUSE_SelectedValueChanged(object sender, EventArgs e)
{
if (this.cmbWAREHOUSE.SelectedValue != null)
{
string WAREHOUSE_ID = Convert.ToString(this.cmbWAREHOUSE.SelectedValue);
this.cmbAREA_Bind(WAREHOUSE_ID);
}
}
private void cbAREA_SelectedValueChanged(object sender, EventArgs e)
{
if (cmbAREA.SelectedValue != null)
{
string AREA_ID = this.cmbAREA.SelectedValue.ToString();
this.cmbCELL_Bind(AREA_ID);
this.STORAGE_LIST_Bind();
}
}
private void cmbWAREHOUSE_Bind()
{
try
{
cmbWAREHOUSE.ValueMember = "WAREHOUSE_ID";
cmbWAREHOUSE.DisplayMember = "WAREHOUSE_NAME";
cmbWAREHOUSE.DataSource = Program._I_WHService.WAREHOUSE_GetList();
}
catch (Exception ex)
{
MessageBox.Show("系统异常" + ex.Message);
}
}
private void cmbAREA_Bind(string WAREHOUSE_ID)
{
try
{
cmbAREA.ValueMember = "AREA_ID";
cmbAREA.DisplayMember = "AREA_NAME";
cmbAREA.DataSource = Program._I_WHService.AREA_GetList_1(WAREHOUSE_ID, SSLMS.Model.AREA_TYPE.xuniku.ToString());
}
catch (Exception ex)
{
MessageBox.Show("系统异常" + ex.Message);
}
}
private void cmbCELL_Bind(string AREA_ID)
{
try
{
cbCELL.ValueMember = "CELL_ID";
cbCELL.DisplayMember = "CELL_NAME";
cbCELL.DataSource = Program._I_WHService.CELL_GetList(string.Empty, AREA_ID, SSLMS.Model.CELL_TYPE.station.ToString(), string.Empty);
}
catch (Exception ex)
{
MessageBox.Show("系统异常" + ex.Message);
}
}
private void cmbCELLMODEL_Bind()
{
this.cmbCELLMODEL.ValueMember = "value";
cmbCELLMODEL.DisplayMember = "name";
cmbCELLMODEL.DataSource = Program._I_SystemService.ITEM_LIST_GetList("CELL_MODEL");
}
private void cmbSTOCK_Bind()
{
try
{
this.cbSTOCK.ValueMember = "GOODS_ID";
this.cbSTOCK.DisplayMember = "GOODS_NAME";
Hashtable ht = new Hashtable();
this.cbSTOCK.DataSource = Program._I_GoodsService.GOODS_GetList(this.cmbAREA.SelectedValue.ToString(), "0");
}
catch (Exception ex)
{
MessageBox.Show("系统异常" + ex.Message);
}
}
private void PLAN_LIST_Bind()
{
if ("1".Equals(this._mPLAN_TYPE._plan_type_inout))
{
this.uclIO_PLAN_LIST.listColumn = "<Field Column=\"MANAGE_LIST_QUANTITY\" fieldType=\"text\" bedit=\"true\" dbType=\"Decimal\" Header=\"入库数量\" index=\"31\" />";
}
this.uclIO_PLAN_LIST.bCheck = true;
try
{
this.uclIO_PLAN_LIST.listTable = "V_PLAN_LIST";
this.uclIO_PLAN_LIST.listXml = "PLAN_LIST";
this.uclIO_PLAN_LIST.listWhere = string.Format("AND PLAN_ID ={0} /*AND PLAN_LIST_QUANTITY>PLAN_LIST_FINISHED_QUANTITY */ AND GOODS_PROPERTY LIKE '%'", this._mPLAN_MAIN._plan_id);
this.uclIO_PLAN_LIST.colGroup = "GOODS_TYPE_ID";
this.uclIO_PLAN_LIST.colSplit = "GOODS_PROPERTY";
this.uclIO_PLAN_LIST.Init();
foreach (TabPage tp in this.uclIO_PLAN_LIST.tabGoodsType.TabPages)
{
DataTable dt = (tp.Tag as ucGrid).dgv.DataSource as DataTable;
if (null != dt)
{
dt.ColumnChanged += new DataColumnChangeEventHandler(this.dtIO_PLAN_LIST_ColumnChanged);
}
}
this.uclIO_PLAN_LIST.SetEditColumns("MANAGE_LIST_QUANTITY", Color.AliceBlue);
}
catch (Exception ex)
{
MessageBox.Show("系统异常" + ex.Message);
}
}
private void STORAGE_LIST_Bind()
{
if ("2".Equals(this._mPLAN_TYPE._plan_type_inout))
{
this.uclST_STORAGE_LIST.listColumn = "<Field Column=\"MANAGE_LIST_QUANTITY\" fieldType=\"text\" bedit=\"true\" dbType=\"Decimal\" Header=\"出库数量\" index=\"14\" />";
this.uclST_STORAGE_LIST.bCheck = true;
}
string AREA_ID = this.cmbAREA.SelectedValue.ToString();
string STOCK_BARCODE = this.txtSTOCK_BARCODE.Text.Trim();
this.uclST_STORAGE_LIST.listXml = "STORAGE_LIST";
this.uclST_STORAGE_LIST.listTable = "V_STORAGE_LIST";
if ("1".Equals(this._mPLAN_TYPE._plan_type_inout))
{
this.uclST_STORAGE_LIST.listWhere = string.Format(" AND AREA_ID = {0} AND STOCK_BARCODE LIKE '{1}' ", AREA_ID, STOCK_BARCODE);
}
if ("2".Equals(this._mPLAN_TYPE._plan_type_inout))
{
this.uclST_STORAGE_LIST.listWhere = string.Format(@" AND AREA_ID = {0} AND STOCK_BARCODE = '{1}' AND GOODS_PROPERTY LIKE '%'
AND (
select count(0) from plan_list where V_STORAGE_LIST.Goods_Id= PLAN_LIST.Goods_Id
AND PLAN_LIST_QUANTITY>PLAN_LIST_FINISHED_QUANTITY
AND PLAN_LIST.GOODS_PROPERTY LIKE '%'
AND PLAN_ID = {2}
)>0 ",
AREA_ID,
STOCK_BARCODE,
this._mPLAN_MAIN._plan_id);
}
this.uclST_STORAGE_LIST.colGroup = "GOODS_TYPE_ID";
this.uclST_STORAGE_LIST.colSplit = "GOODS_PROPERTY";
this.uclST_STORAGE_LIST.Init();
this.uclST_STORAGE_LIST.SetEditColumns("MANAGE_LIST_QUANTITY", Color.AliceBlue);
foreach (TabPage tp in this.uclST_STORAGE_LIST.tabGoodsType.TabPages)
{
DataTable dt = (tp.Tag as ucGrid).dgv.DataSource as DataTable;
if (null != dt)
{
dt.ColumnChanged += new DataColumnChangeEventHandler(this.dtST_STORAGE_LIST_ColumnChanged);
}
}
}
private void dtIO_PLAN_LIST_ColumnChanged(object sender, DataColumnChangeEventArgs e)
{
try
{
bool bResult = true;
string sResult = string.Empty;
switch (e.Column.ColumnName)
{
case "MANAGE_LIST_QUANTITY":
//bResult = e.ProposedValue.ToString() != string.Empty && Convert.ToInt32(e.ProposedValue) >= 0;
//sResult = string.Format(" must Greater than 0");
//if (!bResult)
//{
// break;
//}
bResult = Convert.ToDecimal(e.Row["PLAN_LIST_QUANTITY"]) - Convert.ToDecimal(e.Row["PLAN_LIST_ORDERED_QUANTITY"]) >= Convert.ToDecimal(e.ProposedValue);
sResult = string.Format("入库数量错误");
if (!bResult)
{
break;
}
break;
}
if (bResult)
{
e.Row.RowError = null;
e.Row.SetColumnError(e.Column, null);
}
else
{
e.Row.RowError = sResult;
e.Row.SetColumnError(e.Column, sResult);
}
}
catch (Exception ex)
{
MessageBox.Show("系统异常" + ex.Message);
}
}
private void dtST_STORAGE_LIST_ColumnChanged(object sender, DataColumnChangeEventArgs e)
{
try
{
bool bResult = true;
string sResult = string.Empty;
switch (e.Column.ColumnName)
{
case "MANAGE_LIST_QUANTITY":
bResult = Convert.ToDecimal(e.ProposedValue) >= 0;
sResult = string.Format("出库数量应大于0 ");
if (!bResult)
{
break;
}
bResult = Convert.ToDecimal(e.Row["STORAGE_LIST_QUANTITY"]) - Convert.ToDecimal(0.00) >= Convert.ToDecimal(e.ProposedValue);
sResult = string.Format("出库数量错误");
if (!bResult)
{
break;
}
break;
}
if (bResult)
{
e.Row.RowError = null;
e.Row.SetColumnError(e.Column, null);
}
else
{
e.Row.RowError = sResult;
e.Row.SetColumnError(e.Column, sResult);
}
}
catch (Exception ex)
{
MessageBox.Show("系统异常" + ex.Message);
}
}
private void btnSave_Click(object sender, EventArgs e)
{
if ("1" == this._mPLAN_TYPE._plan_type_inout)
{
if (this.txtSTOCK_BARCODE.Text.TrimEnd() == string.Empty)
{
MessageBox.Show( "请扫描或输入托盘条码");
return;
}
if (this.txtSTOCK_BARCODE.Text.TrimEnd().Length != 6)
{
MessageBox.Show("条码长度应为6位");
return;
}
for (int i = 0; i < this.uclIO_PLAN_LIST.tabGoodsType.TabPages.Count; i++)
{
MyDataGrid mdgv = (this.uclIO_PLAN_LIST.tabGoodsType.TabPages[i].Tag as ucGrid).dgv;
DataTable dt = mdgv.DataSource as DataTable;
if (null == dt)
{
MessageBox.Show("请选择要入库的物料");
return;
}
if (dt.HasErrors)
{
string sError = string.Empty;
foreach (DataRow dr in dt.Rows)
{
sError += "\n" + dr.RowError;
}
MessageBox.Show("数据校验失败" + sError);
return;
}
}
}
if ("2" == this._mPLAN_TYPE._plan_type_inout)
{
for (int i = 0; i < this.uclST_STORAGE_LIST.tabGoodsType.TabPages.Count; i++)
{
MyDataGrid mdgv = (this.uclST_STORAGE_LIST.tabGoodsType.TabPages[i].Tag as ucGrid).dgv;
DataTable dt = mdgv.DataSource as DataTable;
if (null == dt)
{
MessageBox.Show( "请选择要出库的库存物料");
return;
}
if (dt.HasErrors)
{
string sError = string.Empty;
foreach (DataRow dr in dt.Rows)
{
sError += "\n" + dr.RowError;
}
MessageBox.Show("数据校验失败" + sError);
return;
}
}
}
if (this._bZuPan)
{
if (this.cmbCELLMODEL.SelectedValue == null)
{
this.cmbCELLMODEL.Visible = this._bZuPan;
this.cmbCELLMODEL.Visible = this._bZuPan;
MessageBox.Show( "请选择货物规格");
return;
}
}
if (this._bAddSTOCK)
{
if (this.cbSTOCK.SelectedValue == null)
{
MessageBox.Show("请选择托盘类型");
this.cbSTOCK.Visible = this._bAddSTOCK;
return;
}
}
bool bResult = true;
string sResult = string.Empty;
string strMessageShow = string.Empty;
if (Program._I_StorageService.StorageListCheckInOtherArea(this.txtSTOCK_BARCODE.Text.TrimEnd(), this.cmbAREA.SelectedValue.ToString(), out sResult))
{
MessageBox.Show( sResult);
return;
}
MANAGE_MAIN mIO_MANAGE_INOUT = new MANAGE_MAIN();
int MANAGE_ID = 0;
mIO_MANAGE_INOUT._plan_id = this._mPLAN_MAIN._plan_id;
mIO_MANAGE_INOUT._manage_type_code = this._mPLAN_TYPE._plan_type_remark;
mIO_MANAGE_INOUT._manage_status = SSLMS.Model.MANAGE_STATUS.Waitting.ToString();
if (this._bZuPan)
{
mIO_MANAGE_INOUT._stock_barcode = this.txtSTOCK_BARCODE.Text.TrimEnd();
//mIO_MANAGE_INOUT.CELL_MODEL = this.tscbCELL_MODEL.ComboBox.SelectedValue.ToString();
}
else
{
mIO_MANAGE_INOUT._stock_barcode = string.Empty;
}
if ("1" == this._mPLAN_TYPE._plan_type_inout)
{
mIO_MANAGE_INOUT._end_cell_id = Convert.ToInt32(this.cbCELL.SelectedValue);
}
if ("2" == this._mPLAN_TYPE._plan_type_inout)
{
mIO_MANAGE_INOUT._start_cell_id = Convert.ToInt32(this.cbCELL.SelectedValue); ;
}
mIO_MANAGE_INOUT._manage_operator = Program._USER._user_name;
IList<MANAGE_LIST> lsMANAGE_LIST_INOUT = new List<MANAGE_LIST>();
if ("1".Equals(this._mPLAN_TYPE._plan_type_inout))
{
foreach (TabPage tp in this.uclIO_PLAN_LIST.tabGoodsType.TabPages)
{
MyDataGrid dgvPLAN_LIST = (tp.Tag as ucGrid).dgv;
foreach (DataRow drPLAN_LIST in (tp.Tag as ucGrid).CommonCol().Rows)
{
if (!drPLAN_LIST.IsNull("check") && Convert.ToBoolean(drPLAN_LIST["check"]) == true)
{
MANAGE_LIST mIO_MANAGE_LIST = new MANAGE_LIST();
//DataRow drPLAN_LIST = (dgvRow.DataBoundItem as DataRowView).Row;
mIO_MANAGE_LIST._goods_id = Convert.ToInt32(drPLAN_LIST["GOODS_ID"]);
mIO_MANAGE_LIST._goods_property = Convert.ToString(drPLAN_LIST["GOODS_PROPERTY"]);
mIO_MANAGE_LIST._plan_list_id = Convert.ToInt32(drPLAN_LIST["PLAN_LIST_ID"]);
mIO_MANAGE_LIST._manage_list_quantity = Convert.ToDecimal(drPLAN_LIST["MANAGE_LIST_QUANTITY"]);
if (mIO_MANAGE_LIST._manage_list_quantity <= 0)
{
MessageBox.Show( "入库数量错误");
return;
}
mIO_MANAGE_LIST._manage_list_remark = Convert.ToString(drPLAN_LIST["PLAN_LIST_REMARK"]);
lsMANAGE_LIST_INOUT.Add(mIO_MANAGE_LIST);
}
}
}
}
if ("2".Equals(this._mPLAN_TYPE._plan_type_inout))
{
foreach (TabPage tp in this.uclST_STORAGE_LIST.tabGoodsType.TabPages)
{
MyDataGrid dgvSTORAGE_LIST = (tp.Tag as ucGrid).dgv;
foreach (DataRow drSTORAGE_LIST in (tp.Tag as ucGrid).CommonCol().Rows)
{
if (!drSTORAGE_LIST.IsNull("check") && Convert.ToBoolean(drSTORAGE_LIST["check"]))
{
MANAGE_LIST mIO_MANAGE_LIST = new MANAGE_LIST();
//DataRow drSTORAGE_LIST = (dgvRow.DataBoundItem as DataRowView).Row;
mIO_MANAGE_LIST._goods_id = Convert.ToInt32(drSTORAGE_LIST["GOODS_ID"]);
mIO_MANAGE_LIST._goods_property = Convert.ToString(drSTORAGE_LIST["GOODS_PROPERTY"]);
mIO_MANAGE_LIST._storage_list_id = Convert.ToInt32(drSTORAGE_LIST["STORAGE_LIST_ID"]);
mIO_MANAGE_LIST._manage_list_quantity = Convert.ToDecimal(drSTORAGE_LIST["MANAGE_LIST_QUANTITY"]);
if (mIO_MANAGE_LIST._manage_list_quantity <= 0)
{
MessageBox.Show( "出库数量错误");
return;
}
mIO_MANAGE_LIST._manage_list_remark = Convert.ToString(drSTORAGE_LIST["STORAGE_LIST_REMARK"]);
lsMANAGE_LIST_INOUT.Add(mIO_MANAGE_LIST);
}
}
}
}
if (lsMANAGE_LIST_INOUT.Count < 1)
{
if ("1".Equals(this._mPLAN_TYPE._plan_type_inout))
{
MessageBox.Show( "请选择要入库的物料");
}
if ("2".Equals(this._mPLAN_TYPE._plan_type_inout))
{
MessageBox.Show("请选择要出库的库存物料");
}
return;
}
string sPLAN_LIST_ID = string.Empty;
MANAGE_LIST[] aMANAGE_LIST_INOUT = null;
if ("2".Equals(this._mPLAN_TYPE._plan_type_inout))
{
sPLAN_LIST_ID = this.uclIO_PLAN_LIST.GetCheckColumns("PLAN_LIST_ID", new char[] { ',' });
if (string.IsNullOrEmpty(sPLAN_LIST_ID))
{
MessageBox.Show("请选择要出库的物料");
return;
}
bResult = Program._I_ManageService.ManageFindManageListPlanListID(lsMANAGE_LIST_INOUT.ToArray<MANAGE_LIST>(), sPLAN_LIST_ID, out sResult, out aMANAGE_LIST_INOUT);
if (!bResult)
{
MessageBox.Show(sResult);
return;
}
}
if (MessageBox.Show("是否保存?", "系统提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question,MessageBoxDefaultButton.Button1) == DialogResult.No)
{
return;
}
if ("1".Equals(this._mPLAN_TYPE._plan_type_inout))
{
bResult = Program._I_ManageService.ManageCreateCommonTask(mIO_MANAGE_INOUT, lsMANAGE_LIST_INOUT.ToArray<MANAGE_LIST>(), false, true, out sResult, out MANAGE_ID);
}
if ("2".Equals(this._mPLAN_TYPE._plan_type_inout))
{
bResult = Program._I_ManageService.ManageCreateCommonTask(mIO_MANAGE_INOUT, aMANAGE_LIST_INOUT, false, true, out sResult, out MANAGE_ID);
}
if (bResult)
{
MessageBox.Show("保存成功!\n");
if (this._bAddSTOCK && this.cbSTOCK.SelectedValue != null)
{
bResult = Program._I_ManageService.ManageCreatePalletEntryTask(Program._USER, Convert.ToInt32(this.cbCELL.SelectedValue), Convert.ToInt32(this.cbSTOCK.SelectedValue), 1, this.txtSTOCK_BARCODE.Text.Trim(), false, false, out sResult, out MANAGE_ID);
}
this.PLAN_LIST_Bind();
this.STORAGE_LIST_Bind();
}
else
{
MessageBox.Show( string.Format("保存失败!\n{0}", sResult));
}
this.txtSTOCK_BARCODE.Focus();
this.txtSTOCK_BARCODE.SelectAll();
}
private void txt_KeyDown(object sender, KeyEventArgs e)
{
try
{
if (!Keys.Enter.Equals(e.KeyCode))
{
return;
}
this.STORAGE_LIST_Bind();
}
catch (Exception ex)
{
MessageBox.Show("系统异常" + ex.Message);
}
}
}
}