海马汽车经销商管理系统技术解析(十三)结算

来源:互联网 发布:javzoo最新域名2017 编辑:程序博客网 时间:2024/04/28 14:43

结算

对已竣工的维修工单所产生的配件费、项目工时金额等各项费用进行结算开单。

点击【定位】,弹出dgv(维修工单)。见下图:


点击【结算】,弹出【结算操作框】界面。见下图:



完成结算单据的状态。见下图:



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_SettleAccountsBillList)

列名

数据类型

主键/外键

说明

SettleAccountsBillID

int

主键

结算单ID

SettleAccountsBillNumber

nchar (20)

 

结算单号

ServiceWorkBillID

int

外键

维修工单表,维修工单ID

PrivilegeBeforeAllMoney

decimal (18, 2)

 

优惠前总金额

PrivilegeAllMoney

decimal (18, 2)

 

优惠总金额

PrivilegeAfferWorkHoursMoney

decimal (18, 2)

 

优惠后工时金额

PrivilegeAfferMaterial

decimal (18, 2)

 

优惠后材料金额

PrivilegeAfferElseMoney

decimal (18, 2)

 

优惠后其他金额

PrivilegeAfferAllMoney

decimal (18, 2)

 

优惠后总金额

功能实现

1、计算各项费用——【结算】按钮点击事件。


第一步:数据库存储过程

IF(@TYPE='FRM_JieSuan_ChaXunleiShiFouYiJieSuan') BEGIN SELECT     SettleAccountsBillID FROM         PW_SettleAccountsBillList WHERE PW_SettleAccountsBillList.ServiceWorkBillID=@ServiceWorkBillID END

第二步:逻辑层(BLL)

//查询单据结算否[OperationContract]        public DataSet FRM_JieSuan_ChaXunleiShiFouYiJieSuan(int intServiceWorkBillID)        {            SqlParameter[] mySqlParameters =        {            new SqlParameter("@TYPE",SqlDbType.Char),            new SqlParameter("@ServiceWorkBillID",SqlDbType.Int),        };            mySqlParameters[0].Value = "FRM_JieSuan_ChaXunleiShiFouYiJieSuan";            mySqlParameters[1].Value = intServiceWorkBillID;            DataTable dt = myDALMethod.QueryDataTable("前台管理_FRM_JieSuan", mySqlParameters);            DataSet ds = new DataSet();            ds.Tables.Add(dt);            return ds; //返回数据集        }

第三步:界面层(UIL)

