您的位置:首页 > 其它

用友T6-ERP系统技术解析(二)销售订单(一)

2015-05-28 18:58 567 查看
用友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)

联系电话

Email

nchar (20)

Email

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')--绑定销售部门
begin
SELECT    LTRIM(rtrim( DepartmentID)) as DepartmentID,--部门ID
LTRIM(rtrim(  DepartmentName)) as DepartmentName --部门名称
FROM         DepartmentTable
End

if(@Type='frm_SalesOrder_BingDingcboOperationPerson')--绑定业务员
begin
SELECT     LTRIM(rtrim( TheOperatorID)) as TheOperatorID, --操作员ID
LTRIM(rtrim( TheOperatorTypeName)) as TheOperatorTypeName  --操作员名称
FROM         TheOperatorTable   --操作员表
end

if(@Type='frm_SalesOrder_BingDingcboOperationType')--绑定业务类型
begin
SELECT      LTRIM(rtrim( BusinessTypeID)) as BusinessTypeID,  --业务类型ID
LTRIM(rtrim(BusinessTypeNname)) as BusinessTypeNname  --业务类型名称
FROM         BusinessTypeTable   --业务类型表
end

if(@Type='frm_SalesOrder_BingDingcboSalesType')--绑定销售类型
begin
SELECT      LTRIM(rtrim(SalesTypeID)) as SalesTypeID , --销售类型ID
LTRIM(rtrim(SalesTypeName))as SalesTypeName  --销售类型名称
FROM         SalesTypeTable   --销售类型表
End

if(@Type='frm_SalesOrder_BingDingcboMoneyType')--绑定币别
begin
SELECT      LTRIM(rtrim(CurrencyID)) as CurrencyID,--币别ID
LTRIM(rtrim( NameOfCurrency)) as NameOfCurrency  --币别名称
FROM         CurrencyTable
end

if(@Type='frm_SalesOrder_BingDingcboTermsOfPayment')--绑定付款条件
begin
SELECT      LTRIM(rtrim(TermsOfPaymentID)) as TermsOfPaymentID, --付款条件ID
LTRIM(rtrim( TermsOfPaymentName)) as TermsOfPaymentName  --付款条件名称
FROM         TermsOfPaymentTable  --付款条件表
end

if(@Type='frm_SalesOrder_BingDingcboCustomer')--绑定客户简称
begin
SELECT      LTRIM(rtrim(CustomerID)) as CustomerID,--客户ID
LTRIM(rtrim(Customer)) as Customer   --客户简称
FROM         TheCustomerTable   --客户表
end

if(@Type='frm_SalesOrder_SelectBalanceSalesOrderSheet')--查询销售订单
begin
SELECT     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.TheOperatorID
End

if(@Type='frm_SalesOrder_SelectdgvSalesOrder')--绑定明细DGV
begin
SELECT     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=@TheSalesOrderID
End


第二步:服务端代码

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;//启用上张按钮
}
}






[align=center]图(2.2-5)[/align]
新增按钮:



第一步:界面层代码:

新增按钮点击事件

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')--生产最大单号数
begin
update MaximumBusiness
set MaxImumBusiness=MaxImumBusiness+1--最大单数
where MaximumOddNumber=1
SELECT    MaxImumBusiness
FROM         MaximumBusiness
End

if(@Type='frm_SalesOrder_InsertTheDocumentsTable')--新增号
begin
begin tran
Insert TheDocumentsTable(DocumentNumber, DateOfDocuments)--单据编号,单据日期
values (@DocumentNumber, @DateOfDocuments)
select @@IDENTITY
commit tran
End

if(@Type='frm_SalesOrder_InsertBalanceSalesOrderSheet')--新增销售订单表
begin
begin tran
Insert 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 @@IDENTITY
commit tran
End

if(@Type='frm_SalesOrder_InsertSalesOrderSheet')--新增销售订单明细
begin
begin tran
Insert SalesOrderSheet(TheInventoryID, Quantity, Amount, TheSalesOrderID)--存货ID,数量,金额,销售订单ID
Values (@TheInventoryID, @Quantity, @Amount, @TheSalesOrderID)
select @@IDENTITY
commit tran
End


第二步:服务端代码

[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;
//不能编辑
}
}
}
}
}


仅供学习,禁止用于商业用途,违者后果自负!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: