コード例 #1
0
        //自动生成出入库单
        public int PostBuild(string billCode, out string msg)
        {
            msg = string.Empty;
            var    rowsAffected = 0;
            string sql          = String.Format(@"    select MAX(t1.BillState) as BillState,t2.WarehouseCode,max(t2.WarehouseName) as WarehouseName,t2.InventoryCode,max(t2.InventoryName) as InventoryName,sum(t2.DValue) as DValue from WMS_BN_TakeStockMain as t1
inner join WMS_BN_TakeStockDetail as t2 on t1.BillCode=t2.BillCode where t1.BillCode='{0}' 
group by t2.WarehouseCode,t2.Inventorycode", billCode);
            var    list         = db.Sql(sql).QueryMany <dynamic>();
            var    res          = list[1].DValue;

            if (list[0].BillState == 2)
            {
                msg = "已锁定的数据不能重复提交!";
                return(0);
            }
            db.UseTransaction(true);
            foreach (var item in list)
            {
                res = item.DValue;
                WMS_BN_BillMain master = new WMS_BN_BillMain();
                if (item.DValue > 0)
                {
                    master.BillType      = 6;
                    master.WarehouseCode = item.WarehouseCode;
                    master.WarehouseName = item.WarehouseName;
                    master.Remark        = "盘盈入库";
                }
                else if (item.DValue < 0)
                {
                    master.BillType      = 7;
                    master.WarehouseCode = item.WarehouseCode;
                    master.WarehouseName = item.WarehouseName;
                    master.Remark        = "盘亏出库";
                }
                else
                {
                    continue;
                }
                var sc = new sys_codeService().Getsys_codeByTypeAndID("BillType", Convert.ToInt16(master.BillType));
                master.BillCode     = MmsHelper.GetOrderNumber("WMS_BN_BillMain", "BillCode", sc.Description, "", "");
                master.CreateTime   = DateTime.Now;
                master.CreatePerson = MmsHelper.GetUserName();

                rowsAffected = db.Sql(@"insert into WMS_BN_BillMain (BillCode,BillType,WarehouseCode,WarehouseName,Remark,
CreatePerson,CreateTime) values(@0,@1,@2,@3,@4,@5,@6)", master.BillCode, master.BillType,
                                      master.WarehouseCode, master.WarehouseName, master.Remark, master.CreatePerson, master.CreateTime).Execute();
                if (rowsAffected < 0)
                {
                    db.Rollback();
                    return(rowsAffected);
                }

                var detailList = (from p in list where p.WarehouseCode == item.WarehouseCode select p).ToList();
                foreach (var it in detailList)
                {
                    WMS_BN_BillDetail detail = new WMS_BN_BillDetail();
                    detail.PBillCode     = billCode;
                    detail.BillCode      = master.BillCode;
                    detail.InventoryCode = it.InventoryCode;
                    detail.InventoryName = it.InventoryName;

                    detail.MateNum    = Math.Abs(item.DValue);
                    detail.ConfirmNum = Math.Abs(item.DValue);

                    rowsAffected = db.Insert <WMS_BN_BillDetail>("WMS_BN_BillDetail", detail)
                                   .AutoMap(x => x.ID)
                                   .Execute();
                    if (rowsAffected < 0)
                    {
                        db.Rollback();
                        return(rowsAffected);
                    }
                }
            }
            sql          = string.Format(@"update WMS_BN_TakeStockMain set BillState='2' where BillCode='{0}'", billCode);
            rowsAffected = db.Sql(sql).Execute();

            if (rowsAffected < 0)
            {
                db.Rollback();
                return(rowsAffected);
            }
            msg = "操作成功!";
            db.Commit();

            return(rowsAffected);
        }
コード例 #2
0
        public int PostBuild(string billCode, out string msg)
        {
            msg = string.Empty;
            int rowsAffected = 0;

            db.UseTransaction(true);
            string sql  = string.Format(@"select a.BillCode,a.Remark, a.InWarehouseCode,a.InWarehouseName,a.OutWarehouseCode,a.OutWarehouseName,
b.InventoryCode,b.InventoryName,b.ConfirmNum,b.Unit from WMS_BN_TransfersMain a
 left join WMS_BN_TransfersDetail b on a.BillCode=b.BillCode where a.IsEnable=1 and
b.IsEnable=1 and b.BillCode='{0}'", billCode);
            var    list = db.Sql(sql).QueryMany <dynamic>();

            if (list.Count <= 0)
            {
                msg = "没有数据!";
                return(0);
            }
            //foreach (var item in list)
            //{
            WMS_BN_BillMain master = new WMS_BN_BillMain();
            var             sc     = new sys_codeService().Getsys_codeByTypeAndID("BillType", 7);

            master.BillCode      = MmsHelper.GetOrderNumber("WMS_BN_BillMain", "BillCode", sc.Description, "", "");
            master.BillType      = 7;
            master.WarehouseCode = list[0].OutWarehouseCode;
            master.WarehouseName = list[0].OutWarehouseName;
            master.Remark        = list[0].Remark;
            master.CreateTime    = DateTime.Now;
            master.CreatePerson  = MmsHelper.GetUserName();
            master.ApproveState  = "1";

            rowsAffected = db.Sql(@"insert into WMS_BN_BillMain (ID,BillCode,BillType,WarehouseCode,WarehouseName,Remark,ApproveState,
CreatePerson,CreateTime) values(((select MAX(id)+1 from WMS_BN_BillMain)),@0,@1,@2,@3,@4,@5,@6,@7)", master.BillCode, master.BillType,
                                  master.WarehouseCode, master.WarehouseName, master.Remark, master.ApproveState, master.CreatePerson, master.CreateTime).Execute();
            if (rowsAffected < 0)
            {
                db.Rollback();
                return(rowsAffected);
            }
            //var detailList = (from p in list where p.OutWarehouseID == item.OutWarehouseID select p).ToList();
            //var detailList = (from p in list where p.OutWarehouseID == item.OutWarehouseID select p).ToList();

            foreach (var it in list)
            {
                WMS_BN_BillDetail detail = new WMS_BN_BillDetail();
                detail.PBillCode     = billCode;
                detail.BillCode      = master.BillCode;
                detail.InventoryCode = it.InventoryCode;
                detail.InventoryName = it.InventoryName;

                detail.MateNum    = it.ConfirmNum;
                detail.ConfirmNum = it.ConfirmNum;

                rowsAffected = db.Insert <WMS_BN_BillDetail>("WMS_BN_BillDetail", detail)
                               .AutoMap(x => x.ID)
                               .Execute();
                if (rowsAffected < 0)
                {
                    db.Rollback();
                    return(rowsAffected);
                }
            }

            sc = new sys_codeService().Getsys_codeByTypeAndID("BillType", 6);
            master.BillCode      = MmsHelper.GetOrderNumber("WMS_BN_BillMain", "BillCode", sc.Description, "", "");
            master.BillType      = 6;
            master.WarehouseCode = list[0].InWarehouseCode;
            master.WarehouseName = list[0].InWarehouseName;
            master.Remark        = list[0].Remark;
            master.CreateTime    = DateTime.Now;
            master.CreatePerson  = MmsHelper.GetUserName();
            master.ApproveState  = "1";
            rowsAffected         = db.Sql(@"insert into WMS_BN_BillMain (ID,BillCode,BillType,WarehouseCode,WarehouseName,Remark,ApproveState,
CreatePerson,CreateTime) values(((select MAX(id)+1 from WMS_BN_BillMain)),@0,@1,@2,@3,@4,@5,@6,@7)", master.BillCode, master.BillType,
                                          master.WarehouseCode, master.WarehouseName, master.Remark, master.ApproveState, master.CreatePerson, master.CreateTime).Execute();
            if (rowsAffected < 0)
            {
                db.Rollback();
                return(rowsAffected);
            }
            //detailList = (from p in list where p.InWarehouseID == item.InWarehouseID select p).ToList();
            foreach (var it in list)
            {
                WMS_BN_BillDetail detail = new WMS_BN_BillDetail();
                detail.PBillCode     = billCode;
                detail.BillCode      = master.BillCode;
                detail.InventoryCode = it.InventoryCode;
                detail.InventoryName = it.InventoryName;

                detail.MateNum    = it.ConfirmNum;
                detail.ConfirmNum = it.ConfirmNum;

                rowsAffected = db.Insert <WMS_BN_BillDetail>("WMS_BN_BillDetail", detail)
                               .AutoMap(x => x.ID)
                               .Execute();
                if (rowsAffected < 0)
                {
                    db.Rollback();
                    return(rowsAffected);
                }
            }
            //}
            sql          = string.Format(@"update WMS_BN_TransfersMain set ApproveState='2',ApprovePerson='{0}',ApproveTime='{1}' where BillCode='{2}'", MmsHelper.GetUserName(), DateTime.Now, billCode);
            rowsAffected = db.Sql(sql).Execute();

            if (rowsAffected < 0)
            {
                db.Rollback();
                return(rowsAffected);
            }
            msg = "操作成功!";
            db.Commit();

            return(rowsAffected);
        }
コード例 #3
0
ファイル: Client.cs プロジェクト: huangming771314520/HBHC
        /// <summary>
        /// 物料扫码出库
        /// </summary>
        /// <returns></returns>
        public ResultModel MaterialOutput(dynamic data)
        {
            try
            {
                DateTime newDT      = DateTime.Now;
                string   documentNo = MmsHelper.GetOrderNumber("WMS_BN_BillMain", "BillCode", "QTCK", "", "");

                WMS_BN_BillMain bMainModel = new WMS_BN_BillMain()
                {
                    ID            = Convert.ToInt32(new WMS_BN_BillMainService().GetNewKey("ID", "Maxplus")),
                    BillCode      = documentNo,
                    BillType      = 7,
                    IsEnable      = 1,
                    ContractCode  = data["mainData"]["ContractCode"],
                    ProjectName   = data["mainData"]["ProjectName"],
                    WarehouseCode = data["mainData"]["WarehouseCode"],
                    WarehouseName = data["mainData"]["WarehouseName"],
                    ApproveState  = data["mainData"]["ApproveState"],
                    ApprovePerson = data["mainData"]["UserName"],
                    ApproveDate   = newDT,
                    CreatePerson  = data["userData"]["UserName"],
                    CreateTime    = newDT,
                    ModifyPerson  = data["userData"]["UserName"],
                    ModifyTime    = newDT
                };

                WMS_BN_BillDetail bDetailModel = new WMS_BN_BillDetail()
                {
                    BillCode      = documentNo,
                    IsEnable      = 1,
                    InventoryCode = data["detailData"]["InventoryCode"],
                    InventoryName = data["detailData"]["InventoryName"],
                    Specs         = data["detailData"]["Specs"],
                    Unit          = data["detailData"]["Unit"],
                    MateNum       = data["detailData"]["MateNum"] == null ? null : Convert.ToDouble(data["detailData"]["MateNum"]),
                    ConfirmNum    = data["detailData"]["ConfirmNum"] == null ? null : Convert.ToDouble(data["detailData"]["ConfirmNum"]),
                    CreatePerson  = data["userData"]["UserName"],
                    CreateTime    = newDT,
                    ModifyPerson  = data["userData"]["UserName"],
                    ModifyTime    = newDT,
                    PBillCode     = data["detailData"]["PBillCode"]
                };

                db.UseTransaction(true);

                int tempA = db.Sql(GetInsertSQL(bMainModel)).Execute();

                var realStocks             = db.Sql(string.Format(@"SELECT * FROM dbo.WMS_BN_RealStock WHERE IsEnable = 1 AND WarehouseCode = '{0}' AND InventoryCode = '{1}' ORDER BY BatchCode", bMainModel.WarehouseCode, bDetailModel.InventoryCode)).QueryMany <WMS_BN_RealStock>();
                WMS_BN_RealStock realStock = null;

                if (realStocks.Count <= 0)
                {
                    throw new Exception(@"仓库没有物料!");
                }
                else
                {
                    var num = Convert.ToInt32(bDetailModel.ConfirmNum ?? 1);

                    foreach (var item in realStocks)
                    {
                        if (item.RealStock == null)
                        {
                            throw new Exception(@"仓库物料数量异常!");
                        }
                        else
                        {
                            if ((item.RealStock ?? 0) < num)
                            {
                            }
                            else
                            {
                                realStock = item;
                                bDetailModel.BatchCode = item.BatchCode;
                                break;
                            }
                        }
                    }

                    if (string.IsNullOrEmpty(bDetailModel.BatchCode))
                    {
                        throw new Exception(@"仓库物料数量不够,无法出库!");
                    }
                }

                int tempB = db.Sql(GetInsertSQL(bDetailModel)).Execute();

                string sql = GetUpdateSQL(nameof(WMS_BN_RealStock), new KeyValuePair <string, object>("ID", realStock.ID), new
                {
                    RealStock    = realStock.RealStock - bDetailModel.ConfirmNum,
                    TotalStock   = realStock.TotalStock - bDetailModel.ConfirmNum,
                    ModifyPerson = bDetailModel.ModifyPerson,
                    ModifyTime   = bDetailModel.ModifyTime,
                });

                int tempC = db.Sql(sql).Execute();

                bool result = tempA > 0 && tempB > 0 && tempC > 0;
                if (result)
                {
                    db.Commit();
                }
                else
                {
                    db.Rollback();
                }

                return(new ResultModel()
                {
                    Result = result,
                    Msg = result ? @"成功!" : "失败!"
                });
            }
            catch (Exception ex)
            {
                db.Rollback();

                return(new ResultModel()
                {
                    Result = false,
                    Msg = ex.Message
                });
            }
        }