BLL海马汽车销售系统.前台接待.FRM_QianTaiJieDai_JieSuan.FRM_QianTaiJieDai_JieSuanClient myFRM_QianTaiJieDai_JieSuanClient =             new BLL海马汽车销售系统.前台接待.FRM_QianTaiJieDai_JieSuan.FRM_QianTaiJieDai_JieSuanClient();public static int ServiceWorkBillID = 0; //公共静态变量public static decimal decYouHuiQianZongJinE=0; //公共静态变量public static decimal YouHuiQianZongJinE = 0; //公共静态变量public static decimal decYouHuiZongJinE = 0; //公共静态变量public static decimal decYouHuiHouGongShiJinE = 0; //公共静态变量public static decimal decYouHuiHouCaiLiaoJinE = 0; //公共静态变量public static decimal decYouHuiHouQiTaJinE = 0; //公共静态变量private void btnJieSuan_Click(object sender, EventArgs e)        {            if (txtWorkOddNumBer.Text!="")//如果工单号不为空            {                //根据工单号ID查询该单据是否已结算                DataTable dtJieSuan = myFRM_QianTaiJieDai_JieSuanClient.FRM_JieSuan_ChaXunleiShiFouYiJieSuan(Convert.ToInt32(dtServiceWorkingBill.Rows[0]["ServiceWorkBillID"])).Tables[0];                if (dtJieSuan.Rows.Count > 0)//如果已结算                {                    MessageBox.Show("此单据已结算,请另选!");                    return;                }                if (Convert.ToString(dtServiceWorkingBill.Rows[0]["CarStatus"]).Trim() == "已收款")//如果已收款                {                    MessageBox.Show("此单据已收款,请另选!");                    return;                }                decimal decSeviceItemMoney = 0;//变量                decimal decServiceNeedPartsMoney = 0;//变量                decimal decAppendItemMoney = 0;//变量                for (int i = 0; i < dgvServiceItem.Rows.Count; i++)//循环遍历                {                    //计算维修项目的优惠后总金额                    decSeviceItemMoney += Convert.ToDecimal(dgvServiceItem.Rows[i].Cells["优惠后工时金额"].Value);                }                for (int j = 0; j < dgvNeedParts.Rows.Count; j++)                {                    //计算维修配件的优惠后总金额                    decServiceNeedPartsMoney += Convert.ToDecimal(dgvNeedParts.Rows[j].Cells["优惠后金额"].Value) ;                }                for (int k = 0; k < dgvAppendItem.Rows.Count; k++)                {                    //计算附加项目的优惠后总金额                    decAppendItemMoney += Convert.ToDecimal(dgvAppendItem.Rows[k].Cells["金额"].Value);                }                decYouHuiQianZongJinE = decSeviceItemMoney + decServiceNeedPartsMoney + decAppendItemMoney;//优惠后金额合计                decYouHuiHouGongShiJinE = decSeviceItemMoney;//优惠后工时总金额                decYouHuiHouCaiLiaoJinE = decServiceNeedPartsMoney;//优惠后配件总金额                decYouHuiHouQiTaJinE = decAppendItemMoney;//优惠后附加项目总金额                //初始化变量                decSeviceItemMoney = 0;                decServiceNeedPartsMoney = 0;                decAppendItemMoney = 0;                for (int i = 0; i < dgvServiceItem.Rows.Count; i++)                {                    //计算维修项目优惠前总金额                    decSeviceItemMoney += Convert.ToDecimal(dgvServiceItem.Rows[i].Cells["优惠前工时金额"].Value);                }                for (int j = 0; j < dgvNeedParts.Rows.Count; j++)                {                    //计算配件优惠前总金额                    decServiceNeedPartsMoney += Convert.ToDecimal(dgvNeedParts.Rows[j].Cells["销售单价"].Value) * Convert.ToDecimal(dgvNeedParts.Rows[j].Cells["需求数量"].Value);                }                for (int k = 0; k < dgvAppendItem.Rows.Count; k++)                {                    //计算附加项目优惠前总金额                    decAppendItemMoney += Convert.ToDecimal(dgvAppendItem.Rows[k].Cells["金额"].Value) / (Convert.ToDecimal(dgvAppendItem.Rows[k].Cells["折扣"].Value) / 100);                }                YouHuiQianZongJinE = decSeviceItemMoney + decServiceNeedPartsMoney + decAppendItemMoney;//优惠前金额合计                //初始化变量                decSeviceItemMoney = 0;                decServiceNeedPartsMoney = 0;                decAppendItemMoney = 0;                for (int i = 0; i < dgvServiceItem.Rows.Count; i++)                {                    //维修项目优惠总金额                    decSeviceItemMoney += Convert.ToDecimal(dgvServiceItem.Rows[i].Cells["优惠前工时金额"].Value) * (1 - (Convert.ToDecimal(dgvServiceItem.Rows[i].Cells["折扣2"].Value)/100));                }                for (int j = 0; j < dgvNeedParts.Rows.Count; j++)                {                    //维修配件优惠总金额                    decServiceNeedPartsMoney += Convert.ToDecimal(dgvNeedParts.Rows[j].Cells["销售单价"].Value) * Convert.ToDecimal(dgvNeedParts.Rows[j].Cells["需求数量"].Value) * (1 - (Convert.ToDecimal(dgvNeedParts.Rows[j].Cells["折扣1"].Value) / 100));                }                for (int k = 0; k < dgvAppendItem.Rows.Count; k++)                {                    //附加项目优惠总金额                    decAppendItemMoney +=(Convert.ToDecimal(dgvAppendItem.Rows[k].Cells["金额"].Value) / (Convert.ToDecimal(dgvAppendItem.Rows[k].Cells["折扣"].Value) / 100))-(Convert.ToDecimal(dgvAppendItem.Rows[k].Cells["金额"].Value));                }                decYouHuiZongJinE = decSeviceItemMoney + decServiceNeedPartsMoney + decAppendItemMoney;//优惠金额合计                               FRM_JieSuan_JieSuan myFRM_JieSuan_JieSuan = new FRM_JieSuan_JieSuan();        myFRM_JieSuan_JieSuan.ShowDialog();//显示【结算操作框】界面            }            else            {                MessageBox.Show("请选择单据!");            }        }

2、【结算操作框】界面的【确定】按钮点击事件。


第一步:数据库存储过程

IF(@TYPE='FRM_JieSuan_btnConfirm_Click') BEGIN INSERT     PW_SettleAccountsBillList(SettleAccountsBillNumber, ServiceWorkBillID, PrivilegeBeforeAllMoney, PrivilegeAllMoney, PrivilegeAfferWorkHoursMoney, PrivilegeAfferMaterial, PrivilegeAfferElseMoney,                       PrivilegeAfferAllMoney)VALUES         (@SettleAccountsBillNumber, @ServiceWorkBillID, @PrivilegeBeforeAllMoney,                @PrivilegeAllMoney, @PrivilegeAfferWorkHoursMoney, @PrivilegeAfferMaterial,                 @PrivilegeAfferElseMoney,@PrivilegeAfferAllMoney) END IF(@TYPE='FRM_JieSuan_btnConfirm_Click_UpdateCarStatus') BEGIN UPDATE     PW_ServiceWorkBillListSET         AttributeMinuteID_CarStatus =18WHERE ServiceWorkBillID=@ServiceWorkBillID END

第二步:逻辑层(BLL)

