海马汽车经销商管理系统技术解析(十一)前台接待模块的接车功能

本文主要是介绍海马汽车经销商管理系统技术解析(十一)前台接待模块的接车功能,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前台接待

 

主界面,见下图:

 

接车

 

对直接来厂的车辆进行开维修工单见(图一)~(图五)。接车功能实现录入车辆需要维修的项目、维修需要的配件、附加项目、诊断记录等信息。点击保存,生成维修工单。输入车牌号,如果该客户是初次来厂就跳转到新增客户界面新增客户信息见(图六)。提取套餐功能是提取为了方便操作而定义好的维修项目和维修配件。

 

(图一)

 

(图二)

(图三)

(图四)

(图五)

(图六)

 

从接车界面可以看到控件有:

控件

说明

文本框(TextBox)

编辑控件可以在工具箱直接拖动至窗体,拖至窗体后右击属性可以修改控件的样式和各种属性,还可以事件。

下拉框(ComboBox)

(NumericUpDown)

单选框(RadioButton)

选项卡(TabControl)

(ToolStrip)

表格(DatagridView)

按钮(Button)

1、数据库功能实现

第一步:数据库

1、表和关系

 

 

 

表1、维修工单表(PW_ServiceWorkBillList)

列名

数据类型

主键/外键

说明

ServiceWorkBillID

int - Identity

主键

维修工单ID

WorkOddNumBer

nchar (20)

 

维修工单号

BespeakBillID

int

外键

预约单表,预约单ID

CarNewsID

int

外键

车辆信息表,车辆信息ID

EntranceMileage

decimal (18, 2)

 

进厂里程

BusinessSort

nchar (20)

 

业务类别

EntranceTime

datetime

 

进厂时间

CarryRepairPerson

nchar (20)

 

送修人

SurplusOilVolume

decimal (18, 2)

 

剩余油量

PlanGathering

decimal (18, 2)

 

预收款

BookingCarDeliveryTime

nchar (20)

 

预计交车时间

LastTimeInTheFactory

nchar (20)

 

上次进厂时间

BespeakOddNumBer

nchar (20)

 

预约单号

MemberSort

nchar (20)

 

会员类别

ServiceAdviser_StaffID

int

外键

员工表,员工ID_服务顾问

InsureCompanyID

nchar (20)

 

保险公司ID

AttributeMinuteID_CarStatus

int

外键

属性明细表,属性明细ID_车辆状态

IfWashCar

bit

 

海马汽车否

OldPieceDispose

nchar (20)

 

旧件处理

InspectRecord

nchar (100)

 

环检记录

ClientDescribe

nchar (100)

 

顾客陈述

Remarks

nchar (100)

 

备注

IfBespeak

bit

 

预约否

IfDebt

bit

 

欠款否

IfResourceRelease

bit

 

资源释放否

表2:维修需求配件表(PW_ServiceItemList)

列名

数据类型

主键/外键

说明

ServiceNeedPartsID

int - Identity

主键

维修需求配件ID

ServiceWorkBillID

int

外键

维修工单表,维修工单ID

PartsID

int

外键

配件表,配件ID

AttributeMinuteID_AccountType

int

外键

属性明细表,属性明细ID_帐类

NeedNumber

decimal (18, 2)

 

需求数量

SellPrice

decimal (18, 2)

 

销售单价

Remarks

nchar (100)

 

备注

表3、配件表(BM_PartsList)

列名

数据类型

主键/外键

说明

PartsID

int - Identity

主键

配件ID

PartsCoding

nchar (20)

 

配件代码

PartsName                 

nchar (20)

 

配件名称

CarModels

nchar (20)

 

车型

Specification

nchar (20)

 

规格

AttributeMinuteID_Unit

int

外键

属性明细表,属性明细ID_单位

SellPrice

nchar (20)

 

销售价格

表4:维修项目表(PW_ServiceItemList)

列名

数据类型

主键/外键

说明

ServiceItemID

int - Identity

主键

维修项目ID

ServiceWorkBillID

int

外键

维修工单表,维修工单ID

WorkHoursItemMinuteID

int

外键

工时项目明细表,工时项目明细ID

AttributeMinuteID_AccountType

int

外键

属性明细表,属性明细ID_帐类

WorkHours

decimal (18, 2)

 

工时

WorkHoursPrice

decimal (18, 2)

 

工时单价

ItemKindID

nchar (20)

外键

工种表,工种ID

AttributeMinuteID_ItemStatus

int

外键

属性明细表,属性明细ID_项目状态

FaultCauseCode

nchar (20)

 

故障原因代码

IfReleaseResource

bit

 

资源释放否

FaultCause

nchar (50)

 

故障原因

表5、工时项目表(BM_WorkHoursItemList)

列名

数据类型

主键/外键

说明

WorkHoursItemID

int - Identity

主键

工时项目ID

ItemCode

nchar (20)

 

项目代码

ItemName

nchar (20)

 

项目代码

WorkKindID

int

外键

工种表,工种ID

FirstKind

nchar (20)

 

第一类

SecondKind

nchar (20)

 

第二类

ForeignLanguageName

nchar (20)

 

外文名称

Remarks

nchar (100)

 

备注

AllSuitSign

bit

 

全适用标志

表6、工时项目明细表(BM_WorkHoursItemMinuteList)

列名

数据类型

主键/外键

说明

WorkHoursItemMinuteID

int - Identity

主键

工时项目明细ID

WorkHoursItemID

int

外键

工时项目表,工时项目ID

CarModels

nchar (20)

 

车型

GuestAccountWorkHours

decimal (18, 2)

 

客帐工时

InternalAccountWorkHours

decimal (18, 2)

 

内部帐工时

ParWorkHours

decimal (18, 2)

 

标准工时

InsureAccountWorkHours

decimal (18, 2)

 

保险帐工时

WorkHoursMoney

decimal (18, 2)

 

工时金额

IfWorkHoursMultiplyUnitPrice

bit

 

是否取工时乘单价

Remarks

nchar (100)

 

备注

TheOriginalPar

bit

 

原厂标准

表7、维修附加项目表(PW_ServiceAppendItemList)

列名

数据类型

主键/外键

说明

ServiceAppendItemID

int - Identity

主键

维修附加项目ID

ServiceWorkBillID

int

外键

维修工单ID

AdditionItemID

int

外键

附加项目ID

AttributeMinuteID_AccountType

int

外键

属性明细表,属性明细ID_帐类

表8、附加项目表(BM_AdditionItemList)

列名

数据类型

主键/外键

说明

AdditionItemID

int - Identity

主键

附加项目ID

ItemCode

nchar (20)

 

项目代码

