private void btn保存_Click(object sender, EventArgs e)
        {
            if (cbo品牌.SelectedItem == null)
            {
                MsgHelper.ShowError("请选择品牌/厂家!");
                return;
            }

            if (string.IsNullOrEmpty(sr厂家账户.Text))
            {
                MsgHelper.ShowError("请选择厂家账户!");
                return;
            }

            if (string.IsNullOrEmpty(sr二级销区.Text))
            {
                MsgHelper.ShowError("请选择二级销区!");
                return;
            }

            if (string.IsNullOrEmpty(txt车牌号.Text))
            {
                MsgHelper.ShowError("请输入车牌号!");
                return;
            }

            if (gridView发货计划明细.RowCount == 0)
            {
                MsgHelper.ShowError("没有发货明细,无法保存!");
                return;
            }

            ICSEOUTBILLMODEL model = new ICSEOUTBILLMODEL();

            if (IcseoutbillModel != null)
            {
                //model.FID = IcseoutbillModel.FID;
                model.FPREMISEID = IcseoutbillModel.FPREMISEID;
                model.FCLIENTID  = IcseoutbillModel.FCLIENTID;
                model.FBRANDID   = IcseoutbillModel.FBRANDID;
                //model.FBILLNO = IcseoutbillModel.FBILLNO;
                model.FCARNUMBER        = IcseoutbillModel.FCARNUMBER;
                model.FLOADCAPACITY     = IcseoutbillModel.FLOADCAPACITY;
                model.FDELIVERER        = IcseoutbillModel.FDELIVERER;
                model.FDELIVERERTEL     = IcseoutbillModel.FDELIVERERTEL;
                model.FDELIVERERIDNO    = IcseoutbillModel.FDELIVERERIDNO;
                model.FDELIVERERADDR    = IcseoutbillModel.FDELIVERERADDR;
                model.FRECEIVER         = IcseoutbillModel.FRECEIVER;
                model.FRECEIVERTEL      = IcseoutbillModel.FRECEIVERTEL;
                model.FRECEIVERADDR     = IcseoutbillModel.FRECEIVERADDR;
                model.FALLWEIGHT        = IcseoutbillModel.FALLWEIGHT;
                model.FALLVOLUME        = IcseoutbillModel.FALLVOLUME;
                model.FBILLERID         = IcseoutbillModel.FBILLERID;
                model.FBILLDATE         = IcseoutbillModel.FBILLDATE;
                model.FSTATUS           = IcseoutbillModel.FSTATUS;
                model.FCHECKERID        = IcseoutbillModel.FCHECKERID;
                model.FCHECKDATE        = IcseoutbillModel.FCHECKDATE;
                model.FREMARK           = IcseoutbillModel.FREMARK;
                model.FTRANSTYPE        = IcseoutbillModel.FTRANSTYPE;
                model.FTRANSID          = IcseoutbillModel.FTRANSID;
                model.FDELIVERDATE      = IcseoutbillModel.FDELIVERDATE;
                model.FFACTORYSTATUS    = IcseoutbillModel.FFACTORYSTATUS;
                model.FSYNCSTATUS       = IcseoutbillModel.FSYNCSTATUS;
                model.FCENTER_WAREHOUSE = IcseoutbillModel.FCENTER_WAREHOUSE;
                model.FIS_CONSIGN       = IcseoutbillModel.FIS_CONSIGN;
                model.FDELIVERY_METHOD  = IcseoutbillModel.FDELIVERY_METHOD;
                model.FEXPRESSCOMPANYID = IcseoutbillModel.FEXPRESSCOMPANYID;
                model.FPROJECTNAME      = IcseoutbillModel.FPROJECTNAME;
                model.FPURCHASE_NO      = IcseoutbillModel.FPURCHASE_NO;
                model.FPLANDESC         = IcseoutbillModel.FPLANDESC;
                model.FSRCBILLNO        = IcseoutbillModel.FSRCBILLNO;
                model.FBILLING_TYPE     = IcseoutbillModel.FBILLING_TYPE;
                model.FGROUP_NO         = IcseoutbillModel.FGROUP_NO;
                model.FBRAND_DEPART     = IcseoutbillModel.FBRAND_DEPART;
            }

            model.FBILLNO = txt发货计划号.Text;
            if (string.IsNullOrEmpty(model.FGROUP_NO))
            {
                model.FGROUP_NO = model.FBILLNO;
            }
            model.FBRANDID   = ((TB_BrandModel)cbo品牌.SelectedItem).FID;
            model.FCLIENTID  = sr厂家账户.Tag.ToStr();
            model.FPREMISEID = sr二级销区.Tag.ToStr();
            if (cbo运输方式.SelectedItem != null)
            {
                model.FTRANSID = ((SYS_SUBDICSMODEL)cbo运输方式.SelectedItem).FID;
            }
            model.FCARNUMBER        = txt车牌号.Text;
            model.FLOADCAPACITY     = txt车型载重.Text;
            model.FDELIVERDATE      = txt发货日期.DateTime;
            model.FDELIVERER        = txt提货人.Text;
            model.FDELIVERERTEL     = txt提货人电话.Text;
            model.FRECEIVERADDR     = txt收货方.Text;
            model.FALLWEIGHT        = txt汇总重量.Text.ToDecimal();
            model.FALLVOLUME        = txt汇总体积.Text.ToDecimal();
            model.FCENTER_WAREHOUSE = txt中心仓.Text;
            if (cbo发货方式.SelectedItem != null)
            {
                model.FDELIVERY_METHOD = ((SYS_SUBDICSMODEL)cbo发货方式.SelectedItem).FID;
            }
            model.FDELIVERERADDR = txt发货地点.Text;
            model.FPURCHASE_NO   = txt采购订单.Text;
            //model.FEETOTAL = txt标准运费.Text;
            model.FPLANDESC         = txt描述.Text;
            model.FEXPRESSCOMPANYID = sr承运公司.Tag.ToStr();
            model.FPROJECTNAME      = txt工程名称.Text;
            model.FREMARK           = txt其他.Text;
            if (cbo开单类型.SelectedItem != null)
            {
                model.FBILLING_TYPE = ((CodeValueClass)cbo开单类型.SelectedItem).value.ToInt();
            }
            model.FIS_CONSIGN       = chk是否托管.Checked ? 1 : 0;
            model.FBILLERID         = Global.LoginUser.FID;
            model.FBILLDATE         = DateTime.Now;
            model.FDELIVERY_REQUIRE = txt销区发货要求.Text;
            model.FBRAND_DEPART     = txt品牌部.Text;

            List <ICSEOUTBILLENTRYMODEL> entrys = new List <ICSEOUTBILLENTRYMODEL>();
            var datasource = gridControl发货计划明细.DataSource as List <V_ICSEOUTBILLENTRYMODEL>;
            int index      = 1;

            foreach (V_ICSEOUTBILLENTRYMODEL entry in datasource)
            {
                //if (model.FBILLING_TYPE == 1 && entry.FTRUSTEESHIP == "Y")
                //{
                //    MsgHelper.ShowError("普通开单,明细项目不允许有托管库开单的数据,请检查您的输入!");
                //    return;
                //}

                if (entry.FDISMANTLING.ToDecimal() > 0)
                {
                    _service.UpdateGetDeliveryEntryData(entry.FID, entry.FCOMMITQTY - entry.FDISMANTLING);

                    entrys.Add(new ICSEOUTBILLENTRYMODEL()
                    {
                        FID                 = entry.FID,
                        FICSEOUTID          = entry.FICSEOUTID,
                        FSRCID              = entry.FSRCID,
                        FPRICEPOLICYENTRYID = entry.FPRICEPOLICYENTRYID,
                        FICPRID             = entry.FICPRID,
                        FENTRYID            = index,
                        FCOMMITQTY          = entry.FDISMANTLING,
                        FHNAMOUNT           = entry.FHNAMOUNT,
                        FSTOCKNUMBER        = entry.FSTOCKNUMBER,
                        FSTOCK              = entry.FSTOCK,
                        FSTOCKPLACE         = entry.FSTOCKPLACE,
                        FWEIGHT             = entry.FWEIGHT,
                        FVOLUME             = entry.FVOLUME,
                        FREMARK             = entry.FREMARK,
                        FBATCHNO            = entry.FBATCHNO,
                        FCOLORNO            = entry.FCOLORNO,
                        FLEVEL              = entry.FLEVEL,
                        FWDR                = entry.FWDR,
                        FITEMID             = entry.FITEMID,
                        FPRICE              = entry.FPRICE,
                        FAMOUNT             = entry.FAMOUNT,
                        FERR_MESSAGE        = entry.FERR_MESSAGE,
                        FNEEDDATE           = entry.FNEEDDATE,
                        FORDERREMARK1       = entry.FORDERREMARK1,
                        FORDERREMARK2       = entry.FORDERREMARK2,
                        FDESCRIPTION        = entry.FDESCRIPTION,
                        FBRAND              = entry.FBRAND,
                        FLOCATION_NO        = entry.FLOCATION_NO
                    });

                    index++;
                }
            }

            _service.DeliveryBillSave(model, entrys.ToArray(), true);

            MsgHelper.ShowInformation("保存成功!");

            if (SaveAfter != null)
            {
                SaveAfter(null, null);
            }

            this.Close();
        }
