用友T6-ERP系统技术解析(二)销售订单(一)
来源:互联网 发布:js urlencoded编码 = 编辑:程序博客网 时间:2024/05/03 19:03
- 用友T6-ERP系统技术解析(二)销售订单(一)
销售订单这块是对销售产生订单,可以新增一张销售订单,如果新增的订单有误,可以对订单进行修改,也可以删除,如果确认订单无误后可以对订单进行审核,一但审核这张订单就不能进行修改了;还可以根据条件查询出你新增的订单,可以将订单导出Excel;界面如图(2.2-1)和 图(2.2-2)
图(2.2-1)
图(2.2-2)
从界面上可以看到的控件有
控件名称
说明
Label(文字)
控件可以在工具箱直接拖动至窗体,拖至窗体后右击属性可以修改控件的样式和各种属性,还可以编辑事件。
ComboBox(下拉框)
LineTxtBox(带下划线文本框)
DataGridView(表格)
GroupBox(可选标题框架)
Button(按钮)
toolStrip(菜单控件)
CheckBox(选项)
DateTimerPiacker(日期控件)
下拉框控件
作用:绑定可选择的值
带下划线的文本框
作用:显示文字或输入文字
表格控件
作用:显示数据
菜单控件
作用:显示你所需要的菜单选项
按钮控件
作用:点击时触发某事件
时间控件
作用:显示或选择时间
可选标题控件
作用:可随意输入你想要的标题
表与关系
图(2.2-3)
表1dbo.BalanceSalesOrderSheet
列名 数据类型 主键/外键 说明
TheSalesOrderID
int - Identity
主键
销售订单ID
Business数据类型ID
int
外键
业务类型ID
DocumentID
int
外键
单据ID
Rate
nchar (10)
税率
CustomerID
int
外键
客户ID
TermsOfPayment
nchar (10)
付款条件
DepartmentID
int
外键
部门ID
TheOperatorID_Salesman
int
外键
操作员ID_业务员
主键te
nchar (20)
备注
CurrencyID
int
外键
币别ID
表2dbo.BusinessTypeTable
列名 数据类型 主键/外键 说明
BusinessTypeID
int - Identity
主键
业务类型ID
BusinessTypeNname
nchar (20)
业务类型名称
表3dbo.TheDocumentsTable
列名 数据类型 主键/外键 说明
DocumentID
int - Identity
主键
单据ID
NameOfDocuments
nchar (10)
单据名称
DocumentNumber
nchar (20)
单据编号
DateOfDocuments
datetime
单据日期
TypeOfDocumen
nchar (10)
单据类型
InThisPaper
nchar (100)
摘要
表4 dbo.TheCustomerTable
列名 数据类型 Default 主键/外键 说明
CustomerID
int - Identity
主键
客户ID
TheCustomerName
nchar (20)
客户名称
Customer
nchar (10)
客户简称
ThePhone
nchar (20)
电话
ClientCoding
nchar (20)
客户编码
Ein
nchar (20)
税号
CustomerAddress
nchar (10)
客户地址
CustomerBank
nchar (50)
客户银行
CustomerAccount
nchar (20)
客户账号
TheCustomerTypeID
int
外键
客户类别ID
CreditLimit
nchar (10)
信用额度
CreditDate
nchar (10)
信用天数
CreditGrade
nchar (10)
信用等级
ClientCompany
nchar (50)
外键
客户公司
Effective主键
bit
((1))
外键
有效否
表5 dbo.DepartmentTable
列名 数据类型 Default 主键/外键 说明
DepartmentID
int - Identity
主键
部门ID
DepartmentName
nchar (20)
部门名称
DepartmentCode
nchar (20)
部门编码
StaffID_Principal
int
外键
负责人ID
Phone
nchar (20)
电话
Address
nchar (100)
地址
Remark
nchar (100)
备注
DepartmenTypeID
int
外键
部门分类ID
Effective主键
bit
((1))
Effective主键
表6dbo.TheOperatorTable
列名 数据类型 主键/外键 说明
TheOperatorID
int - Identity
主键
操作员ID
TheOperatorCode
nchar (20)
操作员编码
TheOperatorTypeID
int
外键
操作类型ID
TheOperatorTypeName
nchar (30)
操作员全名
Call
nchar (10)
称呼
主键te
nchar (30)
备注
DepartmentID
int
外键
部门ID
ContactAddress
nchar (20)
联系地址
ContactPhoneNumber
nchar (20)
联系电话
nchar (20)
Password
nchar (10)
密码
Pictures
image
图片
OperationTypeID
int
外键
操作类型ID
表7dbo.SalesTypeTable
列名 数据类型 主键/外键 说明
SalesTypeID
int - Identity
主键
销售类型ID
SalesTypeName
nchar (20)
销售类型名称
表8dbo.CurrencyTable
列名 数据类型 主键/外键 说明
CurrencyID
int - Identity
主键
币别ID
NameOfCurrency
nchar (20)
币别名称
Currency
nchar (10)
汇率
CurrencyCode
nchar (20)
币别代码
表9dbo.SalesOrderSheet
列名 数据类型 主键/外键 说明
SalesOrderDetailID
int - Identity
主键
销售订单明细ID
TheInventoryID
int
外键
存货ID
Quantity
nchar (10)
数量
Amount
decimal (18, 3)
金额
TheSalesOrderID
int
外键
销售订单ID
表10dbo.TheInventoryTable
列名 数据类型 主键/外键 说明
TheInventoryID
int - Identity
主键
存货ID
InventoryClassificationID
int
外键
存货分类ID
ProductID
int
外键
产品ID
WarehouseID
int
外键
仓库ID
TheExistingQuantity
nchar (10)
现存数量
Amount
decimal (18, 3)
金额
Quantity
decimal (18, 3)
数量
DocumentID
int
外键
单据ID
InventoryUnit
nchar (10)
存货单位
表11dbo.TheProductTable
列名 数据类型 主键/外键 说明
ProductID
int - Identity
主键
产品ID
ProductCode
nchar (20)
产品编码
ProductName
nchar (20)
产品名称
ProductSpecificationsID
int
外键
产品规格型号ID
TheMeasuringUnitID
int
外键
产品计量单位ID
TheUnitPrice
decimal (18, 3)
单价
TaxPrice
decimal (18, 3)
含税单价
ProductionBatchNumber
nchar (20)
生产批号
ExpirationDate
nchar (10)
保质期
DateOfProduction
datetime
生产日期
ProductTypeID
int
外键
产品类型
ExpiryDate
datetime
失效日期
表12dbo.ProductSpecificationTable
列名 数据类型 主键/外键 说明
ProductSpecificationsID
int - Identity
主键
产品规格型号ID
ProductSpecificationModelName
nchar (20)
产品规格型号名称
表13dbo.ProductUnitsTable
列名 数据类型 主键/外键 说明
TheMeasuringUnitID
int - Identity
主键
产品计量单位ID
ProductMeasuringUnitName
nchar (10)
产品计量单位名称
2.2.1新增功能实现
首先,在窗体初始化的时候可以看到界面上的控件都是静止启用的,表格也是禁止编辑的如 图(2.2-4),在点击新增后,界面上的控件启用就会有个逻辑的控制如 图(2.2-5),在双击DGV的时候出弹出一个可选择商品的DGV如 图(2.2-6)选定需要添加的商品再双击选择商品的DGV,这样商品就会传值到销售订单的DGV里面了如图(2.2-7),然后把整个销售订单填写完整,在填写税率的时候将会自动把无税单价计算出来,填写数量的时候将会自动计算金额如图(2.2-8),当把订单填写完整后点击保存,系统将会自动出现一个唯一的订单号和获取当前的时间为订单日期,同时弹出一个窗口提示新增成功 如图(2.2-9)新增成功后点击确定后界面上的控件的启用又进入了一个逻辑控制的状态,同时刷新订单页数 如图(2.3-1)
图(2.2-4)
第一步:数据库存储过程
if(@Type='frm_SalesOrder_BingDingcboSellDepartment')--绑定销售部门beginSELECT LTRIM(rtrim( DepartmentID)) as DepartmentID,--部门ID
LTRIM(rtrim( DepartmentName)) as DepartmentName --部门名称FROM DepartmentTableEndif(@Type='frm_SalesOrder_BingDingcboOperationPerson')--绑定业务员beginSELECT LTRIM(rtrim( TheOperatorID)) as TheOperatorID, --操作员ID
LTRIM(rtrim( TheOperatorTypeName)) as TheOperatorTypeName --操作员名称FROM TheOperatorTable --操作员表endif(@Type='frm_SalesOrder_BingDingcboOperationType')--绑定业务类型beginSELECT LTRIM(rtrim( BusinessTypeID)) as BusinessTypeID, --业务类型ID
LTRIM(rtrim(BusinessTypeNname)) as BusinessTypeNname --业务类型名称FROM BusinessTypeTable --业务类型表end if(@Type='frm_SalesOrder_BingDingcboSalesType')--绑定销售类型beginSELECT LTRIM(rtrim(SalesTypeID)) as SalesTypeID , --销售类型ID
LTRIM(rtrim(SalesTypeName))as SalesTypeName --销售类型名称FROM SalesTypeTable --销售类型表Endif(@Type='frm_SalesOrder_BingDingcboMoneyType')--绑定币别beginSELECT LTRIM(rtrim(CurrencyID)) as CurrencyID,--币别ID
LTRIM(rtrim( NameOfCurrency)) as NameOfCurrency --币别名称FROM CurrencyTableendif(@Type='frm_SalesOrder_BingDingcboTermsOfPayment')--绑定付款条件beginSELECT LTRIM(rtrim(TermsOfPaymentID)) as TermsOfPaymentID, --付款条件ID
LTRIM(rtrim( TermsOfPaymentName)) as TermsOfPaymentName --付款条件名称FROM TermsOfPaymentTable --付款条件表endif(@Type='frm_SalesOrder_BingDingcboCustomer')--绑定客户简称beginSELECT LTRIM(rtrim(CustomerID)) as CustomerID,--客户ID
LTRIM(rtrim(Customer)) as Customer --客户简称FROM TheCustomerTable --客户表endif(@Type='frm_SalesOrder_SelectBalanceSalesOrderSheet')--查询销售订单beginSELECT BalanceSalesOrderSheet.TheSalesOrderID AS 销售订单ID, BalanceSalesOrderSheet.BusinessTypeID AS 业务类型ID, BalanceSalesOrderSheet.DocumentID AS 单据ID, BalanceSalesOrderSheet.Rate AS 税率, BalanceSalesOrderSheet.CustomerID AS 客户ID, BalanceSalesOrderSheet.TermsOfPaymentID AS 付款条件ID, BalanceSalesOrderSheet.DepartmentID AS 部门ID, BalanceSalesOrderSheet.TheOperatorID_Salesman AS 业务员ID, BalanceSalesOrderSheet.Note AS 备注, BalanceSalesOrderSheet.CurrencyID AS 币别ID, TheDocumentsTable.DocumentNumber AS 单据编号, TheDocumentsTable.DateOfDocuments AS 单据日期, DepartmentTable.DepartmentName AS 部门名称, TheOperatorTable.TheOperatorTypeName AS 经手人, CurrencyTable.NameOfCurrency AS 币别名称, TermsOfPaymentTable.TermsOfPaymentName AS 付款条件名称, TheCustomerTable.Customer AS 客户简称, BalanceSalesOrderSheet.SalesTypeID AS 销售类型ID, CurrencyTable.Currency AS 汇率, BalanceSalesOrderSheet.ReviewWhether AS 审核否FROM BalanceSalesOrderSheet LEFT OUTER JOIN TheDocumentsTable ON BalanceSalesOrderSheet.DocumentID = TheDocumentsTable.DocumentID LEFT OUTER JOIN TheCustomerTable ON BalanceSalesOrderSheet.CustomerID = TheCustomerTable.CustomerID LEFT OUTER JOIN DepartmentTable ON BalanceSalesOrderSheet.DepartmentID = DepartmentTable.DepartmentID LEFT OUTER JOIN CurrencyTable ON BalanceSalesOrderSheet.CurrencyID = CurrencyTable.CurrencyID LEFT OUTER JOIN TermsOfPaymentTable ON BalanceSalesOrderSheet.TermsOfPaymentID = TermsOfPaymentTable.TermsOfPaymentID LEFT OUTER JOIN TheOperatorTable ON BalanceSalesOrderSheet.TheOperatorID_Salesman = TheOperatorTable.TheOperatorIDEndif(@Type='frm_SalesOrder_SelectdgvSalesOrder')--绑定明细DGVbeginSELECT SalesOrderSheet.SalesOrderDetailID AS 销售订单明细ID, SalesOrderSheet.TheInventoryID AS 存货ID, TheInventoryTable.ProductID AS 产品ID, TheProductTable.ProductCode AS 产品编码, TheProductTable.ProductName AS 产品名称, TheProductTable.ProductSpecificationsID AS 产品规格型号ID, ProductSpecificationTable.ProductSpecificationModelName AS 产品规格型号名称, TheProductTable.TheMeasuringUnitID AS 产品计量单位ID, ProductUnitsTable.ProductMeasuringUnitName AS 产品计量单位名称, TheProductTable.TheUnitPrice AS 单价, SalesOrderSheet.TheSalesOrderID AS 销售订单ID, SalesOrderSheet.Amount AS 金额, SalesOrderSheet.Quantity AS 数量, TheProductTable.TaxPrice AS 含税单价FROM SalesOrderSheet INNER JOIN TheInventoryTable ON SalesOrderSheet.TheInventoryID = TheInventoryTable.TheInventoryID INNER JOIN TheProductTable ON TheInventoryTable.ProductID = TheProductTable.ProductID INNER JOIN ProductSpecificationTable ON TheProductTable.ProductSpecificationsID = ProductSpecificationTable.ProductSpecificationsID INNER JOIN ProductUnitsTable ON TheProductTable.TheMeasuringUnitID = ProductUnitsTable.TheMeasuringUnitID where SalesOrderSheet.TheSalesOrderID=@TheSalesOrderIDEnd
第二步:服务端代码
DALPublic.DALMethod myDALMethod = new DALPublic.DALMethod(); [OperationContract] public DataSet frm_SalesOrder_BingDingcboSellDepartment()//绑定销售部门 { SqlParameter[] SQlCMDpas = { new SqlParameter("@Type", SqlDbType.Char), }; SQlCMDpas[0].Value = "frm_SalesOrder_BingDingcboSellDepartment"; DataTable dt = myDALMethod.QueryDataTable("销售管理_frm_SalesOrder", SQlCMDpas); DataSet ds = new DataSet(); ds.Tables.Add(dt); return ds; } [OperationContract] public DataSet frm_SalesOrder_BingDingcboOperationPerson()//绑定业务员 { SqlParameter[] SQlCMDpas = { new SqlParameter("@Type", SqlDbType.Char), }; SQlCMDpas[0].Value = "frm_SalesOrder_BingDingcboOperationPerson"; DataTable dt = myDALMethod.QueryDataTable("销售管理_frm_SalesOrder", SQlCMDpas); DataSet ds = new DataSet(); ds.Tables.Add(dt); return ds; } [OperationContract] public DataSet frm_SalesOrder_BingDingcboOperationType()//绑定业务类型 { SqlParameter[] SQlCMDpas = { new SqlParameter("@Type", SqlDbType.Char), }; SQlCMDpas[0].Value = "frm_SalesOrder_BingDingcboOperationType"; DataTable dt = myDALMethod.QueryDataTable("销售管理_frm_SalesOrder", SQlCMDpas); DataSet ds = new DataSet(); ds.Tables.Add(dt); return ds; } [OperationContract] public DataSet frm_SalesOrder_BingDingcboSalesType()//绑定销售类型 { SqlParameter[] SQlCMDpas = { new SqlParameter("@Type", SqlDbType.Char), }; SQlCMDpas[0].Value = "frm_SalesOrder_BingDingcboSalesType"; DataTable dt = myDALMethod.QueryDataTable("销售管理_frm_SalesOrder", SQlCMDpas); DataSet ds = new DataSet(); ds.Tables.Add(dt); return ds; } [OperationContract] public DataSet frm_SalesOrder_BingDingcboMoneyType()//绑定币别 { SqlParameter[] SQlCMDpas = { new SqlParameter("@Type", SqlDbType.Char), }; SQlCMDpas[0].Value = "frm_SalesOrder_BingDingcboMoneyType"; DataTable dt = myDALMethod.QueryDataTable("销售管理_frm_SalesOrder", SQlCMDpas); DataSet ds = new DataSet(); ds.Tables.Add(dt); return ds; } [OperationContract] public DataSet frm_SalesOrder_BingDingcboTermsOfPayment()//绑定付款条件 { SqlParameter[] SQlCMDpas = { new SqlParameter("@Type", SqlDbType.Char), }; SQlCMDpas[0].Value = "frm_SalesOrder_BingDingcboTermsOfPayment"; DataTable dt = myDALMethod.QueryDataTable("销售管理_frm_SalesOrder", SQlCMDpas); DataSet ds = new DataSet(); ds.Tables.Add(dt); return ds; } [OperationContract] public DataSet frm_SalesOrder_BingDingcboCustomer()//绑定客户简称 { SqlParameter[] SQlCMDpas = { new SqlParameter("@Type", SqlDbType.Char), }; SQlCMDpas[0].Value = "frm_SalesOrder_BingDingcboCustomer"; DataTable dt = myDALMethod.QueryDataTable("销售管理_frm_SalesOrder", SQlCMDpas); DataSet ds = new DataSet(); ds.Tables.Add(dt); return ds; } [OperationContract] public DataSet frm_SalesOrder_SelectBalanceSalesOrderSheet()//查询订单 { SqlParameter[] SQlCMDpas = { new SqlParameter("@Type", SqlDbType.Char), }; SQlCMDpas[0].Value = "frm_SalesOrder_SelectBalanceSalesOrderSheet"; DataTable dt = myDALMethod.QueryDataTable("销售管理_frm_SalesOrder", SQlCMDpas); DataSet ds = new DataSet(); ds.Tables.Add(dt); return ds; } [OperationContract] public DataSet frm_SalesOrder_SelectdgvSalesOrder(int TheSalesOrderID)//绑定销售订单明细DGV { SqlParameter[] SQlCMDpas = { new SqlParameter("@Type", SqlDbType.Char), new SqlParameter("@TheSalesOrderID", SqlDbType.Int),//销售订单ID }; SQlCMDpas[0].Value = "frm_SalesOrder_SelectdgvSalesOrder"; SQlCMDpas[1].Value = TheSalesOrderID; DataTable dt = myDALMethod.QueryDataTable("销售管理_frm_SalesOrder", SQlCMDpas); DataSet ds = new DataSet(); ds.Tables.Add(dt); return ds; }
第三步:界面层代码
销售订单窗口的Load事件
private void frm_SalesOrder_Load(object sender, EventArgs e) { this.Size = new Size(875, 581);//设置窗体大小 cboMoneyType.DataSource = myfrm_SalesOrderClient.frm_SalesOrder_BingDingcboMoneyType().Tables[0];//绑定币别 cboMoneyType.DisplayMember = "NameOfCurrency"; //显示成员 cboMoneyType.ValueMember = "CurrencyID"; //值成员 cboMoneyType.SelectedValueChanged+=new EventHandler(cboMoneyType_SelectedValueChanged); // cboOperationPerson.DataSource = myfrm_SalesOrderClient.frm_SalesOrder_BingDingcboOperationPerson().Tables[0];//绑定业务员 cboOperationPerson.DisplayMember = "TheOperatorTypeName"; //显示成员 cboOperationPerson.ValueMember = "TheOperatorID"; //值成员 cboOperationType.DataSource = myfrm_SalesOrderClient.frm_SalesOrder_BingDingcboOperationType().Tables[0];//绑定业务类型 cboOperationType.DisplayMember = "BusinessTypeNname"; //显示成员 cboOperationType.ValueMember = "BusinessTypeID"; //值成员 cboSalesType.DataSource = myfrm_SalesOrderClient.frm_SalesOrder_BingDingcboSalesType().Tables[0];//绑定销售类型 cboSalesType.DisplayMember = "SalesTypeName"; //显示成员 cboSalesType.ValueMember = "SalesTypeID"; //值成员 cboSellDepartment.DataSource = myfrm_SalesOrderClient.frm_SalesOrder_BingDingcboSellDepartment().Tables[0];//绑定销售部门 cboSellDepartment.DisplayMember = "DepartmentName"; //显示成员 cboSellDepartment.ValueMember = "DepartmentID"; //值成员 cboTermsOfPayment.DataSource = myfrm_SalesOrderClient.frm_SalesOrder_BingDingcboTermsOfPayment().Tables[0];//绑定付款条件 cboTermsOfPayment.DisplayMember = "TermsOfPaymentName"; //显示成员 cboTermsOfPayment.ValueMember = "TermsOfPaymentID"; //值成员 cboCustomer.DataSource=myfrm_SalesOrderClient.frm_SalesOrder_BingDingcboCustomer().Tables[0];//绑定客户简称 cboCustomer.DisplayMember = "Customer"; //显示成员 cboCustomer.ValueMember = "CustomerID"; //值成员 dgvSelectList.DataSource=myfrm_SalesOrderClient.frm_SalesOrder_SelectdgvSelectList().Tables[0];//绑定选择明细DGV dtBalanceSalesOrderSheet = myfrm_SalesOrderClient.frm_SalesOrder_SelectBalanceSalesOrderSheet().Tables[0];//查询销售订单表 intTpage = dtBalanceSalesOrderSheet.Rows.Count - 1; //获取自后一页 int Count = intTpage; //赋值 BingDingBalanceSalesOrderSheet(intTpage);//销售订单 BingDingList(intTpage);//销售订单明细 BingDingUsingStar(intTpage);//按钮限制 foreach (Control Control in pnlMain.Controls)//遍历pnlMain里面的控件,是名称为Control { if (Control is LineTextBox.LineTextBox) { LineTextBox.LineTextBox LineTextBox = Control as LineTextBox.LineTextBox; LineTextBox.Enabled = false; //不能编辑 } else { if (Control is ComboBox) { ComboBox comboBox = Control as ComboBox; comboBox.Enabled = false; //不能编辑 } } } }自定义绑定销售订单方法<pre name="code" class="csharp"> private void frm_SalesOrder_Load(object sender, EventArgs e) { this.Size = new Size(875, 581);//设置窗体大小 cboMoneyType.DataSource = myfrm_SalesOrderClient.frm_SalesOrder_BingDingcboMoneyType().Tables[0];//绑定币别 cboMoneyType.DisplayMember = "NameOfCurrency";//显示成员 cboMoneyType.ValueMember = "CurrencyID"; //值成员 cboMoneyType.SelectedValueChanged+=new EventHandler(cboMoneyType_SelectedValueChanged); cboOperationPerson.DataSource = myfrm_SalesOrderClient.frm_SalesOrder_BingDingcboOperationPerson().Tables[0];//绑定业务员 cboOperationPerson.DisplayMember = "TheOperatorTypeName";//显示成员 cboOperationPerson.ValueMember = "TheOperatorID";//值成员 cboOperationType.DataSource = myfrm_SalesOrderClient.frm_SalesOrder_BingDingcboOperationType().Tables[0];//绑定业务类型 cboOperationType.DisplayMember = "BusinessTypeNname";//显示成员 cboOperationType.ValueMember = "BusinessTypeID";//值成员 cboSalesType.DataSource = myfrm_SalesOrderClient.frm_SalesOrder_BingDingcboSalesType().Tables[0];//绑定销售类型 cboSalesType.DisplayMember = "SalesTypeName";//显示成员 cboSalesType.ValueMember = "SalesTypeID";//值成员 cboSellDepartment.DataSource = myfrm_SalesOrderClient.frm_SalesOrder_BingDingcboSellDepartment().Tables[0];//绑定销售部门 cboSellDepartment.DisplayMember = "DepartmentName";//显示成员 cboSellDepartment.ValueMember = "DepartmentID";//值成员 cboTermsOfPayment.DataSource = myfrm_SalesOrderClient.frm_SalesOrder_BingDingcboTermsOfPayment().Tables[0];//绑定付款条件 cboTermsOfPayment.DisplayMember = "TermsOfPaymentName";//显示成员 cboTermsOfPayment.ValueMember = "TermsOfPaymentID";//值成员 cboCustomer.DataSource=myfrm_SalesOrderClient.frm_SalesOrder_BingDingcboCustomer().Tables[0];//绑定客户简称 cboCustomer.DisplayMember = "Customer";//显示成员 cboCustomer.ValueMember = "CustomerID";//值成员 dgvSelectList.DataSource=myfrm_SalesOrderClient.frm_SalesOrder_SelectdgvSelectList().Tables[0];//绑定选择明细DGV dtBalanceSalesOrderSheet = myfrm_SalesOrderClient.frm_SalesOrder_SelectBalanceSalesOrderSheet().Tables[0];//查询销售订单表 intTpage = dtBalanceSalesOrderSheet.Rows.Count - 1;/获取最后一页 int Count = intTpage;//赋值 BingDingBalanceSalesOrderSheet(intTpage);//销售订单 BingDingList(intTpage);//销售订单明细 BingDingUsingStar(intTpage);//按钮限制 foreach (Control Control in pnlMain.Controls)//遍历pnlMain里面的控件,是名称为Control { if (Control is LineTextBox.LineTextBox) { LineTextBox.LineTextBox LineTextBox = Control as LineTextBox.LineTextBox; LineTextBox.Enabled = false; //不能编辑 } else { if (Control is ComboBox) { ComboBox comboBox = Control as ComboBox; comboBox.Enabled = false; //不能编辑 } } } }自定义绑定销售订单方法 private void BingDingBalanceSalesOrderSheet(int Count)//绑定销售订单 { TheSalesOrderID = Convert.ToInt32(dtBalanceSalesOrderSheet.Rows[Count]["销售订单ID"].ToString().Trim());//获取销售订单ID的值 ltxtStockRemovalReceipts.Text = dtBalanceSalesOrderSheet.Rows[Count]["单据编号"].ToString().Trim();//获取单据编号的值 ltxtStockRemovalData.Text = dtBalanceSalesOrderSheet.Rows[Count]["单据日期"].ToString().Trim();//获取单据日期的值 cboCustomer.SelectedValue = Convert.ToInt32(dtBalanceSalesOrderSheet.Rows[Count]["客户ID"].ToString().Trim());//获取客户ID的值 cboSellDepartment.SelectedValue = Convert.ToInt32(dtBalanceSalesOrderSheet.Rows[Count]["部门ID"]);//获取部门ID的值 cboOperationPerson.SelectedValue = Convert.ToInt32(dtBalanceSalesOrderSheet.Rows[Count]["业务员ID"]);//获取业务员ID的值 cboTermsOfPayment.SelectedValue = Convert.ToInt32(dtBalanceSalesOrderSheet.Rows[Count]["付款条件ID"]);//获取付款条件ID的值 cboOperationType.SelectedValue = Convert.ToInt32(dtBalanceSalesOrderSheet.Rows[Count]["业务类型ID"]);//获取业务类型ID的值 ltxtRate.Text = dtBalanceSalesOrderSheet.Rows[Count]["税率"].ToString().Trim();//获取税率的值 cboSalesType.SelectedValue = Convert.ToInt32(dtBalanceSalesOrderSheet.Rows[Count]["销售类型ID"]);//获取销售类型ID的值 cboMoneyType.SelectedValue = Convert.ToInt32(dtBalanceSalesOrderSheet.Rows[Count]["币别ID"]);//获取币别ID的值 ltxtCurrency.Text = dtBalanceSalesOrderSheet.Rows[Count]["汇率"].ToString().Trim();//获取汇率的值 ltxtNote.Text = dtBalanceSalesOrderSheet.Rows[Count]["备注"].ToString().Trim();//获取备注的值 labChangeTheNumber.Text = string.Format("{0}/{1}页数", Count + 1, dtBalanceSalesOrderSheet.Rows.Count);//显示页数 } 自定义绑定明细方法 private void BingDingList(int Count)//绑定dgv明细 { for (int intCount = 0; intCount < dgvSalesOrder.Rows.Count - 1;intCount++ ) { dgvSalesOrder.Rows.RemoveAt(intCount);//移除dgv中的行 intCount--; } //获取表的数据 dtSalesOrderSheet = myfrm_SalesOrderClient.frm_SalesOrder_SelectdgvSalesOrder( Convert.ToInt32(dtBalanceSalesOrderSheet.Rows[Count]["销售订单ID"].ToString().Trim())).Tables[0]; for (int intRowsCount = 0; intRowsCount < dtSalesOrderSheet.Rows.Count;intRowsCount++ )//遍历表 { dgvSalesOrder.Rows.Add();//DGV添加一行 //dgv获取值 dgvSalesOrder.Rows[dgvSalesOrder.Rows.Count - 2].Cells["销售订单明细ID"].Value = dtSalesOrderSheet.Rows[intRowsCount]["销售订单明细ID"].ToString().Trim();//把表dtSalesOrderSheet中的销售订单明细ID赋值给dgvSalesOrder中销售订单明细ID dgvSalesOrder.Rows[dgvSalesOrder.Rows.Count - 2].Cells["存货ID"].Value = dtSalesOrderSheet.Rows[intRowsCount]["存货ID"].ToString().Trim();//把表dtSalesOrderSheet中的存货ID赋值给dgvSalesOrder中存货ID dgvSalesOrder.Rows[dgvSalesOrder.Rows.Count - 2].Cells["产品ID"].Value = dtSalesOrderSheet.Rows[intRowsCount]["产品ID"].ToString().Trim();//把dtSalesOrderSheet中的产品ID赋值给dgvSalesOrder中产品ID dgvSalesOrder.Rows[dgvSalesOrder.Rows.Count - 2].Cells["存货编码"].Value = dtSalesOrderSheet.Rows[intRowsCount]["产品编码"].ToString().Trim();//把dtSalesOrderSheet中的产品编码赋值给dgvSalesOrder中存货编码 dgvSalesOrder.Rows[dgvSalesOrder.Rows.Count - 2].Cells["规格型号"].Value = dtSalesOrderSheet.Rows[intRowsCount]["产品规格型号名称"].ToString().Trim();//把dtSalesOrderSheet中的产品规格型号名称赋值给dgvSalesOrder中规格型号 dgvSalesOrder.Rows[dgvSalesOrder.Rows.Count - 2].Cells["产品规格型号ID"].Value = dtSalesOrderSheet.Rows[intRowsCount]["产品规格型号ID"].ToString().Trim();//把dtSalesOrderSheet中的产品规格型号ID赋值给dgvSalesOrder中产品规格型号ID dgvSalesOrder.Rows[dgvSalesOrder.Rows.Count - 2].Cells["存货名称"].Value = dtSalesOrderSheet.Rows[intRowsCount]["产品名称"].ToString().Trim();//把dtSalesOrderSheet中的产品名称赋值给dgvSalesOrder中存货名称 dgvSalesOrder.Rows[dgvSalesOrder.Rows.Count - 2].Cells["产品计量单位ID"].Value = dtSalesOrderSheet.Rows[intRowsCount]["产品计量单位ID"].ToString().Trim();//把dtSalesOrderSheet中的产品计量单位ID赋值给dgvSalesOrder中产品计量单位ID dgvSalesOrder.Rows[dgvSalesOrder.Rows.Count - 2].Cells["计量单位"].Value = dtSalesOrderSheet.Rows[intRowsCount]["产品计量单位名称"].ToString().Trim();//把dtSalesOrderSheet中的产品计量单位名称赋值给dgvSalesOrder中计量单位 dgvSalesOrder.Rows[dgvSalesOrder.Rows.Count - 2].Cells["数量"].Value = dtSalesOrderSheet.Rows[intRowsCount]["数量"].ToString().Trim();//把dtSalesOrderSheet中的数量赋值给dgvSalesOrder中数量 dgvSalesOrder.Rows[dgvSalesOrder.Rows.Count - 2].Cells["单价"].Value = dtSalesOrderSheet.Rows[intRowsCount]["单价"].ToString().Trim();//把dtSalesOrderSheet中的单价赋值给dgvSalesOrder中单价 dgvSalesOrder.Rows[dgvSalesOrder.Rows.Count - 2].Cells["金额"].Value = dtSalesOrderSheet.Rows[intRowsCount]["金额"].ToString().Trim();//把dtSalesOrderSheet中的金额赋值给dgvSalesOrder中金额 dgvSalesOrder.Rows[dgvSalesOrder.Rows.Count - 2].Cells["含税单价"].Value = dtSalesOrderSheet.Rows[intRowsCount]["含税单价"].ToString().Trim();//把dtSalesOrderSheet中的含税单价赋值给dgvSalesOrder中含税单价 dgvSalesOrder.Rows[dgvSalesOrder.Rows.Count - 2].Cells["销售订单ID"].Value = dtSalesOrderSheet.Rows[intRowsCount]["销售订单ID"].ToString().Trim();//把dtSalesOrderSheet中的销售订单ID赋值给dgvSalesOrder中销售订单ID } ltxtRate_TextChanged(null, null);//调用计算无税单价的方法 }自定义控制按钮方法 private void BingDingUsingStar(int Count)//按钮限制 { if (Convert.ToBoolean(dtBalanceSalesOrderSheet.Rows[Count]["审核否"].ToString()) == false)//如果订单为未审核 { tlsbModification.Enabled = true;//启用修改按钮 tlsbDelete.Enabled = true;//启用删除按钮 tlsbExamineAndVerify.Enabled = true;//启用审核按钮 picExamineAndVerify.Visible = false;//审核图片 } else { tlsbModification.Enabled = false;//修改按钮 tlsbDelete.Enabled = false;//删除按钮 tlsbExamineAndVerify.Enabled = false;//审核按钮 picExamineAndVerify.Visible = true;//启用审核图片 } if (intTpage == dtBalanceSalesOrderSheet.Rows.Count - 1)//如果页数是尾页 { tlsbNextPage.Enabled = false;//下页按钮 tlsbFinal.Enabled = false;//末页按钮 } else { tlsbNextPage.Enabled = true;//启用下页按钮 tlsbFinal.Enabled = true;//启用末页按钮 } if (intTpage == 0)//如果页数不是第首页 { tlsbFirst.Enabled = false;//首张按钮 tlsbLast.Enabled = false;//上张按钮 } else { tlsbFirst.Enabled = true;//启用首张按钮 tlsbLast.Enabled = true;//启用上张按钮 } }
新增按钮:
第一步:界面层代码:
新增按钮点击事件
private void tlsbIncrease_Click(object sender, EventArgs e)//新增按钮 { dgvSalesOrder.ReadOnly = false;//dgv可以编辑 for (int intCount = 0; intCount < dgvSalesOrder.Rows.Count - 1;intCount++ )//遍历dgv { dgvSalesOrder.Rows.RemoveAt(intCount);//移除DGV的行 intCount--; } tlsbPreview.Enabled = false;//不启用预览 tlsbPrint.Enabled = false;//不启用打印 picExamineAndVerify.Visible = false;//不启用审核图片 tlsbDelete.Enabled = false;//不启用删除按钮 tlsbExamineAndVerify.Enabled = false;//不启用审核 tlsbFirst.Enabled = false;//不启用首张 tlsbLast.Enabled = false;//不启用上张 tlsbNextPage.Enabled = false;//不启用下张 tlsbFinal.Enabled = false;//不启用末张 tlsbRefresh.Enabled = false;//不启用查询 bolNewlyIncreased = true; //标识新增 tlsbIncrease.Enabled = false;//新增按钮不启用 tlsbSave.Enabled = true; //保存按钮启用 tlsbAbandon.Enabled = true;// 放弃按钮启用 tlsbModification.Enabled = false;//修改按钮不启用 foreach (Control Control in pnlMain.Controls)//遍历pnlMain里面的控件,是名称为Control { if (Control is LineTextBox.LineTextBox) { LineTextBox.LineTextBox LineTextBox = Control as LineTextBox.LineTextBox; LineTextBox.Text = "";//清空ltxt LineTextBox.Enabled = true; //不能编辑 } else { if (Control is ComboBox) { ComboBox comboBox = Control as ComboBox; comboBox.Enabled = true; //不能编辑 } } } }
图(2.2-6)
第一步:界面层代码
Dgv的双击事件
private void dgvSalesOrder_CellDoubleClick(object sender, DataGridViewCellEventArgs e) { pnlSalesOrder.Visible = true;//显示容器 }
图(2.2-7)
第一步:界面层代码
选择dgv的双击事件
private void dgvSelectList_CellDoubleClick(object sender, DataGridViewCellEventArgs e) { for (int intCount = 0; intCount < dgvSalesOrder.Rows.Count - 1; intCount++)//遍历DGV明细 { int ProductID1 = Convert.ToInt32(dgvSalesOrder.Rows[intCount].Cells["产品ID"].Value.ToString().Trim());//获取DGV明细表的产品ID int ProductID2 = Convert.ToInt32(dgvSelectList.CurrentRow.Cells["产品ID1"].Value.ToString().Trim());//获取选择明细DGV的产品ID if (ProductID1 == ProductID2)// DGV明细表的产品ID与选择明细DGV的产品ID相同 { MessageBox.Show("你所选的数据已存在,请在表格中填写你所需要的数量。");//弹出提示框 return;//返回 } } if (dgvSalesOrder.CurrentRow.Index == dgvSalesOrder.Rows.Count - 1)//如果dgv选中的索引不等于dgv最后一行 { dgvSalesOrder.Rows.Add();//添加一行 AssignmentdgvSelectList();//调用传值方法 } else { AssignmentdgvSelectList();//调用传值方法 } pnlSalesOrder.Visible = false;//隐藏裝dgv的容器 }自定义传值方法 private void AssignmentdgvSelectList()//传值 { dgvSalesOrder.Rows[dgvSalesOrder.Rows.Count - 2].Cells["存货ID"].Value = dgvSelectList.CurrentRow.Cells["存货ID1"].Value.ToString();//把dgvSelectList选中的存货ID1赋值给dgvSalesOrder中的存货ID dgvSalesOrder.Rows[dgvSalesOrder.Rows.Count - 2].Cells["产品ID"].Value = dgvSelectList.CurrentRow.Cells["产品ID1"].Value.ToString();//把dgvSelectList选中的产品ID1赋值给dgvSalesOrder中的产品ID dgvSalesOrder.Rows[dgvSalesOrder.Rows.Count - 2].Cells["存货编码"].Value = dgvSelectList.CurrentRow.Cells["存货编码"].Value.ToString();//把dgvSelectList选中的存货编码赋值给dgvSalesOrder中的存货编码 dgvSalesOrder.Rows[dgvSalesOrder.Rows.Count - 2].Cells["存货名称"].Value = dgvSelectList.CurrentRow.Cells["存货名称"].Value.ToString();//把dgvSelectList选中的存货名称赋值给dgvSalesOrder中的存货名称 dgvSalesOrder.Rows[dgvSalesOrder.Rows.Count - 2].Cells["规格型号"].Value = dgvSelectList.CurrentRow.Cells["产品规格型号名称"].Value.ToString();//把dgvSelectList选中的产品规格型号名称赋值给dgvSalesOrder中的规格型号 dgvSalesOrder.Rows[dgvSalesOrder.Rows.Count - 2].Cells["产品规格型号ID"].Value = dgvSelectList.CurrentRow.Cells["产品规格型号ID1"].Value.ToString();//把dgvSelectList选中的产品规格型号ID1赋值给dgvSalesOrder中的产品规格型号ID dgvSalesOrder.Rows[dgvSalesOrder.Rows.Count - 2].Cells["产品计量单位ID"].Value = dgvSelectList.CurrentRow.Cells["产品计量单位ID1"].Value.ToString();//把dgvSelectList选中的产品计量单位ID1赋值给dgvSalesOrder中的产品计量单位ID dgvSalesOrder.Rows[dgvSalesOrder.Rows.Count - 2].Cells["计量单位"].Value = dgvSelectList.CurrentRow.Cells["产品计量单位名称"].Value.ToString();//把dgvSelectList选中的产品计量单位名称赋值给dgvSalesOrder中的计量单位 dgvSalesOrder.Rows[dgvSalesOrder.Rows.Count - 2].Cells["单价"].Value = dgvSelectList.CurrentRow.Cells["单价"].Value.ToString();//把dgvSelectList选中的单价赋值给dgvSalesOrder中的单价 dgvSalesOrder.Rows[dgvSalesOrder.Rows.Count - 2].Cells["数量"].Value = ""; dgvSalesOrder.Rows[dgvSalesOrder.Rows.Count - 2].Cells["含税单价"].Value = dgvSelectList.CurrentRow.Cells["含税单价"].Value.ToString();//把dgvSelectList选中的含税单价赋值给dgvSalesOrder中的含税单价 }
</pre><pre>
图(2.2-8)
第一步:界面层代码
LineTxtBox更改text属性时引发事件
private void ltxtRate_TextChanged(object sender, EventArgs e) { for (int Rows = 0; Rows < dgvSalesOrder.Rows.Count - 1;Rows++ )//遍历dgv { decimal TaxPrice = Convert.ToDecimal(dgvSalesOrder.Rows[Rows].Cells["含税单价"].Value);//获取含税单击的值 decimal Rate = Convert.ToDecimal(ltxtRate.Text) / 100;//获取税率的值 dgvSalesOrder.Rows[Rows].Cells["无税单价"].Value = TaxPrice / (1 + Rate);//计算无税单价 } }Dgv编辑单元格事件 private void dgvSalesOrder_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) { PublicStaticFields.dgvCompile_Text = (DataGridViewTextBoxEditingControl)e.Control;//获取当前DGV编辑文本框--承载与DGV文本框 PublicStaticFields.dgvCompile_Text.KeyPress += dgvCompile_KeyPress;//为当前单元格文本添加KeyPress } private void dgvCompile_KeyPress(object sender, KeyPressEventArgs e) { gvCompile_keyChanged(PublicStaticFields.dgvCompile_Text);//调用自定义方法 dgvCompile_KeyPress(e, PublicStaticFields.dgvCompile_Text);//调用自定义方法 } private void dgvCompile_KeyPress(KeyPressEventArgs e, DataGridViewTextBoxEditingControl dgvTxt) { if ((char.IsNumber(e.KeyChar) || e.KeyChar == (char)Keys.Back) && dgvSalesOrder.CurrentRow.Cells["存货ID"].Value != null)//判断是否为数字或者是否按下键盘的BACKSPACE键且存货ID不为空 { try { string strNumber = null;//声明字符串 string strCount = dgvTxt.Text;//获取单元格全部文本 if (char.IsNumber(e.KeyChar))//是否为数字 { strNumber += e.KeyChar;//单元格文本拼接按钮下的数字 } else { strCount = strCount.Remove(strCount.Length - 1);//删除单元格最后一个数字 } dgvSalesOrder.CurrentRow.Cells["金额"].Value = Convert.ToDecimal((strCount + strNumber).Trim()) * Convert.ToDecimal(dgvSalesOrder.CurrentRow.Cells["单价"].Value.ToString().Trim());//计算金额 } catch { dgvSalesOrder.CurrentRow.Cells["金额"].Value = "0.000"; } } else { e.Handled = true;//键盘按下无效 } } private void gvCompile_keyChanged(DataGridViewTextBoxEditingControl dgvTxt) { try { dgvTxt.Text = Convert.ToInt32(dgvTxt.Text).ToString().Trim(); } catch { } dgvTxt.SelectionStart = dgvTxt.Text.Length; //光标放在最后一个数字上 }
图(2.2-9)
图(2.3-1)
第一步:存储过程代码
if(@Type='frm_SalesOrder_InsertMaximumBusiness')--生产最大单号数beginupdate MaximumBusinessset MaxImumBusiness=MaxImumBusiness+1--最大单数where MaximumOddNumber=1SELECT MaxImumBusiness FROM MaximumBusinessEndif(@Type='frm_SalesOrder_InsertTheDocumentsTable')--新增号beginbegin tranInsert TheDocumentsTable(DocumentNumber, DateOfDocuments)--单据编号,单据日期values (@DocumentNumber, @DateOfDocuments)select @@IDENTITYcommit tranEndif(@Type='frm_SalesOrder_InsertBalanceSalesOrderSheet')--新增销售订单表beginbegin tranInsert BalanceSalesOrderSheet(BusinessTypeID, DocumentID, Rate, CustomerID, DepartmentID, TheOperatorID_Salesman, Note, CurrencyID, TermsOfPaymentID,SalesTypeID, ReviewWhether)values (@BusinessTypeID, @DocumentID, @Rate, @CustomerID,@DepartmentID, @TheOperatorID_Salesman, @Note, @CurrencyID, @TermsOfPaymentID, @SalesTypeID,0)select @@IDENTITYcommit tran Endif(@Type='frm_SalesOrder_InsertSalesOrderSheet')--新增销售订单明细begin begin tranInsert SalesOrderSheet(TheInventoryID, Quantity, Amount, TheSalesOrderID)--存货ID,数量,金额,销售订单IDValues (@TheInventoryID, @Quantity, @Amount, @TheSalesOrderID)select @@IDENTITYcommit tranEnd
第二步:服务端代码
[OperationContract] public int frm_SalesOrder_InsertMaximumBusiness()//生产最大单数 { SqlParameter[] SQLCMDpas = { new SqlParameter("@Type", SqlDbType.Char) }; SQLCMDpas[0].Value = "frm_SalesOrder_InsertMaximumBusiness"; DataTable myDataTable = myDALMethod.QueryDataTable("销售管理_frm_SalesOrder", SQLCMDpas); return Convert.ToInt32(myDataTable.Rows[0][0]); } [OperationContract] public DataSet frm_SalesOrder_InsertTheDocumentsTable(string DocumentNumber,DateTime DateOfDocuments)//新增单据表 {//DocumentNumber, DateOfDocuments SqlParameter[] SQlCMDpas = { new SqlParameter("@Type", SqlDbType.Char), new SqlParameter("@DocumentNumber", SqlDbType.Char),//单据编号 new SqlParameter("@DateOfDocuments", SqlDbType.Char),//单据日期 }; SQlCMDpas[0].Value = "frm_SalesOrder_InsertTheDocumentsTable"; SQlCMDpas[1].Value = DocumentNumber; SQlCMDpas[2].Value = DateOfDocuments; DataTable dt = myDALMethod.QueryDataTable("销售管理_frm_SalesOrder", SQlCMDpas); DataSet ds = new DataSet(); ds.Tables.Add(dt); return ds; } [OperationContract] public DataSet frm_SalesOrder_InsertBalanceSalesOrderSheet(int BusinessTypeID, int DocumentID, string Rate, int CustomerID, int DepartmentID, int TheOperatorID_Salesman, string Note, int CurrencyID, int TermsOfPaymentID, int SalesTypeID)//新增销售订单表 {//BusinessTypeID, DocumentID, Rate, CustomerID, DepartmentID, TheOperatorID_Salesman, Note, CurrencyID, TermsOfPaymentID, SalesTypeID SqlParameter[] SQlCMDpas = { new SqlParameter("@Type", SqlDbType.Char), new SqlParameter("@BusinessTypeID", SqlDbType.Int), //业务类型ID new SqlParameter("@DocumentID", SqlDbType.Int), //单据ID new SqlParameter("@Rate", SqlDbType.NChar), //税率 new SqlParameter("@CustomerID", SqlDbType.Int), //客户ID new SqlParameter("@DepartmentID", SqlDbType.Int), //部门ID new SqlParameter("@TheOperatorID_Salesman", SqlDbType.Int), //操作员ID new SqlParameter("@Note", SqlDbType.NChar), //备注 new SqlParameter("@CurrencyID", SqlDbType.Int), //币别ID new SqlParameter("@TermsOfPaymentID", SqlDbType.Int), 付款条件ID new SqlParameter("@SalesTypeID", SqlDbType.Int), //销售类型ID }; SQlCMDpas[0].Value = "frm_SalesOrder_InsertBalanceSalesOrderSheet"; SQlCMDpas[1].Value =BusinessTypeID; SQlCMDpas[2].Value = DocumentID; SQlCMDpas[3].Value =Rate; SQlCMDpas[4].Value =CustomerID; SQlCMDpas[5].Value =DepartmentID; SQlCMDpas[6].Value =TheOperatorID_Salesman; SQlCMDpas[7].Value =Note; SQlCMDpas[8].Value =CurrencyID; SQlCMDpas[9].Value =TermsOfPaymentID; SQlCMDpas[10].Value =SalesTypeID; DataTable dt = myDALMethod.QueryDataTable("销售管理_frm_SalesOrder", SQlCMDpas); DataSet ds = new DataSet(); ds.Tables.Add(dt); return ds; } [OperationContract] public int frm_SalesOrder_InsertSalesOrderSheet(int TheInventoryID,decimal Quantity,decimal Amount,int TheSalesOrderID)//新增销售订单明细 {//TheInventoryID, Quantity, Amount, TheSalesOrderID SqlParameter[] SQlCMDpas = { new SqlParameter("@Type", SqlDbType.Char), new SqlParameter("@TheInventoryID", SqlDbType.Int),//存货ID new SqlParameter("@Quantity", SqlDbType.Decimal), //数量 new SqlParameter("@Amount", SqlDbType.Decimal),//金额 new SqlParameter("@TheSalesOrderID", SqlDbType.Int),//销售订单 }; SQlCMDpas[0].Value = "frm_SalesOrder_InsertSalesOrderSheet"; SQlCMDpas[1].Value = TheInventoryID; SQlCMDpas[2].Value =Quantity; SQlCMDpas[3].Value =Amount; SQlCMDpas[4].Value =TheSalesOrderID; return myDALMethod.UpdateData("销售管理_frm_SalesOrder", SQlCMDpas); }
第三步:界面层代码
保存单击事件
private void tlsbSave_Click(object sender, EventArgs e) { foreach (DataGridViewRow dvgr in dgvSalesOrder.Rows) { if (dvgr != dgvSalesOrder.Rows[dgvSalesOrder.Rows.Count - 1])//dgv不为最后一行 { if (dvgr.Cells["数量"].Value.ToString().Trim() == "")//如果数量为空 { MessageBox.Show("数量不能为空,请认真填写数量。");//弹出提示窗口 return;//返回 } } } if(bolNewlyIncreased==true)//判断为新增 { //新增单号 int MaxImumBusiness = myfrm_SalesOrderClient.frm_SalesOrder_InsertMaximumBusiness(); string strMaxImumBusiness = MaxImumBusiness.ToString(); string MaxNumber = ""; MaxNumber = DateTime.Now.Year + (DateTime.Now.Month > 9 ? DateTime.Now.Month.ToString() : "0" + DateTime.Now.Month) + (DateTime.Now.Day > 9 ? DateTime.Now.Day.ToString() : "0" + DateTime.Now.Day); //获取当前的年月日 for (int Max = strMaxImumBusiness.Length; Max < 5; Max++) { strMaxImumBusiness = "0" + strMaxImumBusiness; } MaxNumber = string.Format("DD{0}{1}", MaxNumber, strMaxImumBusiness);//将指定字符串中的格式项替换为两个指定对象的字符串表示形式 ltxtStockRemovalReceipts.Text = MaxNumber;//获取订单号 int TheDocumentsTable = Convert.ToInt32(myfrm_SalesOrderClient.frm_SalesOrder_InsertTheDocumentsTable( ltxtStockRemovalReceipts.Text.ToString().Trim(),Convert.ToDateTime(DateTime.Now.ToString().Trim())).Tables[0].Rows[0][0]);//新增单据表 int BalanceSalesOrderSheet = Convert.ToInt32(myfrm_SalesOrderClient.frm_SalesOrder_InsertBalanceSalesOrderSheet( Convert.ToInt32(cboOperationType.SelectedValue.ToString().Trim()), TheDocumentsTable, ltxtRate.Text.ToString().Trim(), Convert.ToInt32(cboCustomer.SelectedValue.ToString().Trim()), Convert.ToInt32(cboSellDepartment.SelectedValue.ToString().Trim()), Convert.ToInt32(cboOperationPerson.SelectedValue.ToString().Trim()), ltxtNote.Text.ToString().Trim(), Convert.ToInt32(cboMoneyType.SelectedValue.ToString().Trim()), Convert.ToInt32(cboTermsOfPayment.SelectedValue.ToString().Trim()), Convert.ToInt32(cboSalesType.SelectedValue.ToString().Trim())).Tables[0].Rows[0][0]);//新增销售订单表 for (int Count = 0; Count < dgvSalesOrder.Rows.Count - 1;Count++ )//遍历明细 { myfrm_SalesOrderClient.frm_SalesOrder_InsertSalesOrderSheet(Convert.ToInt32(dgvSalesOrder.Rows[Count].Cells["存货ID"].Value.ToString().Trim()),Convert.ToDecimal(dgvSalesOrder.Rows[Count].Cells["数量"].Value.ToString().Trim()), Convert.ToDecimal(dgvSalesOrder.Rows[Count].Cells["金额"].Value.ToString().Trim()), BalanceSalesOrderSheet);//新增明细 } if (BalanceSalesOrderSheet>0) { MessageBox.Show("新增成功。"); tlsbExamineAndVerify.Enabled = true;//启用审核按钮 tlsbPreview.Enabled = true;//启用预览按钮 tlsbPrint.Enabled = true;//启用打印按钮 dgvSalesOrder.ReadOnly = true;//使DGV可以编辑 tlsbDelete.Enabled = true;//不启用删除按钮 tlsbFirst.Enabled = true;//启用首张按钮 tlsbLast.Enabled = true;//启用上张按钮 tlsbNextPage.Enabled = true;//启用下张按钮 tlsbFinal.Enabled = true;//启用末张按钮 tlsbRefresh.Enabled = true;//启用查询按钮 bolNewlyIncreased = false; //标识不新增 tlsbIncrease.Enabled = true;//新增按钮不启用 tlsbSave.Enabled = false; //保存按钮启用 tlsbAbandon.Enabled = false;// 放弃按钮启用 tlsbModification.Enabled = true;//修改按钮不启用 dtBalanceSalesOrderSheet = myfrm_SalesOrderClient.frm_SalesOrder_SelectBalanceSalesOrderSheet().Tables[0];//查询销售订单表 intTpage = dtBalanceSalesOrderSheet.Rows.Count - 1; int Count = intTpage; BingDingBalanceSalesOrderSheet(intTpage);//销售订单 BingDingList(intTpage);//销售订单明细 BingDingUsingStar(intTpage);//按钮限制 foreach (Control Control in pnlMain.Controls)//遍历pnlMain里面的控件,是名称为Control { if (Control is LineTextBox.LineTextBox) { LineTextBox.LineTextBox LineTextBox = Control as LineTextBox.LineTextBox; LineTextBox.Enabled = false; //不能编辑 } else { if (Control is ComboBox) { ComboBox comboBox = Control as ComboBox; comboBox.Enabled = false; //不能编辑 } } } } }
仅供学习,禁止用于商业用途,违者后果自负!
- 用友T6-ERP系统技术解析(二)销售订单(一)
- 用友T6-ERP系统技术解析(二)销售订单(二)
- 用友T6-ERP系统技术解析(二)销售订单(四)
- 用友T6-ERP系统技术解析(一)销售订单(三)
- 用友T6-ERP系统技术解析(三)销售发货单(一)
- 用友T6-ERP系统技术解析(一)登录界面
- 用友ERP T6 技术解析(一)
- 用友ERP T6技术解析(六) 库龄分析
- 用友ERP T6技术解析(五)产成品入库
- WCF广州本田整车销售系统技术解析(二) 订单管理功能实现分析
- 用友ERT T6 技术解析(二) --WCF发布
- WCF广州本田整车销售系统技术解析(三) 订单新增功能实现分析
- WCF广州本田整车销售系统技术解析(四) 订单修改功能实现分析
- 用友ERT T6 技术解析(三) 搭建WCF客户端
- 用友ERT T6 技术解析(四)采购入库 上
- 用友ERT T6 技术解析(四)采购入库 下
- ERP系统BOM详细解析(一)
- ERP系统BOM详细解析(一)
- jsp 自定义标签
- 携程网被黑,谁干的??
- Servlet自学第25讲:Session实例—简单购物车的实现
- 黑马程序员——c语言关键字、标识符、数据类型、常量、变量及函数
- 2015日记补充
- 用友T6-ERP系统技术解析(二)销售订单(一)
- 概率dp ZOJ 3329
- JAVA用栈求解(简单的)背包问题
- 客户管理系统之模块设计(一)
- Gh0st源代码详细剖析
- ExtJS中layout的12种布局风格
- Python操作PostgreSQL
- 2015日记补充(二)
- p124第三章作业41题