ItemName

nchar (20)

 

项目名称

AttributeMinuteID_ItemKind

int

外键

属性明细表,属性明细ID_项目类别

TeamID

int

外键

班组ID

Price

decimal (18, 2)

 

单价

表9、建议维修项目表  (PW_SuggestServiceItemList)

列名

数据类型

主键/外键

说明

SuggestServiceItemID

int

主键

建议维修项目ID

ServiceWorkBillID

int

外键

维修工单表,维修工单ID

WorkHoursItemMinuteID

int

外键

工时项目明细表,工时项目明细ID

AttributeMinuteID_AccountType

int

外键

属性明细表,属性明细ID_帐类

WorkHours

decimal (18, 2)

 

工时

WorkHoursPrice

decimal (18, 2)

 

工时单价

Remarks

nchar (100)

 

备注

表10:诊断记录表(DiagnosisRecordList)

列名

数据类型

主键/外键

说明

DiagnosisRecordID

int

主键

诊断记录ID

ServiceWorkBillID

int

外键

维修工单表,维修工单ID

DiagnosisRecordName

nchar (20)

 

诊断记录名称

DiagnosisRecordContent

nchar (100)

 

诊断记录内容

ServicemanID

int

外键

维修技工表,维修技工ID

DiagnosisTime

datetime

 

诊断时间