Example #2
0
        public string Save(ICSEOUTBILLMODEL ICSEOUTBILL, IEnumerable <ICSEOUTBILLENTRYMODEL> ICSEOUTBILLENTRYList)
        {
            #region 检查
            ICSEOUTBILLMODEL temp = ICSEOUTBILLDAL.Instance.GetWhere(new { FBILLNO = ICSEOUTBILL.FBILLNO }).FirstOrDefault();

            if (temp != null && temp.FID != ICSEOUTBILL.FID)
            {
                return("单据单号重复!");
            }


            //foreach (var item in ICSEOUTBILLENTRYList.GroupBy(i => i.FITEMID + i.FENTRYID))
            //{
            //    if (item.Count() > 1)
            //    {
            //        return "商品资料重复!";

            //    }
            //}

            #endregion

            string FID = ICSEOUTBILL.FID;

            ICSEOUTBILL.FSTATUS = Constant.BILL_FSTATUS.草稿.ToInt();

            if (FID.IsNullOrEmpty())
            {
                if (ICSEOUTBILL.FBILLERID == null)
                {
                    ICSEOUTBILL.FBILLERID = SysVisitor.Instance.UserId;
                }

                ICSEOUTBILL.FBILLDATE   = DateTime.Now;
                ICSEOUTBILL.FCAR_STATUS = 1; // 1:待发布,2:已发布,3:发布失败,4:已确认,5:关闭,6:关闭(改)

                FID = ICSEOUTBILLDAL.Instance.Insert(ICSEOUTBILL);

                if (!FID.IsGuid())
                {
                    return("发货通知保存失败!");
                }
            }
            else
            {
                int status = ICSEOUTBILLDAL.Instance.GetStatus(ICSEOUTBILL.FID);

                if (status == Constant.BILL_FSTATUS.审核通过.ToInt())
                {
                    return("该发货通知已经审核,不允许编辑!");
                }

                if (status == Constant.BILL_FSTATUS.完成.ToInt())
                {
                    return("该发货通知已经完成,不允许编辑!");
                }

                if (status == Constant.BILL_FSTATUS.关闭.ToInt())
                {
                    return("该发货通知已经关闭,不允许编辑!");
                }

                //int result = ICSEOUTBILLDAL.Instance.Update(ICSEOUTBILL);

                int result = ICSEOUTBILLDAL.Instance.UpdateWhatWhere(new
                {
                    FPREMISEID        = ICSEOUTBILL.FPREMISEID,
                    FBRANDID          = ICSEOUTBILL.FBRANDID,
                    FCLIENTID         = ICSEOUTBILL.FCLIENTID,
                    FBILLNO           = ICSEOUTBILL.FBILLNO,
                    FSTATUS           = Constant.BILL_FSTATUS.草稿.ToInt(),
                    FCARNUMBER        = ICSEOUTBILL.FCARNUMBER,
                    FLOADCAPACITY     = ICSEOUTBILL.FLOADCAPACITY,
                    FDELIVERER        = ICSEOUTBILL.FDELIVERER,
                    FDELIVERERTEL     = ICSEOUTBILL.FDELIVERERTEL,
                    FDELIVERERIDNO    = ICSEOUTBILL.FDELIVERERIDNO,
                    FDELIVERERADDR    = ICSEOUTBILL.FDELIVERERADDR,
                    FRECEIVER         = ICSEOUTBILL.FRECEIVER,
                    FRECEIVERTEL      = ICSEOUTBILL.FRECEIVERTEL,
                    FRECEIVERADDR     = ICSEOUTBILL.FRECEIVERADDR,
                    FALLWEIGHT        = ICSEOUTBILL.FALLWEIGHT,
                    FALLVOLUME        = ICSEOUTBILL.FALLVOLUME,
                    FREMARK           = ICSEOUTBILL.FREMARK,
                    FTRANSTYPE        = ICSEOUTBILL.FTRANSTYPE,
                    FTRANSID          = ICSEOUTBILL.FTRANSID,
                    FDELIVERDATE      = ICSEOUTBILL.FDELIVERDATE,
                    FEXPRESSCOMPANYID = ICSEOUTBILL.FEXPRESSCOMPANYID,
                    FPROJECTNAME      = ICSEOUTBILL.FPROJECTNAME,
                    FCENTER_WAREHOUSE = ICSEOUTBILL.FCENTER_WAREHOUSE,
                    FDELIVERY_METHOD  = ICSEOUTBILL.FDELIVERY_METHOD,
                    FPURCHASE_NO      = ICSEOUTBILL.FPURCHASE_NO,
                    FPLANDESC         = ICSEOUTBILL.FPLANDESC,
                    FIS_CONSIGN       = ICSEOUTBILL.FIS_CONSIGN,
                    FBILLING_TYPE     = ICSEOUTBILL.FBILLING_TYPE,
                    FSETTLE_ORG       = ICSEOUTBILL.FSETTLE_ORG,
                    FDELIVERY_REQUIRE = ICSEOUTBILL.FDELIVERY_REQUIRE,
                    FBRAND_DEPART     = ICSEOUTBILL.FBRAND_DEPART,
                }, new
                {
                    FID = ICSEOUTBILL.FID
                });

                if (result <= 0)
                {
                    return("发货通知保存失败!");
                }
            }


            var entrys = ICSEOUTBILLENTRYDAL.Instance.GetWhere(new { FICSEOUTID = FID }).ToList();
            //删除明细
            ICSEOUTBILLENTRYBLL.Instance.DeleteByICSEOUTBILLID(FID);

            foreach (var model in entrys)
            {
                var count = ICSEOUTBILLENTRYList.Where(m => m.FICPRID == model.FICPRID).Count();
                if (count == 0)
                {
                    string             sql       = string.Format("SELECT SUM(FCOMMITQTY*FRATE) FROM V_ICSEOUTBILLENTRY WHERE FICPRID='{0}' and (FGROUP_STATUS is null or FGROUP_STATUS = 0)", model.FICPRID);
                    DataTable          table     = DbUtils.Query(sql);
                    decimal            total     = PublicMethod.GetDecimal(table.Rows[0][0]);
                    ICPRBILLENTRYMODEL icprModel = ICPRBILLENTRYDAL.Instance.Get(model.FICPRID);
                    if (icprModel != null)
                    {
                        icprModel.FLEFTAMOUNT = icprModel.FASKQTY - total;

                        if (icprModel.FLEFTAMOUNT <= 0)
                        {
                            icprModel.FSTATUS = 5;
                        }
                        else
                        {
                            icprModel.FSTATUS = 7;
                        }

                        ICPRBILLENTRYDAL.Instance.Update(icprModel);

                        if (ICPRBILLENTRYDAL.Instance.GetCloseStatus(icprModel.FPLANID) == 0)
                        {
                            ICPRBILLDAL.Instance.UpdateWhatWhere(new { FSTATUS = (int)Constant.ICPRBILL_FSTATUS.关闭 }, new { FID = icprModel.FPLANID });
                        }
                        else
                        {
                            ICPRBILLDAL.Instance.UpdateWhatWhere(new { FSTATUS = (int)Constant.ICPRBILL_FSTATUS.采购确认 }, new { FID = icprModel.FPLANID });
                        }
                    }
                }
            }



            foreach (var item in ICSEOUTBILLENTRYList)
            {
                item.FICSEOUTID = FID;
                string id = ICSEOUTBILLENTRYDAL.Instance.Insert(item);
                LogHelper.WriteLog("herherehrer:" + item.thdbm);

                //var list = ICSEOUTBILLENTRYDAL.Instance.GetWhere(new { FICPRID = item.FICPRID });

                string             sql       = string.Format("SELECT SUM(FCOMMITQTY*FRATE) FROM V_ICSEOUTBILLENTRY WHERE FICPRID='{0}' and (FGROUP_STATUS is null or FGROUP_STATUS = 0)", item.FICPRID);
                DataTable          table     = DbUtils.Query(sql);
                decimal            total     = PublicMethod.GetDecimal(table.Rows[0][0]);
                ICPRBILLENTRYMODEL icprModel = ICPRBILLENTRYDAL.Instance.Get(item.FICPRID);
                if (icprModel != null)
                {
                    icprModel.FLEFTAMOUNT = icprModel.FASKQTY - total;

                    if (icprModel.FLEFTAMOUNT <= 0)
                    {
                        icprModel.FSTATUS = 5;
                    }
                    else
                    {
                        icprModel.FSTATUS = 7;
                    }

                    ICPRBILLENTRYDAL.Instance.Update(icprModel);

                    if (ICPRBILLENTRYDAL.Instance.GetCloseStatus(icprModel.FPLANID) == 0)
                    {
                        ICPRBILLDAL.Instance.UpdateWhatWhere(new { FSTATUS = (int)Constant.ICPRBILL_FSTATUS.关闭 }, new { FID = icprModel.FPLANID });
                    }
                    else
                    {
                        ICPRBILLDAL.Instance.UpdateWhatWhere(new { FSTATUS = (int)Constant.ICPRBILL_FSTATUS.采购确认 }, new { FID = icprModel.FPLANID });
                    }
                }



                //ICPRBILLENTRYMODEL icprModel = ICPRBILLENTRYDAL.Instance.Get(item.FICPRID);
                //if (icprModel != null)
                //{
                //    if (icprModel.FORDERUNITQTY >= total)
                //    {
                //        icprModel.FLEFTAMOUNT = icprModel.FLEFTAMOUNT - total;
                //    }
                //    else
                //    {
                //        icprModel.FLEFTAMOUNT = 0;
                //    }

                //    ICPRBILLENTRYDAL.Instance.Update(icprModel);
                //}
            }

            return(null);
        }
        /// <summary>
        /// 发货计划单据保存
        /// </summary>
        /// <param name="model"></param>
        /// <param name="entrys"></param>
        /// <returns></returns>
        public bool DeliveryBillSave(ICSEOUTBILLMODEL model, List <ICSEOUTBILLENTRYMODEL> entrys, bool delivery = true)
        {
            try
            {
                if (!delivery)
                {
                    if (entrys.Count > 0)
                    {
                        List <ICPRBILLENTRYMODEL> icprModels = ICPRBILLENTRYDAL.Instance.GetWhere(new { FID = entrys[0].FICPRID }).ToList();
                        if (icprModels.Count > 0)
                        {
                            ICPRBILLMODEL icprModel = ICPRBILLDAL.Instance.Get(icprModels[0].FPLANID);
                            if (icprModel != null)
                            {
                                model.FPROJECTNAME  = icprModel.FPROJECTNAME;
                                model.FRECEIVERADDR = icprModel.FRECEIVINGADDR;
                                model.FPLANDESC     = icprModel.JDE;
                                model.FPURCHASE_NO  = icprModel.FPURCHASE_NO;
                                model.FREMARK       = icprModel.FREMARK;
                                model.FSETTLE_ORG   = icprModel.FSETTLE_ORG;
                            }
                        }
                    }
                }
                var result = ICSEOUTBILLBLL.Instance.Save(model, entrys);
                if (result == null && !string.IsNullOrEmpty(model.FGROUP_NO))
                {
                    //插入装车发货明细
                    var details = TB_DELIVERY_DETAILDal.Instance.GetWhere(new { FGROUP_NO = model.FGROUP_NO }).ToList();
                    if (details.Count > 0)
                    {
                        TB_DELIVERY_DETAILModel m = details[0]; m.FGROUP_NO = model.FGROUP_NO;
                        m.FDELIVERDATE      = model.FDELIVERDATE;
                        m.FBRANDID          = model.FBRANDID;
                        m.FPREMISEID        = model.FPREMISEID;
                        m.FPLAN_INFO        = model.FPLAN_INFO;
                        m.FTRANSID          = model.FTRANSID;
                        m.FDELIVERERADDR    = model.FDELIVERERADDR;
                        m.FRECEIVERADDR     = model.FRECEIVERADDR;
                        m.FALLWEIGHT        = model.FALLWEIGHT;
                        m.FCARNUMBER        = model.FCARNUMBER;
                        m.FEXPRESSCOMPANYID = model.FEXPRESSCOMPANYID;
                        TB_DELIVERY_DETAILDal.Instance.Update(m);
                    }
                    else
                    {
                        TB_DELIVERY_DETAILModel m = new TB_DELIVERY_DETAILModel();
                        m.FGROUP_NO         = model.FGROUP_NO;
                        m.FDATE             = DateTime.Now;
                        m.FDELIVERDATE      = model.FDELIVERDATE;
                        m.FBRANDID          = model.FBRANDID;
                        m.FPREMISEID        = model.FPREMISEID;
                        m.FPLAN_INFO        = model.FPLAN_INFO;
                        m.FTRANSID          = model.FTRANSID;
                        m.FDELIVERERADDR    = model.FDELIVERERADDR;
                        m.FRECEIVERADDR     = model.FRECEIVERADDR;
                        m.FALLWEIGHT        = model.FALLWEIGHT;
                        m.FCARNUMBER        = model.FCARNUMBER;
                        m.FEXPRESSCOMPANYID = model.FEXPRESSCOMPANYID;
                        m.FSTATUS           = 0;//草稿状态
                        TB_DELIVERY_DETAILDal.Instance.Insert(m);
                    }
                }


                return(true);
            }
            catch (Exception ex)
            {
                hn.Common.LogHelper.WriteLog(ex);
                throw ex;
            }
        }