Beispiel #1
0
        /// <summary>
        ///     添加【其它出库单】
        /// </summary>
        /// <param name="db"></param>
        /// <param name="bill">其它出库单</param>
        /// <param name="details">其它出库明细</param>
        /// <returns></returns>
        public static void AddOtherOut(SpareEntities db, TB_BILL bill, List <TB_OTHER_OUT> details)
        {
            {
                SetBillNum(bill);                               //设置单据编号
                details.ForEach(p => p.BillNum = bill.BillNum); //设置明细编号
                BillController.AddOrUpdate(db, bill);           //添加单据
                foreach (var detail in details)
                {
                    OtherOutController.AddOrUpdate(db, detail); //添加明细
                }

                var subBillType = (SubBillType)bill.SubBillType;
                switch (subBillType)
                {
                //出库
                case SubBillType.OtherOut:                               //其它出库
                //                    case SubBillType.ReturnToSupplier: //原料退货
                case SubBillType.InventoryLoss:                          //盘亏
                case SubBillType.ScrapDestroy:                           //报废销毁
                    var detailsOut = details.Select(detail => detail.ToStockDetailOut(bill)).ToList();
                    StockDetailController.ListOut(db, bill, detailsOut); //更新【库存主表】【库存明细】出库
                    break;

                default:
                    throw new WmsException(ResultCode.Exception, bill.BillNum, "单据二级类型错误");
                }
                NotifyController.AddNotify(db, bill.OperName, NotifyType.OtherOutApprove, bill.BillNum, "");
            }
        }
Beispiel #2
0
 /// <summary>
 ///     添加移库单,原料入库,成品入库,原料发货,成品出库,其它移库等等都当做移库处理,以SubBillType进行区分
 /// </summary>
 /// <param name="db"></param>
 /// <param name="bill"></param>
 /// <param name="details"></param>
 /// <returns></returns>
 public static void AddStockMove(SpareEntities db, TB_BILL bill, List <TB_STOCK_MOVE> details)
 {
     SetBillNum(bill);                                  //设置单据编号
     details.ForEach(p => p.BillNum = bill.BillNum);    //设置明细编号
     BillController.AddOrUpdate(db, bill);              //添加【移库单】单据
     StockMoveController.AddList(db, details);          //添加【移库单】明细
     StockDetailController.ListMove(db, bill, details); //更新【库存主表】【库存明细】
     NotifyController.AddNotify(db, bill.OperName, NotifyType.StockMoveApprove, bill.BillNum, "");
 }
Beispiel #3
0
        private void grid_CellValueChanged(object sender, GridCellValueChangedEventArgs e)
        {
            GridCell cell = e.GridCell;
            var      row  = (GridRow)e.GridPanel.Rows[cell.RowIndex];

            //根据选择的零件号,获取库存批次,单价
            if (cell.GridColumn == gcPartCode)
            {
                var stockDetail = StockDetailController.GetListByPartCode(_db, cell.Value.ToString()).OrderBy(p => p.Batch).FirstOrDefault();
                row.Cells[gcBatch].Value       = stockDetail.Batch;
                row.Cells[gcFromLocCode].Value = stockDetail.LocCode;
            }
        }
Beispiel #4
0
 /// <summary>
 ///     确认【拣料单】
 /// </summary>
 /// <param name="db"></param>
 /// <param name="bill"></param>
 /// <param name="details"></param>
 /// <returns></returns>
 public static void FinishMaterialOut(SpareEntities db, TB_BILL bill, List <TB_OUT> details)
 {
     //校验单据状态是否为执行中
     if (bill.State != (int)BillState.New)
     {
         throw new WmsException(ResultCode.DataStateError, bill.BillNum, "状态错误,不应为:" + bill.State);
     }
     foreach (var detail in details)
     {
         var detailOut = detail.ToStockDetailOut();
         StockDetailController.Out(db, bill, detailOut);
     }
     BillController.UpdateState(db, bill, BillState.Finished); //更新【拣料单】状态为:完成
     NotifyController.AddNotify(db, bill.OperName, NotifyType.MaterialOutApprove, bill.BillNum, "");
 }
