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

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

前台接待

 

主界面,见下图:

 

接车

 

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

 

(图一)

 

(图二)

(图三)

(图四)

(图五)

(图六)

 

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

控件

说明

文本框(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

相关文章

99%的人都选错了! 路由器WiFi双频合一还是分开好的专业解析与适用场景探讨

《99%的人都选错了!路由器WiFi双频合一还是分开好的专业解析与适用场景探讨》关于双频路由器的“双频合一”与“分开使用”两种模式,用户往往存在诸多疑问,本文将从多个维度深入探讨这两种模式的优缺点,... 在如今“没有WiFi就等于与世隔绝”的时代,越来越多家庭、办公室都开始配置双频无线路由器。但你有没有注

Python中的sort()和sorted()用法示例解析

《Python中的sort()和sorted()用法示例解析》本文给大家介绍Python中list.sort()和sorted()的使用区别,详细介绍其参数功能及Timsort排序算法特性,涵盖自适应... 目录一、list.sort()参数说明常用内置函数基本用法示例自定义函数示例lambda表达式示例o

python urllib模块使用操作方法

《pythonurllib模块使用操作方法》Python提供了多个库用于处理URL,常用的有urllib、requests和urlparse(Python3中为urllib.parse),下面是这些... 目录URL 处理库urllib 模块requests 库urlparse 和 urljoin编码和解码

SpringBoot加载profile全面解析

《SpringBoot加载profile全面解析》SpringBoot的Profile机制通过多配置文件和注解实现环境隔离,支持开发、测试、生产等不同环境的灵活配置切换,无需修改代码,关键点包括配置文... 目录题目详细答案什么是 Profile配置 Profile使用application-{profil

MySQL的触发器全解析(创建、查看触发器)

《MySQL的触发器全解析(创建、查看触发器)》MySQL触发器是与表关联的存储程序,当INSERT/UPDATE/DELETE事件发生时自动执行,用于维护数据一致性、日志记录和校验,优点包括自动执行... 目录触发器的概念:创建触www.chinasem.cn发器:查看触发器:查看当前数据库的所有触发器的定

Springboot项目登录校验功能实现

《Springboot项目登录校验功能实现》本文介绍了Web登录校验的重要性,对比了Cookie、Session和JWT三种会话技术,分析其优缺点,并讲解了过滤器与拦截器的统一拦截方案,推荐使用JWT... 目录引言一、登录校验的基本概念二、HTTP协议的无状态性三、会话跟android踪技术1. Cook

创建springBoot模块没有目录结构的解决方案

《创建springBoot模块没有目录结构的解决方案》2023版IntelliJIDEA创建模块时可能出现目录结构识别错误,导致文件显示异常,解决方法为选择模块后点击确认,重新校准项目结构设置,确保源... 目录创建spChina编程ringBoot模块没有目录结构解决方案总结创建springBoot模块没有目录

Java中的volatile关键字多方面解析

《Java中的volatile关键字多方面解析》volatile用于保证多线程变量可见性与禁止重排序,适用于状态标志、单例模式等场景,但不保证原子性,相较synchronized更轻量,但需谨慎使用以... 目录1. volatile的作用1.1 保证可见性1.2 禁止指令重排序2. volatile的使用

Python lambda函数(匿名函数)、参数类型与递归全解析

《Pythonlambda函数(匿名函数)、参数类型与递归全解析》本文详解Python中lambda匿名函数、灵活参数类型和递归函数三大进阶特性,分别介绍其定义、应用场景及注意事项,助力编写简洁高效... 目录一、lambda 匿名函数:简洁的单行函数1. lambda 的定义与基本用法2. lambda

基于Spring Boot 的小区人脸识别与出入记录管理系统功能

《基于SpringBoot的小区人脸识别与出入记录管理系统功能》文章介绍基于SpringBoot框架与百度AI人脸识别API的小区出入管理系统,实现自动识别、记录及查询功能,涵盖技术选型、数据模型... 目录系统功能概述技术栈选择核心依赖配置数据模型设计出入记录实体类出入记录查询表单出入记录 VO 类(用于