using ComponentFactory.Krypton.Toolkit;
using NXWMS.Client.Model.AppModels.Result.Instock;
using NXWMS.Client.Model.CoreModels;
using NXWMS.Services;
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 NXWMS.Forms.Instock.frmInstockChild
{
public partial class frmChildPrintMaterialLabelCode : KryptonForm
{
public frmChildPrintMaterialLabelCode()
{
InitializeComponent();
}
#region 全局变量
///
/// 收货单主键
///
public string ReceiptId { get; set; }
///
/// 数据库中的收货单所有数据(包括主、明细表)。
/// 未进行编辑过。
///
private WmsInReceiptResult ReceiptDataNotEdit = new WmsInReceiptResult();
///
/// 模板地址
///
private string _reportFolder = Application.StartupPath + "\\ReportMd\\";
#endregion
private void frmChildPrintMaterialLabelCode_Load(object sender, EventArgs e)
{
try
{
LoadWmsInReceiptDtlData();
}
catch (Exception ex)
{
KryptonMessageBox.Show(ex.Message);
}
}
///
/// 调用服务端接口,请求收货单明细表数据
///
///
private string LoadWmsInReceiptDtlData()
{
var result = WmsInstockService.wmsInReceiptService.GetWmsInReceiptDtlListForId(new WmsInReceiptResult { RECEIPT_ID = Convert.ToInt32(this.ReceiptId) });
if (result.Status == OperateStatus.Success)
{
ktb_ArrivalNo.Text = result.Data.RECEIPT_NO;
ktb_ArrivalNo.Enabled = false;
ktb_Receipter.Text = result.Data.RECEIPTER;
ktb_Receipter.Enabled = false;
kcmb_ReceiptType.Text = result.Data.RECEIPT_TYPE_NAME;
kcmb_ReceiptType.Enabled = false;
ktb_Describe.Text = result.Data.DESCRIBE;
ktb_Describe.Enabled = false;
if (result.Data.RECEIPT_TIME != new DateTime())
{
kdtp_ReceiptTime.Value = result.Data.RECEIPT_TIME;
kdtp_ReceiptTime.Enabled = false;
}
ReceiptDataNotEdit = result.Data;
kdgv_ReceiptDtlData.Rows.Clear();
foreach (WmsInReceiptDtlResult item in result.Data.WmsInReceiptDtlList)
{
int index = kdgv_ReceiptDtlData.Rows.Add();
kdgv_ReceiptDtlData.Rows[index].Cells[1].Value = item.RECEIPT_DTL_ID;
kdgv_ReceiptDtlData.Rows[index].Cells[2].Value = item.MATERIEL_CODE;
kdgv_ReceiptDtlData.Rows[index].Cells[3].Value = item.MATERIEL_NAME;
kdgv_ReceiptDtlData.Rows[index].Cells[4].Value = item.MATERIEL_SPEC;
kdgv_ReceiptDtlData.Rows[index].Cells[5].Value = item.BATCH_NO;
kdgv_ReceiptDtlData.Rows[index].Cells[6].Value = item.RECEIPT_DTL_QTY;
kdgv_ReceiptDtlData.Rows[index].Cells[7].Value = item.UNIT_CODE;
kdgv_ReceiptDtlData.Rows[index].Cells[8].Value = item.SUPPLIER_NAME;
kdgv_ReceiptDtlData.Rows[index].Cells[9].Value = item.PRODUCT_DATE;
kdgv_ReceiptDtlData.Rows[index].Cells[10].Value = item.EXP_DATE;
}
return string.Empty;
}
else
{
return result.Message;
}
}
private void kryptonButton1_Click(object sender, EventArgs e)
{
this.Close();
}
private void kbtn_PrintPartialLabel_Click(object sender, EventArgs e)
{
kbtn_PrintPartialLabel.Enabled = false;
kbtn_PrintAllLabel.Enabled = false;
try
{
DataTable dt = new DataTable();
DataColumn dc = new DataColumn("MaterialCode");
dt.Columns.Add(dc);
dc = new DataColumn("UnitCode");
dt.Columns.Add(dc);
dc = new DataColumn("MaterialName");
dt.Columns.Add(dc);
dc = new DataColumn("Specs");
dt.Columns.Add(dc);
dc = new DataColumn("BatchNo");
dt.Columns.Add(dc);
dc = new DataColumn("Qty");
dt.Columns.Add(dc);
dc = new DataColumn("UniqueLabel");
dt.Columns.Add(dc);
int rowsSelectedNum = 0;
foreach (DataGridViewRow item in kdgv_ReceiptDtlData.Rows)
{
DataGridViewCheckBoxCell checkCell = (DataGridViewCheckBoxCell)item.Cells[0];
object obj = checkCell.EditedFormattedValue;
if (Convert.ToBoolean(obj))
{
rowsSelectedNum++;
int receiptDtlId = Convert.ToInt32(item.Cells[1].Value);
WmsInReceiptDtlResult receiptDtlMd = ReceiptDataNotEdit.WmsInReceiptDtlList.FirstOrDefault(x => x.RECEIPT_DTL_ID == receiptDtlId);
DataRow dr = dt.NewRow();
dr["MaterialCode"] = receiptDtlMd.MATERIEL_CODE;
dr["UnitCode"] = receiptDtlMd.UNIT_CODE;
dr["MaterialName"] = receiptDtlMd.MATERIEL_NAME;
dr["Specs"] = receiptDtlMd.MATERIEL_SPEC;
dr["BatchNo"] = receiptDtlMd.BATCH_NO;
dr["Qty"] = receiptDtlMd.RECEIPT_DTL_QTY;
dr["UniqueLabel"] = receiptDtlMd.MATERIEL_CODE + "_" + receiptDtlMd.RECEIPT_DTL_ID;
dt.Rows.Add(dr);
}
}
if (rowsSelectedNum > 0)
{
DataSet dts = new DataSet();
dts.Tables.Add(dt);
FastReport.Report report = new FastReport.Report();
string filename = _reportFolder + "标签数据.frx";
report.Load(filename);
report.RegisterData(dts);
report.Prepare();
report.PrintSettings.ShowDialog = false;
report.Print();
report.Clear();
KryptonMessageBox.Show("打印成功!");
}
else
{
KryptonMessageBox.Show("请勾选需要打印的收货单明细行数据!!");
}
}
catch (Exception ex)
{
KryptonMessageBox.Show(ex.Message);
}
kbtn_PrintPartialLabel.Enabled = true;
kbtn_PrintAllLabel.Enabled = true;
}
private void kbtn_PrintAllLabel_Click(object sender, EventArgs e)
{
kbtn_PrintPartialLabel.Enabled = false;
kbtn_PrintAllLabel.Enabled = false;
try
{
DataTable dt = new DataTable();
DataColumn dc = new DataColumn("MaterialCode");
dt.Columns.Add(dc);
dc = new DataColumn("UnitCode");
dt.Columns.Add(dc);
dc = new DataColumn("MaterialName");
dt.Columns.Add(dc);
dc = new DataColumn("Specs");
dt.Columns.Add(dc);
dc = new DataColumn("BatchNo");
dt.Columns.Add(dc);
dc = new DataColumn("Qty");
dt.Columns.Add(dc);
dc = new DataColumn("UniqueLabel");
dt.Columns.Add(dc);
foreach (WmsInReceiptDtlResult item in ReceiptDataNotEdit.WmsInReceiptDtlList)
{
DataRow dr = dt.NewRow();
dr["MaterialCode"] = item.MATERIEL_CODE;
dr["UnitCode"] = item.UNIT_CODE;
dr["MaterialName"] = item.MATERIEL_NAME;
dr["Specs"] = item.MATERIEL_SPEC;
dr["BatchNo"] = item.BATCH_NO;
dr["Qty"] = item.RECEIPT_DTL_QTY;
dr["UniqueLabel"] = item.MATERIEL_CODE + "_" + item.RECEIPT_DTL_ID;
dt.Rows.Add(dr);
}
DataSet dts = new DataSet();
dts.Tables.Add(dt);
FastReport.Report report = new FastReport.Report();
string filename = _reportFolder + "标签数据.frx";
report.Load(filename);
report.RegisterData(dts);
report.Prepare();
#if DEBUG
report.Prepare(); //准备
report.ShowPrepared(); //显示
#else
report.PrintSettings.ShowDialog = false;
report.Print();
report.Clear();
#endif
KryptonMessageBox.Show("打印成功!");
}
catch (Exception ex)
{
KryptonMessageBox.Show(ex.Message);
}
kbtn_PrintPartialLabel.Enabled = true;
kbtn_PrintAllLabel.Enabled = true;
}
}
}