コード例 #4
0
        public dynamic NewAuditBillCode(string billCode)
        {
            try
            {
                if (string.IsNullOrEmpty(billCode))
                {
                    throw new Exception(@"参数错误!");
                }

                string sqlA = string.Format(@"SELECT * FROM dbo.MES_MaterialReturnMain WHERE IsEnable = 1 AND BillCode = '{0}';", billCode);
                List <MES_MaterialReturnMain> listA = db.Sql(sqlA).QueryMany <MES_MaterialReturnMain>();

                DateTime newDT = DateTime.Now;

                if (listA.Count <= 0)
                {
                    throw new Exception(@"请保存数据后审核!");
                }

                if (listA[0].BillState != null && listA[0].BillState.Equals(2))
                {
                    throw new Exception(@"单据已审核!");
                }

                int billType = 0;
                using (var dbA = Db.Context("Sys"))
                {
                    var sysCodeModel = dbA.Sql(@"SELECT * FROM HBHC_Sys.dbo.sys_code WHERE Text='退料入库';").QuerySingle <sys_code>();
                    if (sysCodeModel == null)
                    {
                        throw new Exception(@"字典表查不到【退料入库】数据信息!");
                    }
                    else
                    {
                        billType = Convert.ToInt32(sysCodeModel.Value);
                    }
                }

                using (var dbB = Db.Context("Mms"))
                {
                    try
                    {
                        dbB.UseTransaction(true);

                        string sqlB  = string.Format(@"UPDATE dbo.MES_MaterialReturnMain SET BillState = 2 WHERE IsEnable = 1 AND BillCode = '{0}';", billCode);
                        int    tempA = dbB.Sql(sqlB).Execute();

                        var dno = MmsHelper.GetOrderNumber("WMS_BN_BillMain", "BillCode", "TLRK", "", "");

                        string sqlC = WinFormClientService.GetInsertSQL(new WMS_BN_BillMain()
                        {
                            ID             = dbB.Sql("SELECT ISNULL(MAX(ID),1)+1 FROM dbo.WMS_BN_BillMain;").QuerySingle <int>(),
                            BillCode       = dno,
                            BillType       = billType,
                            ContractCode   = listA[0].ContractCode,
                            ProjectName    = listA[0].ProjectName,
                            DepartmentID   = listA[0].DepartmentID == null ? null : listA[0].DepartmentID.ToString(),
                            DepartmentName = listA[0].DepartmentName,
                            WarehouseCode  = listA[0].WarehouseCode,
                            WarehouseName  = listA[0].WarehouseName,
                            ApproveState   = "2",
                            Remark         = "",
                            CreatePerson   = MmsHelper.GetUserName(),
                            CreateTime     = newDT,
                            ModifyPerson   = MmsHelper.GetUserName(),
                            ModifyTime     = newDT,
                            IsEnable       = 1
                        });
                        int tempB = dbB.Sql(sqlC).Execute();

                        var listB = dbB.Sql(string.Format(@"SELECT * FROM dbo.MES_MaterialReturnDetail WHERE IsEnable = 1 AND MainID = {0};", listA[0].ID)).QueryMany <MES_MaterialReturnDetail>();

                        StringBuilder sb = new StringBuilder();
                        foreach (var item in listB)
                        {
                            WMS_BN_BillDetail bDetailModel = new WMS_BN_BillDetail()
                            {
                                BillCode      = dno,
                                InventoryCode = item.InventoryCode,
                                InventoryName = item.InventoryName,
                                Specs         = item.Model,
                                Unit          = item.Unit,
                                MateNum       = item.ReturnQuantity,
                                ConfirmNum    = item.ReturnQuantity,
                                PBillCode     = billCode,
                                Remark        = "",
                                CreatePerson  = MmsHelper.GetUserName(),
                                CreateTime    = newDT,
                                ModifyPerson  = MmsHelper.GetUserName(),
                                ModifyTime    = newDT,
                                IsEnable      = 1
                            };

                            var realStocks             = db.Sql(string.Format(@"SELECT * FROM dbo.WMS_BN_RealStock WHERE IsEnable = 1 AND WarehouseCode = '{0}' AND InventoryCode = '{1}' ORDER BY BatchCode", listA[0].WarehouseCode, item.InventoryCode)).QueryMany <WMS_BN_RealStock>();
                            WMS_BN_RealStock realStock = null;

                            if (realStocks.Count <= 0)
                            {
                                throw new Exception(@"仓库没有物料!");
                            }
                            else
                            {
                                var num = Convert.ToInt32(bDetailModel.ConfirmNum);

                                foreach (var i in realStocks)
                                {
                                    if (i.RealStock == null)
                                    {
                                        throw new Exception(@"仓库物料数量异常!");
                                    }
                                    else
                                    {
                                        if ((i.RealStock ?? 0) < num)
                                        {
                                        }
                                        else
                                        {
                                            realStock = i;
                                            bDetailModel.BatchCode = i.BatchCode;
                                            break;
                                        }
                                    }
                                }

                                if (string.IsNullOrEmpty(bDetailModel.BatchCode))
                                {
                                    throw new Exception(@"仓库物料数量不够,无法出库!");
                                }
                            }

                            sb.Append(WinFormClientService.GetInsertSQL(bDetailModel));

                            sb.Append(WinFormClientService.GetUpdateSQL(nameof(WMS_BN_RealStock), new KeyValuePair <string, object>("ID", realStock.ID), new
                            {
                                RealStock    = realStock.RealStock - bDetailModel.ConfirmNum,
                                TotalStock   = realStock.TotalStock - bDetailModel.ConfirmNum,
                                ModifyPerson = bDetailModel.ModifyPerson,
                                ModifyTime   = bDetailModel.ModifyTime,
                            }));
                        }

                        string sqlD  = sb.ToString();
                        int    tempC = dbB.Sql(sqlD).Execute();

                        bool result = tempA > 0 && tempB > 0 && tempC > 0;

                        if (result)
                        {
                            dbB.Commit();
                        }
                        else
                        {
                            dbB.Rollback();
                        }

                        return(new ResultModel()
                        {
                            Result = result,
                            Msg = result ? @"审核成功!" : "审核失败!"
                        });
                    }
                    catch (Exception ex)
                    {
                        dbB.Rollback();

                        throw new Exception(ex.Message);
                    }
                }
            }
            catch (Exception ex)
            {
                return(new ResultModel()
                {
                    Result = false,
                    Msg = ex.Message
                });
            }
        }