示例#1
0
        /// <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
                });
            }
        }
        //自动生成出入库单
        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);
        }
示例#3
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);
        }