表11、车辆信息表(BM_CarNewsList

列名

数据类型

主键/外键

说明

CarNewsID

int - Identity

主键

车辆信息ID

CarOwnerNewsID

int

外键

车主信息ID

RecordNumber

nchar (20)

 

档案号

LicensePlateNumber

nchar (20)

 

车牌号

CarModelsCode

nchar (20)

 

车型代码

VINCode

nchar (20)

 

VIN码

MotorModel

nchar (20)

 

发动机型号

Transmissiontype

nchar (20)

 

变速器型式

MotorNumber

nchar (20)

 

发动机号

TransmissionNumber

nchar (20)

 

变速箱号码

KeyNumber

nchar (20)

 

钥匙号

ShiftWay

nchar (20)

 

换挡方式

CarModelsYearFund

nchar (20)

 

车型年款

Displacement

nchar (20)

 

排量

EquipmentCode

nchar (20)

 

装备代码

BodyworkColour

nchar (10)

 

车身颜色

LeaveFactoryDate

datetime

 

出厂日期

FuelKind

nchar (20)

 

燃料种类

BuyCarDate

datetime

 

购车日期

BuyCarMileage

decimal (18, 2)

 

购车里程

Purpose

nchar (20)

 

用途

SellUnit

nchar (20)

 

销售单位

CarBrand

nchar (20)

 

车辆品牌

CarModelsSimpleCode

nchar (20)

 

车型简码

IfInWarrantyperiod

bit

 

是否在保修期内

UserManage

bit

 

用户管理

IfEffective

bit

 

有效否

表12、车主信息表(BM_CarOwnerNewsList

列名

数据类型

说明

说明

CarOwnerNewsID

int - Identity

主键

车主信息ID

CarOwnerCode

nchar (20)

 

车主代码

CarOwnerName

nchar (20)

 

车主名称

AttributeMinuteID_ClientTypeOne

int

外键

属性明细表,属性明细ID_客户类型一

AttributeMinuteID_ClientTypeTwo

int

外键

属性明细表,属性明细ID_客户类型二

AttributeMinuteID_Sex

int

外键

属性明细表,属性明细ID_性别

Site

nchar (100)

 

地址

MobilePhone

nchar (20)

 

手机号码

HousePhone

nchar (20)

 

住宅电话

OfficePhone

nchar (20)

 

办公电话

AddressPostcode

nchar (20)

 

住址邮编

TheGenusCountiesAndCities

nchar (50)

 

所属县市

WorkUnit

nchar (50)

 

工作单位

Job

nchar (50)

 

职位

AttributeMinuteID_MaritalStatus

int

外键

属性明细表,属性明细ID_婚姻状况

IDCard

nchar (30)

 

身份证

Birthday

datetime

 

生日

Hobby

nchar (100)

 

爱好

ChangeSite

nchar (100)

 

变跟地址

Postcode

nchar (20)

 

邮编

Nationality

nchar (50)

 

国籍

Email

nchar (50)

 

Email

FacilitateTheReturnTime

datetime

 

方便回访时间

CarOwnerPicture

nchar (3000)

 

车主照片

Remarks

nchar (50)

 

备注

IfEffective

bit

 

有效否

2、功能实现

1、提取车辆信息,输入车牌号后按回车键。

第一步:数据库存储过程

IF(@TYPE='FRM_QianTaiJieDai_JieChe_CheLiangXinXi')
BEGIN
SELECT     BM_CarNewsList.CarNewsID, BM_CarNewsList.LicensePlateNumber, BM_CarNewsList.CarModelsCode, BM_CarNewsList.VINCode, BM_CarNewsList.MotorNumber, BM_CarNewsList.BodyworkColour, BM_CarNewsList.BuyCarDate, BM_CarNewsList.CarBrand, BM_CarOwnerNewsList.CarOwnerCode, BM_CarOwnerNewsList.MobilePhone, BM_CarOwnerNewsList.CarOwnerName
FROM         BM_CarNewsList INNER JOINBM_CarOwnerNewsList ON BM_CarNewsList.CarOwnerNewsID = BM_CarOwnerNewsList.CarOwnerNewsID                      WHERE      BM_CarNewsList.LicensePlateNumber=LTRIM(RTRIM(@LicensePlateNumber))                 
END
IF(@TYPE='FRM_QianTaiJieDai_JieChe_SelectLastTimeInTheFactory')BEGINSELECT     PW_ServiceWorkBillList.ServiceWorkBillID, PW_ServiceWorkBillList.CarNewsID, PW_ServiceWorkBillList.EntranceTimeFROM         PW_ServiceWorkBillList INNER JOINBM_CarNewsList ON PW_ServiceWorkBillList.CarNewsID = BM_CarNewsList.CarNewsIDWHERE     PW_ServiceWorkBillList.CarNewsID=@CarNewsID AND PW_ServiceWorkBillList.AttributeMinuteID_CarStatus=84               
END
IF(@TYPE='FRM_QianTaiJieDai_JieChe_txtChePaiHao_Leave')
BEGIN
SELECT     BM_CarNewsList.CarNewsID, BM_CarNewsList.LicensePlateNumber, BM_CarNewsList.CarModelsCode, BM_CarNewsList.VINCode, BM_CarNewsList.MotorNumber, BM_CarNewsList.BodyworkColour, BM_CarNewsList.BuyCarDate, BM_CarNewsList.CarBrand, BM_CarOwnerNewsList.CarOwnerCode, BM_CarOwnerNewsList.MobilePhone, BM_CarOwnerNewsList.CarOwnerName
FROM         BM_CarNewsList INNER JOINBM_CarOwnerNewsList ON BM_CarNewsList.CarOwnerNewsID = BM_CarOwnerNewsList.CarOwnerNewsID                      WHERE      BM_CarNewsList.CarNewsID=@CarNewsID
END

第二步:逻辑层(BLL)

 

//查询车辆信息
[OperationContract]public DataSet FRM_QianTaiJieDai_JieChe_CheLiangXinXi(string strChePaiHao){SqlParameter[] mySqlParameters ={new SqlParameter("@TYPE",SqlDbType.Char),new SqlParameter("@LicensePlateNumber",SqlDbType.NChar),};mySqlParameters[0].Value = "FRM_QianTaiJieDai_JieChe_CheLiangXinXi";mySqlParameters[1].Value = strChePaiHao;DataTable dt= myDALMethod.QueryDataTable ("前台接待_FRM_QianTaiJieDai_JieChe", mySqlParameters);DataSet ds = new DataSet();ds.Tables.Add(dt);return ds; //返回一个数据集}
//查询车辆历史维修信息[OperationContract]public DataSet FRM_QianTaiJieDai_JieChe_SelectLastTimeInTheFactory(int intCarNewsID){SqlParameter[] mySqlParameters ={new SqlParameter("@TYPE",SqlDbType.Char),new SqlParameter("@CarNewsID",SqlDbType.Int),};mySqlParameters[0].Value = "FRM_QianTaiJieDai_JieChe_SelectLastTimeInTheFactory";mySqlParameters[1].Value = intCarNewsID;DataTable dt = myDALMethod.QueryDataTable("前台接待_FRM_QianTaiJieDai_JieChe", mySqlParameters);DataSet ds = new DataSet();ds.Tables.Add(dt);return ds;//返回一个数据集}
//查询车辆信息[OperationContract]public DataSet FRM_QianTaiJieDai_JieChe_txtChePaiHao_Leave(int intCarNewsID){SqlParameter[] mySqlParameters ={new SqlParameter("@TYPE",SqlDbType.Char),new SqlParameter("@CarNewsID",SqlDbType.Int),};mySqlParameters[0].Value = "FRM_QianTaiJieDai_JieChe_txtChePaiHao_Leave";mySqlParameters[1].Value = intCarNewsID;DataTable dt = myDALMethod.QueryDataTable("前台接待_FRM_QianTaiJieDai_JieChe", mySqlParameters);DataSet ds = new DataSet();ds.Tables.Add(dt);return ds;//返回一个数据集}

 

 

 

 

 

第三步:界面层(UIL)

BLL海马汽车销售系统.前台接待.FRM_QianTaiJieDai_JieChe.FRM_QianTaiJieDai_JieCheClient myFRM_QianTaiJieDai_JieCheClient = new BLL海马汽车销售系统.前台接待.FRM_QianTaiJieDai_JieChe.FRM_QianTaiJieDai_JieCheClient();
private void txtLicensePlateNumber_KeyDown(object sender, KeyEventArgs e){if (e.KeyCode == Keys.Enter) //如果按了回车键{
//根据车牌号提取车辆信息DataTable dtCheLiangXinXi = myFRM_QianTaiJieDai_JieCheClient.FRM_QianTaiJieDai_JieChe_CheLiangXinXi(txtLicensePlateNumber.Text).Tables[0];if (dtCheLiangXinXi.Rows.Count > 0)//如果系统有记录{//给各个相应控件赋值txtCarOwnerName.Text = dtCheLiangXinXi.Rows[0]["CarOwnerName"].ToString();txtLicensePlateNumber.Text = dtCheLiangXinXi.Rows[0]["LicensePlateNumber"].ToString();txtCarBrand.Text = dtCheLiangXinXi.Rows[0]["CarBrand"].ToString();txtBuyCarDate.Text = dtCheLiangXinXi.Rows[0]["BuyCarDate"].ToString();txtCarModels.Text = dtCheLiangXinXi.Rows[0]["CarModelsCode"].ToString();txtMobilePhone.Text = dtCheLiangXinXi.Rows[0]["MobilePhone"].ToString();txtVINCode.Text = dtCheLiangXinXi.Rows[0]["VINCode"].ToString();txtBodyworkColour.Text = dtCheLiangXinXi.Rows[0]["BodyworkColour"].ToString();txtMotorNumber.Text = dtCheLiangXinXi.Rows[0]["MotorNumber"].ToString();txtCarryRepairPerson.Text = dtCheLiangXinXi.Rows[0]["CarOwnerName"].ToString();intChePaiXinXi = Convert.ToInt32(dtCheLiangXinXi.Rows[0]["CarNewsID"]);//查询该车辆历史维修信息DataTable dtLastTimeInTheFactory = myFRM_QianTaiJieDai_JieCheClient.FRM_QianTaiJieDai_JieChe_SelectLastTimeInTheFactory(intChePaiXinXi).Tables[0];if (dtLastTimeInTheFactory.Rows.Count > 0)//如果有历史信息{//提取上次进厂时间txtLastTimeInTheFactory.Text = dtLastTimeInTheFactory.Rows[dtLastTimeInTheFactory.Rows.Count - 1]["EntranceTime"].ToString();}}else//如果系统没有记录{if (MessageBox.Show("当前车辆不存在" + "\n是否新增?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes){blnKuanGuan = true;strLicensePlateNumber = txtLicensePlateNumber.Text;PublicStaticObject.Pub_FRM_KeHuDangAn_Insert = new 顾客关系.FRM_KeHuDangAn_Insert();PublicStaticObject.Pub_FRM_KeHuDangAn_Insert.ShowDialog();顾客关系.FRM_KeHuDangAn_Insert myFRM_KeHuDangAn_Insert = new 顾客关系.FRM_KeHuDangAn_Insert();myFRM_KeHuDangAn_Insert.ShowDialog();//显示客户档案新增界面//查询新增车辆信息DataTable dtCarNews = myFRM_QianTaiJieDai_JieCheClient.FRM_QianTaiJieDai_JieChe_txtChePaiHao_Leave(顾客关系.FRM_KeHuDangAn_Insert.intCarNews).Tables[0];if (dtCarNews.Rows.Count > 0){//给各个相应控件赋值txtCarOwnerName.Text = dtCarNews.Rows[0]["CarOwnerName"].ToString();txtLicensePlateNumber.Text = dtCarNews.Rows[0]["LicensePlateNumber"].ToString();txtCarBrand.Text = dtCarNews.Rows[0]["CarBrand"].ToString();txtBuyCarDate.Text = dtCarNews.Rows[0]["BuyCarDate"].ToString();txtCarModels.Text = dtCarNews.Rows[0]["CarModelsCode"].ToString();txtMobilePhone.Text = dtCarNews.Rows[0]["MobilePhone"].ToString();txtVINCode.Text = dtCarNews.Rows[0]["VINCode"].ToString();txtBodyworkColour.Text = dtCarNews.Rows[0]["BodyworkColour"].ToString();txtMotorNumber.Text = dtCarNews.Rows[0]["MotorNumber"].ToString();txtCarryRepairPerson.Text = dtCarNews.Rows[0]["CarOwnerName"].ToString();intChePaiXinXi = Convert.ToInt32(dtCarNews.Rows[0]["CarNewsID"]);}else{ }}}}}

 

2、提取折扣

第一步:数据库存储过程

 

 

IF(@TYPE='FRM_QianTaiJieDai_JieChe_SelectAttributeMinuteListRemark')BEGINSELECT     AttributeMinuteID, RemarkFROM         AttributeMinuteListWHERE AttributeMinuteList.AttributeMinuteID=@AttributeMinuteID
END

第二步:逻辑层(BLL)

//查询折扣信息
[OperationContract]public DataSet FRM_QianTaiJieDai_JieChe_SelectAttributeMinuteListRemark(int intAttributeMinuteID){SqlParameter[] mySqlParameters ={new SqlParameter("@TYPE",SqlDbType.Char),new SqlParameter("@AttributeMinuteID",SqlDbType.Int),};mySqlParameters[0].Value = "FRM_QianTaiJieDai_JieChe_SelectAttributeMinuteListRemark";mySqlParameters[1].Value = intAttributeMinuteID;DataTable dt = myDALMethod.QueryDataTable("前台接待_FRM_QianTaiJieDai_JieChe", mySqlParameters);DataSet ds = new DataSet();ds.Tables.Add(dt);return ds; //返回数据集}

第三步:界面层(UIL),帐类选择索引改变事件。

BLL海马汽车销售系统.前台接待.FRM_QianTaiJieDai_JieChe.FRM_QianTaiJieDai_JieCheClient myFRM_QianTaiJieDai_JieCheClient = new BLL海马汽车销售系统.前台接待.FRM_QianTaiJieDai_JieChe.FRM_QianTaiJieDai_JieCheClient();private void cboAccountType_SelectedIndexChanged(object sender, EventArgs e){            //根据帐类查询折扣DataTable dtAttributeMinuteListRemark = myFRM_QianTaiJieDai_JieCheClient.FRM_QianTaiJieDai_JieChe_SelectAttributeMinuteListRemark(Convert.ToInt32(cboAccountType.SelectedValue)).Tables[0];//把折扣赋值给相应的控件nudDisCount0.Text = dtAttributeMinuteListRemark.Rows[0]["Remark"].ToString().Trim();}

 

3、提取套餐信息

 

第一步:数据库存储过程

IF(@TYPE='FRM_QianTaiJieDai_JieChe_SelectSetMealItems')BEGINSELECT     AttributeMinuteList.AttributeMinuteID, BM_SetMealItemList.SetMealItemID, BM_SetMealItemList.WorkHoursMoney, BM_SetMealItemList.AttributeMinuteID_AccountType AS AccountTypeID, AttributeMinuteList.AttributeMinuteName AS AccountType, BM_SetMealItemList.WorkHoursItemMinuteID, BM_WorkHoursItemList.ItemCode, BM_WorkHoursItemList.ItemName, BM_WorkHoursItemList.WorkKindID, BM_WorkKindList.WorkKindName, BM_WorkHoursItemMinuteList.GuestAccountWorkHours, BM_WorkHoursItemMinuteList.ParWorkHours, BM_WorkHoursItemMinuteList.IfWorkHoursMultiplyUnitPrice, BM_WorkHoursItemList.WorkHoursItemID
FROM         BM_SetMealItemList INNER JOINAttributeMinuteList ON BM_SetMealItemList.AttributeMinuteID_AccountType = AttributeMinuteList.AttributeMinuteID INNER JOINBM_WorkHoursItemMinuteList ON BM_SetMealItemList.WorkHoursItemMinuteID = BM_WorkHoursItemMinuteList.WorkHoursItemMinuteID INNER JOINBM_WorkHoursItemList ON BM_WorkHoursItemMinuteList.WorkHoursItemID = BM_WorkHoursItemList.WorkHoursItemID INNER JOINBM_WorkKindList ON BM_WorkHoursItemList.WorkKindID = BM_WorkKindList.WorkKindIDWHERE      BM_SetMealItemList.SetMealID=@SetMealID           ENDIF(@TYPE='FRM_QianTaiJieDai_JieChe_SelectSetMealParts')BEGINSELECT     BM_SetMealMinutePartsList.SetMealPatrsID, BM_SetMealMinutePartsList.PartsID, BM_SetMealMinutePartsList.Number, BM_SetMealMinutePartsList.SellPrice, BM_SetMealMinutePartsList.AttributeMinuteID_AccountType AS AccountTypeID, AttributeMinuteList_1.AttributeMinuteName AS AccountType, BM_PartsList.PartsCoding, BM_PartsList.PartsName, AttributeMinuteList.AttributeMinuteName AS Unit, BM_PartsList.AttributeMinuteID_Unit AS UnitID, BM_PartsList.CarModels
FROM         AttributeMinuteList INNER JOINBM_SetMealMinutePartsList INNER JOINBM_PartsList ON BM_SetMealMinutePartsList.PartsID = BM_PartsList.PartsID ON AttributeMinuteList.AttributeMinuteID = BM_PartsList.AttributeMinuteID_Unit INNER JOINAttributeMinuteList AS AttributeMinuteList_1 ON BM_SetMealMinutePartsList.AttributeMinuteID_AccountType = AttributeMinuteList_1.AttributeMinuteID    WHERE      BM_SetMealMinutePartsList.SetMealID=@SetMealID                     
END

第二步:逻辑层(BLL)

//查询套餐的项目信息
[OperationContract]public DataSet FRM_QianTaiJieDai_JieChe_SelectSetMealItems(int intSetMealID){SqlParameter[] mySqlParameters ={new SqlParameter("@TYPE",SqlDbType.Char),new SqlParameter("@SetMealID",SqlDbType.Int),};mySqlParameters[0].Value = "FRM_QianTaiJieDai_JieChe_SelectSetMealItems";mySqlParameters[1].Value = intSetMealID;DataTable dt = myDALMethod.QueryDataTable("前台接待_FRM_QianTaiJieDai_JieChe", mySqlParameters);DataSet ds = new DataSet();ds.Tables.Add(dt);return ds; //返回数据集}
//查询套餐的配件信息[OperationContract]public DataSet FRM_QianTaiJieDai_JieChe_SelectSetMealParts(int intSetMealID){SqlParameter[] mySqlParameters ={new SqlParameter("@TYPE",SqlDbType.Char),new SqlParameter("@SetMealID",SqlDbType.Int),};mySqlParameters[0].Value = "FRM_QianTaiJieDai_JieChe_SelectSetMealParts";mySqlParameters[1].Value = intSetMealID;DataTable dt = myDALMethod.QueryDataTable("前台接待_FRM_QianTaiJieDai_JieChe", mySqlParameters);DataSet ds = new DataSet();ds.Tables.Add(dt);return ds; //返回数据集}

第三步:界面层(UIL),dgv(套餐)的点击事件

BLL海马汽车销售系统.前台接待.FRM_QianTaiJieDai_JieChe.FRM_QianTaiJieDai_JieCheClient myFRM_QianTaiJieDai_JieCheClient = new BLL海马汽车销售系统.前台接待.FRM_QianTaiJieDai_JieChe.FRM_QianTaiJieDai_JieCheClient();
private void dgvSettel_MouseDoubleClick(object sender, MouseEventArgs e){            //根据套餐ID查询套餐设定的项目DataTable dtSettelItems=myFRM_QianTaiJieDai_JieCheClient.FRM_QianTaiJieDai_JieChe_SelectSetMealItems(Convert.ToInt32(dgvSettel.CurrentRow.Cells["套餐ID"].Value)).Tables[0];if (dgvServiceItem.Rows.Count > 0)//如果dgv(维修项目)不为空{for (int i = 0; i < dgvServiceItem.Rows.Count; i++)//循环dgv{if (dtSettelItems.Rows.Count > 0)//如果套餐项目不为空{for (int j = 0; j < dtSettelItems.Rows.Count; j++)//循环表{//如果dgv(维修项目)中,已存在if (Convert.ToInt32(dgvServiceItem.Rows[i].Cells["工时项目ID"].Value) == Convert.ToInt32(dtSettelItems.Rows[j]["WorkHoursItemID"])){dtSettelItems.Rows.Remove(dtSettelItems.Rows[j]);//从表中移除该工时项目,留下没有的}else{}}}}}if (dtSettelItems.Rows.Count > 0)//如果表不为空{for (int i = 0; i < dtSettelItems.Rows.Count; i++)//循环表{//dgv(维修项目)增加一行dgvServiceItem.Rows.Add();//赋值给dgv(维修项目)各列dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["工时项目明细ID1"].Value = Convert.ToInt32(dtSettelItems.Rows[i]["WorkHoursItemMinuteID"]);dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["工时项目ID"].Value = Convert.ToInt32(dtSettelItems.Rows[i]["WorkHoursItemID"]);dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["项目代码1"].Value = dtSettelItems.Rows[i]["ItemCode"];dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["项目名称"].Value = dtSettelItems.Rows[i]["ItemName"];dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["工种"].Value = dtSettelItems.Rows[i]["WorkKindName"];dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["帐类"].Value = dtSettelItems.Rows[i]["AccountType"];dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["帐类ID"].Value = Convert.ToInt32(dtSettelItems.Rows[i]["AccountTypeID"]);dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["工时单价"].Value = dtSettelItems.Rows[i]["WorkHoursMoney"];dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["标准工时"].Value = dtSettelItems.Rows[i]["ParWorkHours"];dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["优惠前工时金额"].Value = Convert.ToDecimal(dtSettelItems.Rows[i]["WorkHoursMoney"]) * Convert.ToDecimal(dtSettelItems.Rows[i]["ParWorkHours"]);dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["项目状态ID"].Value = "20";dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["项目状态"].Value = "待派";//根据帐类查询折扣DataTable dtAttributeMinuteListRemark = myFRM_QianTaiJieDai_JieCheClient.FRM_QianTaiJieDai_JieChe_SelectAttributeMinuteListRemark(Convert.ToInt32(dtSettelItems.Rows[i]["AccountTypeID"])).Tables[0];decimal decZheKo = Convert.ToDecimal(dtAttributeMinuteListRemark.Rows[0]["Remark"]);//计算优惠后工时金额dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["优惠后工时金额"].Value = Convert.ToDecimal(dtSettelItems.Rows[i]["WorkHoursMoney"]) * Convert.ToDecimal(dtSettelItems.Rows[i]["ParWorkHours"]) * decZheKo / 100;dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["工时乘单价"].Value = Convert.ToBoolean(dtSettelItems.Rows[i]["IfWorkHoursMultiplyUnitPrice"]);dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["折扣2"].Value = dtAttributeMinuteListRemark.Rows[0]["Remark"].ToString(); }}//根据套餐ID查询套餐设定的配件DataTable dtSettelParts=myFRM_QianTaiJieDai_JieCheClient.FRM_QianTaiJieDai_JieChe_SelectSetMealParts(Convert.ToInt32(dgvSettel.CurrentRow.Cells["套餐ID"].Value)).Tables[0];if (dgvNeedParts.Rows.Count > 0)//如果dgv(需求配件)不为空{for (int j = 0; j < dgvNeedParts.Rows.Count; j++)//循环dgv{if (dtSettelParts.Rows.Count > 0)//如果套餐配件不为空{for (int k = 0; k < dtSettelParts.Rows.Count; k++)//循环表{//如果dgv(维修项目)中,已存在if (Convert.ToInt32(dgvNeedParts.Rows[j].Cells["配件ID"].Value) == Convert.ToInt32(dtSettelParts.Rows[k]["PartsID"])){dtSettelParts.Rows.Remove(dtSettelParts.Rows[k]);//从表中移除该配件,留下没有的}else{}}}}}if (dtSettelParts.Rows.Count > 0)//如果表不为空{for (int j = 0; j < dtSettelParts.Rows.Count; j++)//循环表{//dgv(维修项目)增加一行dgvNeedParts.Rows.Add();//赋值给dgv(维修项目)各列dgvNeedParts.Rows[dgvNeedParts.Rows.Count - 1].Cells["配件编码"].Value = dtSettelParts.Rows[j]["PartsCoding"];dgvNeedParts.Rows[dgvNeedParts.Rows.Count - 1].Cells["配件名称"].Value = dtSettelParts.Rows[j]["PartsName"];dgvNeedParts.Rows[dgvNeedParts.Rows.Count - 1].Cells["车型"].Value = dtSettelParts.Rows[j]["CarModels"];dgvNeedParts.Rows[dgvNeedParts.Rows.Count - 1].Cells["帐类2"].Value = dtSettelParts.Rows[j]["AccountType"];dgvNeedParts.Rows[dgvNeedParts.Rows.Count - 1].Cells["帐类ID2"].Value = Convert.ToInt32(dtSettelParts.Rows[j]["AccountTypeID"]);dgvNeedParts.Rows[dgvNeedParts.Rows.Count - 1].Cells["需求数量"].Value = dtSettelParts.Rows[j]["Number"];dgvNeedParts.Rows[dgvNeedParts.Rows.Count - 1].Cells["销售单价"].Value = dtSettelParts.Rows[j]["SellPrice"];dgvNeedParts.Rows[dgvNeedParts.Rows.Count - 1].Cells["单位"].Value = dtSettelParts.Rows[j]["Unit"];dgvNeedParts.Rows[dgvNeedParts.Rows.Count - 1].Cells["配件ID"].Value = Convert.ToInt32(dtSettelParts.Rows[j]["PartsID"]);dgvNeedParts.Rows[dgvNeedParts.Rows.Count - 1].Cells["备注"].Value = "";//根据帐类查询折扣DataTable dtAttributeMinuteListRemark = myFRM_QianTaiJieDai_JieCheClient.FRM_QianTaiJieDai_JieChe_SelectAttributeMinuteListRemark(Convert.ToInt32(dtSettelParts.Rows[j]["AccountTypeID"])).Tables[0];decimal decZheKo = Convert.ToDecimal(dtAttributeMinuteListRemark.Rows[0]["Remark"]);//计算优惠后金额dgvNeedParts.Rows[dgvNeedParts.Rows.Count - 1].Cells["优惠后金额"].Value = Convert.ToDecimal(dtSettelParts.Rows[j]["Number"]) * Convert.ToDecimal(dtSettelParts.Rows[j]["SellPrice"]) * decZheKo / 100;dgvNeedParts.Rows[dgvNeedParts.Rows.Count - 1].Cells["折扣1"].Value = dtAttributeMinuteListRemark.Rows[0]["Remark"].ToString();}}dgvSettel.Visible = false;//dgv(套餐)不可见}

4、转维修项目

 

第一步:界面层(UIL),(图四)dgv(建议维修项目)中的【转维修项目】按钮的点击事件。

private void btnShiftServiceItems_Click(object sender, EventArgs e){if (dgvSuggestServiceItem.SelectedRows.Count > 0)//dgv(建议维修项目)不为空{if (dgvServiceItem.Rows.Count > 0)//dgv(维修项目)不为空{for (int i = 0; i < dgvServiceItem.Rows.Count; i++)//循环dgv(维修项目){//如果该项目已存在if (Convert.ToInt32(dgvSuggestServiceItem.CurrentRow.Cells["工时项目ID1"].Value) == Convert.ToInt32(dgvServiceItem.Rows[i].Cells["工时项目ID"].Value)){MessageBox.Show("已存在该项目,不能转!");return;}}}//dgv(维修项目)增加一行dgvServiceItem.Rows.Add();//赋值给dgv(维修项目)各列dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["工时项目明细ID1"].Value = dgvSuggestServiceItem.CurrentRow.Cells["工时项目明细ID2"].Value;dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["项目代码1"].Value = dgvSuggestServiceItem.CurrentRow.Cells["项目代号"].Value;dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["项目名称"].Value = dgvSuggestServiceItem.CurrentRow.Cells["项目名称3"].Value;dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["工种"].Value = dgvSuggestServiceItem.CurrentRow.Cells["工种3"].Value;dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["帐类"].Value = dgvSuggestServiceItem.CurrentRow.Cells["帐类3"].Value;dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["帐类ID"].Value = Convert.ToInt32(dgvSuggestServiceItem.CurrentRow.Cells["帐类ID3"].Value);dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["工时单价"].Value = dgvSuggestServiceItem.CurrentRow.Cells["工时单价2"].Value;dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["标准工时"].Value = dgvSuggestServiceItem.CurrentRow.Cells["工时3"].Value;dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["优惠前工时金额"].Value = Convert.ToDecimal(dgvSuggestServiceItem.CurrentRow.Cells["工时单价2"].Value) * Convert.ToDecimal(dgvSuggestServiceItem.CurrentRow.Cells["工时3"].Value);dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["项目状态ID"].Value = "20";dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["项目状态"].Value = "待派";                              dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["工时乘单价"].Value = true;//根据帐类查询折扣DataTable dtAttributeMinuteListRemark = myFRM_QianTaiJieDai_JieCheClient.FRM_QianTaiJieDai_JieChe_SelectAttributeMinuteListRemark(Convert.ToInt32(dgvSuggestServiceItem.CurrentRow.Cells["帐类ID3"].Value)).Tables[0];decimal decZheKo = Convert.ToDecimal(dtAttributeMinuteListRemark.Rows[0]["Remark"]);//计算优惠后工时金额dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["优惠后工时金额"].Value = Convert.ToDecimal(dgvSuggestServiceItem.CurrentRow.Cells["工时单价2"].Value) * Convert.ToDecimal(dgvSuggestServiceItem.CurrentRow.Cells["工时3"].Value)*decZheKo /100;dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["折扣2"].Value = Convert.ToDecimal(dtAttributeMinuteListRemark.Rows[0]["Remark"]);dgvSuggestServiceItem.Rows.RemoveAt(dgvSuggestServiceItem.CurrentRow.Index);}else{MessageBox.Show("请选择数据!");}}
private void btnShiftServiceItems_Click(object sender, EventArgs e){if (dgvSuggestServiceItem.SelectedRows.Count > 0)//dgv(建议维修项目)不为空{if (dgvServiceItem.Rows.Count > 0)//dgv(维修项目)不为空{for (int i = 0; i < dgvServiceItem.Rows.Count; i++)//循环dgv(维修项目){//如果该项目已存在if (Convert.ToInt32(dgvSuggestServiceItem.CurrentRow.Cells["工时项目ID1"].Value) == Convert.ToInt32(dgvServiceItem.Rows[i].Cells["工时项目ID"].Value)){MessageBox.Show("已存在该项目,不能转!");return;}}}//dgv(维修项目)增加一行dgvServiceItem.Rows.Add();//赋值给dgv(维修项目)各列dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["工时项目明细ID1"].Value = dgvSuggestServiceItem.CurrentRow.Cells["工时项目明细ID2"].Value;dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["项目代码1"].Value = dgvSuggestServiceItem.CurrentRow.Cells["项目代号"].Value;dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["项目名称"].Value = dgvSuggestServiceItem.CurrentRow.Cells["项目名称3"].Value;dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["工种"].Value = dgvSuggestServiceItem.CurrentRow.Cells["工种3"].Value;dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["帐类"].Value = dgvSuggestServiceItem.CurrentRow.Cells["帐类3"].Value;dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["帐类ID"].Value = Convert.ToInt32(dgvSuggestServiceItem.CurrentRow.Cells["帐类ID3"].Value);dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["工时单价"].Value = dgvSuggestServiceItem.CurrentRow.Cells["工时单价2"].Value;dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["标准工时"].Value = dgvSuggestServiceItem.CurrentRow.Cells["工时3"].Value;dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["优惠前工时金额"].Value = Convert.ToDecimal(dgvSuggestServiceItem.CurrentRow.Cells["工时单价2"].Value) * Convert.ToDecimal(dgvSuggestServiceItem.CurrentRow.Cells["工时3"].Value);dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["项目状态ID"].Value = "20";dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["项目状态"].Value = "待派";                              dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["工时乘单价"].Value = true;//根据帐类查询折扣DataTable dtAttributeMinuteListRemark = myFRM_QianTaiJieDai_JieCheClient.FRM_QianTaiJieDai_JieChe_SelectAttributeMinuteListRemark(Convert.ToInt32(dgvSuggestServiceItem.CurrentRow.Cells["帐类ID3"].Value)).Tables[0];decimal decZheKo = Convert.ToDecimal(dtAttributeMinuteListRemark.Rows[0]["Remark"]);//计算优惠后工时金额dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["优惠后工时金额"].Value = Convert.ToDecimal(dgvSuggestServiceItem.CurrentRow.Cells["工时单价2"].Value) * Convert.ToDecimal(dgvSuggestServiceItem.CurrentRow.Cells["工时3"].Value)*decZheKo /100;dgvServiceItem.Rows[dgvServiceItem.Rows.Count - 1].Cells["折扣2"].Value = Convert.ToDecimal(dtAttributeMinuteListRemark.Rows[0]["Remark"]);dgvSuggestServiceItem.Rows.RemoveAt(dgvSuggestServiceItem.CurrentRow.Index);}else{MessageBox.Show("请选择数据!");}}

5、库存不足时,新增配件订单,(图二)中【数量】的值改变事件。【新增订单】界面见下图:

第一步:数据库存储过程

 

IF(@TYPE='FRM_YuYueGuanLi_Insert_SelectKuCunShu')    BEGINSELECT     PartsID,LTRIM(RTRIM(StockNumber))AS StockNumberFROM         BM_StockListWHERE PartsID=@PartsIDENDIF(@TYPE='FRM_YuYueGuanLi_Insert_YuYuePeiJianShu')BEGINSELECT     PW_BespeakBillList.BespeakBillID, PW_BespeakPartsList.NeedNumber, BM_PartsList.PartsIDFROM         PW_BespeakBillList INNER JOINPW_BespeakPartsList ON PW_BespeakBillList.BespeakBillID = PW_BespeakPartsList.BespeakBillID INNER JOINBM_PartsList ON PW_BespeakPartsList.PartsID = BM_PartsList.PartsIDWHERE     (PW_BespeakBillList.IfEffective = 1 and PW_BespeakBillList.IfResourceRelease=0 AND PW_BespeakBillList.IfResourceRelease=0)ENDIF(@TYPE='FRM_YuYueGuanLi_Insert_WeiXiuXuQiuPeiJianShu')BEGINSELECT     PW_ServiceWorkBillList.ServiceWorkBillID, PW_ServiceNeedPartsList.NeedNumber, BM_PartsList.PartsIDFROM         PW_ServiceWorkBillList INNER JOINPW_ServiceNeedPartsList ON PW_ServiceWorkBillList.ServiceWorkBillID = PW_ServiceNeedPartsList.ServiceWorkBillID INNER JOINBM_PartsList ON PW_ServiceNeedPartsList.PartsID = BM_PartsList.PartsIDWHERE  PW_ServiceWorkBillList.IfResourceRelease=0END

 

 

 

 

 

第二步:逻辑层(BLL)

//根据配件查询库存
[OperationContract]public DataSet FRM_YuYueGuanLi_Insert_SelectKuCunShu(int intPeiJianID){SqlParameter[] mySqlParameters ={new SqlParameter("@TYPE",SqlDbType.Char),new SqlParameter("@PartsID",SqlDbType.Int),};mySqlParameters[0].Value = "FRM_YuYueGuanLi_Insert_SelectKuCunShu";mySqlParameters[1].Value=intPeiJianID;DataTable dt = myDALMethod.QueryDataTable("预约管理_FRM_YuYueGuanLi_Insert", mySqlParameters);DataSet ds = new DataSet();ds.Tables.Add(dt);return ds; //返回数据集}
//查询预约配件数[OperationContract]public DataSet FRM_YuYueGuanLi_Insert_YuYuePeiJianShu(){SqlParameter[] mySqlParameters ={new SqlParameter("@TYPE",SqlDbType.Char),};mySqlParameters[0].Value = "FRM_YuYueGuanLi_Insert_YuYuePeiJianShu";DataTable dt = myDALMethod.QueryDataTable("预约管理_FRM_YuYueGuanLi_Insert", mySqlParameters);DataSet ds = new DataSet();ds.Tables.Add(dt);return ds; //返回数据集}
//查询维修工单配件数[OperationContract]public DataSet FRM_YuYueGuanLi_Insert_WeiXiuXuQiuPeiJianShu(){SqlParameter[] mySqlParameters ={new SqlParameter("@TYPE",SqlDbType.Char),};mySqlParameters[0].Value = "FRM_YuYueGuanLi_Insert_WeiXiuXuQiuPeiJianShu";DataTable dt = myDALMethod.QueryDataTable("预约管理_FRM_YuYueGuanLi_Insert", mySqlParameters);DataSet ds = new DataSet();ds.Tables.Add(dt);return ds; //返回数据集}

第三步:界面层(UIL)

BLL海马汽车销售系统.预约管理.FRM_YuYueGuanLi_Insert.FRM_YuYueGuanLi_InsertClient myFRM_YuYueGuanLi_InsertClient =new BLL海马汽车销售系统.预约管理.FRM_YuYueGuanLi_Insert.FRM_YuYueGuanLi_InsertClient();
private void txtNeedNumber_TextChanged(object sender, EventArgs e){decimal decKuCun = 0;decimal decYuYuePeiJianShu = 0;decimal decWeiXiuXuQiuPeiJianShu = 0;if (i == 1){//DataTable dtPeiJianXuanZe = myFRM_YuYueGuanLi_InsertClient.FRM_YuYueGuanLi_Insert_cboPeiJianBianMa_SelectedIndexChanged(Convert.ToInt32(cboPartsCoding.SelectedValue)).Tables[0];//txtPartsName.Text = dtPeiJianXuanZe.Rows[0]["PartsName"].ToString();//txtCarModels.Text = dtPeiJianXuanZe.Rows[0]["CarModels"].ToString();//txtPrice.Text = dtPeiJianXuanZe.Rows[0]["SellPrice"].ToString();//根据配件查询库存DataTable dtKuCun = myFRM_YuYueGuanLi_InsertClient.FRM_YuYueGuanLi_Insert_SelectKuCunShu(Convert.ToInt32(cboPeiJianBianMa.SelectedValue)).Tables[0];for (int j = 0; j < dtKuCun.Rows.Count; j++){//计算所有仓库的该配件总量decKuCun += Convert.ToDecimal(dtKuCun.Rows[j]["StockNumber"]);}//查询预约配件数DataTable dtYuYuePeiJianShu = myFRM_YuYueGuanLi_InsertClient.FRM_YuYueGuanLi_Insert_YuYuePeiJianShu().Tables[0];for (int J = 0; J < dtYuYuePeiJianShu.Rows.Count; J++){if (Convert.ToInt32(cboPeiJianBianMa.SelectedValue) == Convert.ToInt32(dtYuYuePeiJianShu.Rows[J]["NeedNumber"])){//合计预约配件数decYuYuePeiJianShu += Convert.ToInt32(dtYuYuePeiJianShu.Rows[J]["NeedNumber"]);}}//查询维修工单配件数DataTable dtWeiXiuXuQiuPeiJianShu = myFRM_YuYueGuanLi_InsertClient.FRM_YuYueGuanLi_Insert_WeiXiuXuQiuPeiJianShu().Tables[0];for (int k = 0; k < dtWeiXiuXuQiuPeiJianShu.Rows.Count; k++){if (Convert.ToInt32(cboPeiJianBianMa.SelectedValue) == Convert.ToInt32(dtWeiXiuXuQiuPeiJianShu.Rows[0]["NeedNumber"])){//合计维修工单配件数decWeiXiuXuQiuPeiJianShu += Convert.ToInt32(dtWeiXiuXuQiuPeiJianShu.Rows[0]["NeedNumber"]);}}//计算可用配件数decimal  decKoXianShu = Convert.ToInt32(decKuCun - decYuYuePeiJianShu - decWeiXiuXuQiuPeiJianShu);if (Convert.ToDecimal(txtNeedNumber.Text) > decKoXianShu)//如果库存不足{if (MessageBox.Show("库存不足,是否生成配件订单表!", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes){blnShiFouDingGouPeiJian = true;//给公共变量赋值intPeiJianID = Convert.ToInt32(cboPeiJianBianMa.SelectedValue);//给公共变量赋值strPeiJianMingCheng = txtPartsCoding.Text;//给公共变量赋值PublicStaticObject.Pub_FRM_DingDanGuanLi_Insert = new 库存管理.FRM_DingDanGuanLi_Insert();PublicStaticObject.Pub_FRM_DingDanGuanLi_Insert.ShowDialog();库存管理.FRM_DingDanGuanLi_Insert myFRM_DingDanGuanLi_Insert = new 库存管理.FRM_DingDanGuanLi_Insert();myFRM_DingDanGuanLi_Insert.ShowDialog();//打开订单新增界面}else{}}}}

 

 

 

 

 

 

 

 

 

以上仅供学习参考,禁止用于商业用途!!!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

这篇关于海马汽车经销商管理系统技术解析(十一)前台接待模块的接车功能的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/GX_LongGuoQiang/article/details/46335051
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/414811

相关文章

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

MyBatis中$与#的区别解析

《MyBatis中$与#的区别解析》文章浏览阅读314次,点赞4次,收藏6次。MyBatis使用#{}作为参数占位符时,会创建预处理语句(PreparedStatement),并将参数值作为预处理语句... 目录一、介绍二、sql注入风险实例一、介绍#(井号):MyBATis使用#{}作为参数占位符时,会

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

Qt使用QSqlDatabase连接MySQL实现增删改查功能

《Qt使用QSqlDatabase连接MySQL实现增删改查功能》这篇文章主要为大家详细介绍了Qt如何使用QSqlDatabase连接MySQL实现增删改查功能,文中的示例代码讲解详细,感兴趣的小伙伴... 目录一、创建数据表二、连接mysql数据库三、封装成一个完整的轻量级 ORM 风格类3.1 表结构

PostgreSQL的扩展dict_int应用案例解析

《PostgreSQL的扩展dict_int应用案例解析》dict_int扩展为PostgreSQL提供了专业的整数文本处理能力,特别适合需要精确处理数字内容的搜索场景,本文给大家介绍PostgreS... 目录PostgreSQL的扩展dict_int一、扩展概述二、核心功能三、安装与启用四、字典配置方法

深度解析Java DTO(最新推荐)

《深度解析JavaDTO(最新推荐)》DTO(DataTransferObject)是一种用于在不同层(如Controller层、Service层)之间传输数据的对象设计模式,其核心目的是封装数据,... 目录一、什么是DTO?DTO的核心特点:二、为什么需要DTO?(对比Entity)三、实际应用场景解析

深度解析Java项目中包和包之间的联系

《深度解析Java项目中包和包之间的联系》文章浏览阅读850次,点赞13次,收藏8次。本文详细介绍了Java分层架构中的几个关键包:DTO、Controller、Service和Mapper。_jav... 目录前言一、各大包1.DTO1.1、DTO的核心用途1.2. DTO与实体类(Entity)的区别1

Java中的雪花算法Snowflake解析与实践技巧

《Java中的雪花算法Snowflake解析与实践技巧》本文解析了雪花算法的原理、Java实现及生产实践,涵盖ID结构、位运算技巧、时钟回拨处理、WorkerId分配等关键点,并探讨了百度UidGen... 目录一、雪花算法核心原理1.1 算法起源1.2 ID结构详解1.3 核心特性二、Java实现解析2.

mysql表操作与查询功能详解

《mysql表操作与查询功能详解》本文系统讲解MySQL表操作与查询,涵盖创建、修改、复制表语法,基本查询结构及WHERE、GROUPBY等子句,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随... 目录01.表的操作1.1表操作概览1.2创建表1.3修改表1.4复制表02.基本查询操作2.1 SE

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提