Beispiel #5
0
        /// <summary>
        ///     添加【其它出入库单】
        /// </summary>
        /// <param name="db"></param>
        /// <param name="bill">其它出入库单</param>
        /// <param name="details">其它出入库明细</param>
        /// <returns></returns>
        public static void AddOtherIn(SpareEntities db, TB_BILL bill, List <TB_OTHER_IN> details)
        {
            {
                SetBillNum(bill);                               //设置单据编号
                details.ForEach(p => p.BillNum = bill.BillNum); //设置明细编号
                BillController.AddOrUpdate(db, bill);           //添加单据
                foreach (var detail in details)
                {
                    OtherInController.AddOrUpdate(db, detail); //添加明细
                }

                var subBillType = (SubBillType)bill.SubBillType;
                switch (subBillType)
                {
                //出库
                case SubBillType.OtherOut:      //其它出库
//                    case SubBillType.ReturnToSupplier: //原料退货
                case SubBillType.InventoryLoss: //盘亏
                case SubBillType.ScrapDestroy:  //报废销毁
//                        var detailsOut = details.Select(detail => detail.ToStockDetailOut(bill)).ToList();
//                         StockDetailController.ListOut(db, bill, detailsOut); //更新【库存主表】【库存明细】出库
//
                    break;

                //入库
                case SubBillType.OtherIn:                              //其它入库
//                    case SubBillType.ProductReturn: //成品退货
                case SubBillType.InventoryProfit:                      //盘盈
                    var detailsIn = details.Select(detail => detail.ToStockDetailIn(bill)).ToList();
                    StockDetailController.ListIn(db, bill, detailsIn); //更新【库存主表】【库存明细】入库

                    break;

                case SubBillType.ProductUndecide:  //隔离
                case SubBillType.ProductScrap:     //报废
//                        var detailsMove = details.Select(p => p.ToStockMove()).ToList();
//                         StockDetailController.ListMove(db, bill, detailsMove); //更新【库存主表】【库存明细】

                    break;

                default:
                    throw new WmsException(ResultCode.Exception, bill.BillNum, "单据二级类型错误");
                }
                NotifyController.AddNotify(db, bill.OperName, NotifyType.OtherInApprove, bill.BillNum, "");
            }
        }
Beispiel #6
0
        /// <summary>
        ///     添加【原料收货单】
        /// </summary>
        /// <param name="db"></param>
        /// <param name="billList">原料收货单列表</param>
        /// <param name="detailList">原料收货明细列表</param>
        /// <returns></returns>
        public static void AddMaterialIn(SpareEntities db, List <TB_BILL> billList,
                                         List <TB_IN> detailList)
        {
            {
                foreach (var bill in billList)
                {
                    SetBillNum(bill);                                  //设置单据编号
                    detailList.ForEach(p => p.BillNum = bill.BillNum); //设置明细编号

                    BillController.AddOrUpdate(db, bill);              //添加【原料收货单】单据
                    SpareInController.AddList(db, detailList);         //添加【原料收货单】明细

                    var stockDetails = detailList.Select(detail => detail.ToStockDetailIn(bill)).ToList();
                    StockDetailController.ListIn(db, bill, stockDetails);  //更新【库存主表】【库存明细】
                }
                EntitiesFactory.SaveDb(db);
            }
        }
Beispiel #7
0
        /// <summary>
        ///     添加【盘点计划】
        /// </summary>
        /// <param name="db"></param>
        /// <param name="bill">盘点计划</param>
        /// <param name="locList">盘点库位明细</param>
        /// <returns></returns>
        public static void AddInventoryLoc(SpareEntities db, TB_BILL bill, List <TB_INVENTORY_LOC> locList)
        {
            {
                //新单据,增加盘点的三张表
                if (string.IsNullOrEmpty(bill.BillNum))
                {
                    SetBillNum(bill);                               //设置单据编号
                    locList.ForEach(p => p.BillNum = bill.BillNum); //设置明细编号
                    InventoryController.AddLocList(db, locList);    //添加盘点库位列表
                    foreach (var locBill in locList)
                    {
                        var stockDetailList     = StockDetailController.GetTListByLocCode(db, locBill.LocCode);
                        var inventoryDetailList = (stockDetailList.Select(p => p.ToInventoryDetail(locBill))).ToList();
                        InventoryController.AddDetailList(db, inventoryDetailList);                            //添加盘点明细
                    }
                    NotifyController.AddNotify(db, bill.OperName, NotifyType.InventoryPlan, bill.BillNum, ""); //添加【叫料提醒单】
                }
                else
                {
                    //修改单据,对第二、三张表的增加或删除
                    foreach (var locBill in locList)
                    {
                        if (db.TB_INVENTORY_LOC.FirstOrDefault(p => p.BillNum == bill.BillNum && p.LocCode == locBill.LocCode) == null)
                        {
                            InventoryController.AddLocList(db, locList); //添加盘点库位列表
                            var stockDetailList     = StockDetailController.GetTListByLocCode(db, locBill.LocCode);
                            var inventoryDetailList = (stockDetailList.Select(p => p.ToInventoryDetail(locBill))).ToList();
                            InventoryController.AddDetailList(db, inventoryDetailList); //添加盘点明细
                        }
                    }

                    var DBLocList = db.TB_INVENTORY_LOC.Where(p => p.BillNum == bill.BillNum).ToList();
                    foreach (var loc in DBLocList)
                    {
                        if (locList.SingleOrDefault(p => p.LocCode == loc.LocCode) == null)
                        {
                            InventoryController.DeleteInventory(db, loc);
                        }
                    }
                    NotifyController.AddNotify(db, bill.OperName, NotifyType.InventoryPlanUpdate, bill.BillNum, ""); //添加【叫料提醒单】
                }
                InventoryController.AddOrUpdate(db, bill);                                                           //添加盘点单据
            }
        }