//保存结算单[OperationContract]        public int FRM_JieSuan_btnConfirm_Click(string strSettleAccountsBillNumber, int intServiceWorkBillID, decimal decPrivilegeBeforeAllMoney, decimal decPrivilegeAllMoney,            decimal decPrivilegeAfferWorkHoursMoney, decimal decPrivilegeAfferMaterial, decimal decPrivilegeAfferElseMoney, decimal decPrivilegeAfferAllMoney)        {            SqlParameter[] mySqlParameters =        {            new SqlParameter("@TYPE",SqlDbType.Char),            new SqlParameter("@SettleAccountsBillNumber",SqlDbType.NChar),            new SqlParameter("@ServiceWorkBillID",SqlDbType.Int),            new SqlParameter("@PrivilegeBeforeAllMoney",SqlDbType.Decimal),            new SqlParameter("@PrivilegeAllMoney",SqlDbType.Decimal),            new SqlParameter("@PrivilegeAfferWorkHoursMoney",SqlDbType.Decimal),            new SqlParameter("@PrivilegeAfferMaterial",SqlDbType.Decimal),            new SqlParameter("@PrivilegeAfferElseMoney",SqlDbType.Decimal),            new SqlParameter("@PrivilegeAfferAllMoney",SqlDbType.Decimal),        };            mySqlParameters[0].Value = "FRM_JieSuan_btnConfirm_Click";            mySqlParameters[1].Value = strSettleAccountsBillNumber;            mySqlParameters[2].Value=intServiceWorkBillID;            mySqlParameters[3].Value = decPrivilegeBeforeAllMoney;            mySqlParameters[4].Value=decPrivilegeAllMoney;            mySqlParameters[5].Value = decPrivilegeAfferWorkHoursMoney;            mySqlParameters[6].Value=decPrivilegeAfferMaterial;            mySqlParameters[7].Value = decPrivilegeAfferElseMoney;            mySqlParameters[8].Value=decPrivilegeAfferAllMoney;            return myDALMethod.UpdateData("前台管理_FRM_JieSuan", mySqlParameters);  //返回值为1是正常的,小于0是异常。                 }//修改车辆状态        [OperationContract]        public int FRM_JieSuan_btnConfirm_Click_UpdateCarStatus(int intServiceWorkBillID)        {            SqlParameter[] mySqlParameters =        {            new SqlParameter("@TYPE",SqlDbType.Char),            new SqlParameter("@ServiceWorkBillID",SqlDbType.Int),        };            mySqlParameters[0].Value = "FRM_JieSuan_btnConfirm_Click_UpdateCarStatus";            mySqlParameters[1].Value = intServiceWorkBillID;            return myDALMethod.UpdateData("前台管理_FRM_JieSuan", mySqlParameters);            //返回值为1是正常的,小于0是异常。          }

第三步:界面层(UIL)

BLL海马汽车销售系统.前台接待.FRM_QianTaiJieDai_JieSuan.FRM_QianTaiJieDai_JieSuanClient myFRM_QianTaiJieDai_JieSuanClient =             new BLL海马汽车销售系统.前台接待.FRM_QianTaiJieDai_JieSuan.FRM_QianTaiJieDai_JieSuanClient();private void btnConfirm_Click(object sender, EventArgs e)        {            //提示对话框,如果点击【是】            if (MessageBox.Show("各项费用是否已核准?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)            {                string strXiaoShouShouKuan = "JS";                string strSettleAccountsBillNumber = ShengChengDanHao(strXiaoShouShouKuan);//生成结算单号                //给各个变量赋值                int intServiceWorkBillID = FRM_JieSuan.ServiceWorkBillID;                decimal decPrivilegeBeforeAllMoney = Convert.ToDecimal(txtPrivilegeBeforeAllMoney.Text);                decimal decPrivilegeAllMoney = Convert.ToDecimal(txtPrivilegeAllMoney.Text);                decimal decPrivilegeAfferWorkHoursMoney = Convert.ToDecimal(txtPrivilegeAfferWorkHoursMoney.Text);                decimal decPrivilegeAfferMaterial = Convert.ToDecimal(txtPrivilegeAfferMaterial.Text);                decimal decPrivilegeAfferElseMoney = Convert.ToDecimal(txtPrivilegeAfferElseMoney.Text);                decimal decPrivilegeAfferAllMoney = Convert.ToDecimal(txtPrivilegeAfferAllMoney.Text);                //调用方法保存到数据库                int intJieSuan = myFRM_QianTaiJieDai_JieSuanClient.FRM_JieSuan_btnConfirm_Click(strSettleAccountsBillNumber, intServiceWorkBillID, decPrivilegeBeforeAllMoney,                    decPrivilegeAllMoney, decPrivilegeAfferWorkHoursMoney, decPrivilegeAfferMaterial, decPrivilegeAfferElseMoney, decPrivilegeAfferAllMoney);                //调用方法改变【车辆状态】                int Update = myFRM_QianTaiJieDai_JieSuanClient.FRM_JieSuan_btnConfirm_Click_UpdateCarStatus(intServiceWorkBillID);                if (intJieSuan > 0)                {                    MessageBox.Show("新建结算单成功!");                    this.Close();                }            }            else            {                return;            }        }

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


























































0 0
原创粉丝点击