Beispiel #8
0
        private void grid_CellValueChanged(object sender, GridCellValueChangedEventArgs e)
        {
            GridCell cell = e.GridCell;
            var      row  = (GridRow)e.GridPanel.Rows[cell.RowIndex];

            //相同批次的物料,看库存中是否有单价
            if (cell.GridColumn == gcPartCode || cell.GridColumn == gcBatch)
            {
                if (row[gcPartCode].Value != null)
                {
                    var partcode = row[gcPartCode].Value.ToString();
                    if (row[gcBatch].Value != null)
                    {
                        var batch       = row[gcBatch].Value.ToString();
                        var stockDetail =
                            StockDetailController.GetListByPartCode(_db, partcode)
                            .Where(p => p.Batch == batch)
                            .OrderBy(p => p.Batch)
                            .FirstOrDefault();
                        if (stockDetail != null)
                        {
                            row.Cells[gcUnitPrice].Value = stockDetail.UnitPrice;
                        }
                    }
                }
                if (row[gcProduceDate].Value == null)
                {
                    row[gcProduceDate].Value = DateTime.Now;
                }
            }
            //根据出库数量,自动计算金额
            if (cell.GridColumn == gcUnitPrice || cell.GridColumn == gcQty)
            {
                if (Convert.ToString(row.Cells[gcUnitPrice].Value) != "" && Convert.ToString(row.Cells[gcQty].Value) != "")
                {
                    row.Cells[gcAmount].Value = (decimal)row.Cells[gcUnitPrice].Value * (decimal)row.Cells[gcQty].Value;
                }
            }
        }
Beispiel #9
0
 /// <summary>
 ///     执行【领用还回单】
 /// </summary>
 /// <param name="db"></param>
 /// <param name="billList">领用还回单列表</param>
 /// <param name="detailList">领用还回明细列表</param>
 /// <returns></returns>
 public static void ExecuteSpareReturn(SpareEntities db, TB_BILL bill,
                                       List <TB_RETURN> detailList)
 {
     {
         foreach (var detail in detailList)
         {
             var stockDetail = new TS_STOCK_DETAIL()
             {
                 LocCode   = detail.ToLocCode,
                 PartCode  = detail.PartCode,
                 Batch     = detail.Batch,
                 Qty       = (decimal)detail.InQty,
                 UnitPrice = detail.UnitPrice,
                 UpdateQty = (decimal)detail.InQty
             };
             var stockDetails = new List <TS_STOCK_DETAIL>();
             stockDetails.Add(stockDetail);
             StockDetailController.ListIn(db, bill, stockDetails); //更新【库存主表】【库存明细】
             NotifyController.AddNotify(db, bill.OperName, NotifyType.SpareReturnApprove, bill.BillNum, "");
         }
         EntitiesFactory.SaveDb(db);
     }
 }
Beispiel #10
0
        public static StockDetailController Fixture()
        {
            StockDetailController controller = new StockDetailController(new StockDetailRepository(), "", new LoginView());

            return(controller);
        }
 public static StockDetailController Fixture()
 {
     StockDetailController controller = new StockDetailController(new StockDetailRepository(), "", new LoginView());
     return controller;
 }