Esempio n. 1
0
        public static List <StorageDoc> GetStorageDocList(string userid, EnumDocType type, EnumDocStatus status, string keywords, string begintime, string endtime, string wareid, string providerid, int pageSize, int pageIndex, ref int totalCount, ref int pageCount, string clientID)
        {
            DataSet ds = StockDAL.GetStorageDocList(userid, (int)type, (int)status, keywords, begintime, endtime, wareid, providerid, pageSize, pageIndex, ref totalCount, ref pageCount, clientID);

            List <StorageDoc> list = new List <StorageDoc>();

            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                StorageDoc model = new StorageDoc();
                model.FillData(dr);
                model.UserName  = OrganizationBusiness.GetUserByUserID(model.CreateUserID, clientID).Name;
                model.StatusStr = GetDocStatusStr(model.DocType, model.Status);

                model.Details = new List <StorageDetail>();
                if (ds.Tables.Contains("Details"))
                {
                    foreach (DataRow detail in ds.Tables["Details"].Select("DocID='" + model.DocID + "'"))
                    {
                        StorageDetail dModel = new StorageDetail();
                        dModel.FillData(detail);
                        if ((int)type == 3 || (int)type == 4)
                        {
                            if (!string.IsNullOrEmpty(dModel.DepotID) && !string.IsNullOrEmpty(dModel.WareID))
                            {
                                dModel.DepotCode = SystemBusiness.BaseBusiness.GetDepotByID(dModel.DepotID, dModel.WareID, clientID).DepotCode;
                            }
                        }
                        model.Details.Add(dModel);
                    }
                }

                list.Add(model);
            }
            return(list);
        }
Esempio n. 2
0
        public static List <StorageDoc> GetStorageDocDetails(string docid, string clientid)
        {
            DataSet ds = StockDAL.BaseProvider.GetStorageDocDetails(docid);

            List <StorageDoc> list = new List <StorageDoc>();

            foreach (DataRow dr in ds.Tables["Doc"].Rows)
            {
                StorageDoc model = new StorageDoc();
                model.FillData(dr);

                List <StorageDetail> details = new List <StorageDetail>();
                foreach (DataRow detailDR in ds.Tables["Details"].Select("DocID = '" + model.DocID + "'"))
                {
                    StorageDetail detail = new StorageDetail();
                    detail.FillData(detailDR);
                    details.Add(detail);
                }
                model.Details = details;
                var user = OrganizationBusiness.GetUserByUserID(model.CreateUserID, clientid);
                model.UserName = user != null ? user.Name : "";

                list.Add(model);
            }
            return(list);
        }
Esempio n. 3
0
        public static StorageDoc GetStorageDetail(string docid, string clientid)
        {
            DataSet    ds    = StockDAL.GetStorageDetail(docid, clientid);
            StorageDoc model = new StorageDoc();

            if (ds.Tables.Contains("Doc") && ds.Tables["Doc"].Rows.Count > 0)
            {
                model.FillData(ds.Tables["Doc"].Rows[0]);
                model.CreateUser = OrganizationBusiness.GetUserByUserID(model.CreateUserID, clientid);
                model.StatusStr  = GetDocStatusStr(model.DocType, model.Status);

                model.DocTypeStr = CommonBusiness.GetEnumDesc <EnumDocType>((EnumDocType)model.DocType);

                model.WareHouse = SystemBusiness.BaseBusiness.GetWareByID(model.WareID, model.ClientID);
                model.Details   = new List <StorageDetail>();
                foreach (DataRow item in ds.Tables["Details"].Rows)
                {
                    StorageDetail details = new StorageDetail();
                    details.FillData(item);
                    model.Details.Add(details);
                }
            }

            return(model);
        }
Esempio n. 4
0
        public async Task <IActionResult> GetStockLogReport()
        {
            StorageCategory category = new StorageCategory();
            var             list     = await _storageLogApp.GetList();

            category.HospialName = await _organizeApp.GetHospitalName();

            category.HospialLogo = await _organizeApp.GetHospitalLogo();

            var first = list.FirstOrDefault();

            category.PrintDate = first == null ? "" : first.F_CheckTime.ToChineseDateString();
            category.Costs     = list.Sum(t => t.F_TotalCharges).ToFloat(2);

            foreach (var item in list)
            {
                var storagesum = category.StorageSummaries.FirstOrDefault(t => t.StorageType.Equals(item.F_ImpClass));
                if (storagesum == null)
                {
                    storagesum = new StorageSummary
                    {
                        StorageType = item.F_ImpClass,
                        Costs       = 0f
                    };
                    category.StorageSummaries.Add(storagesum);
                }
                storagesum.Costs = storagesum.Costs + item.F_TotalCharges.ToFloat(2);

                var storage = storagesum.StorageDetails.FirstOrDefault(t => t.ItemId.Equals(item.F_ItemId));
                if (storage == null)
                {
                    storage = new StorageDetail
                    {
                        ItemId          = item.F_ItemId,
                        ItemCode        = item.F_Code,
                        ItemName        = item.F_Name,
                        ItemSpec        = item.F_Spec,
                        Amount          = item.F_Amount.ToFloat(2),
                        Charges         = item.F_TotalCharges.ToFloat(2),
                        Price           = item.F_Charges.ToFloat(2),
                        Unit            = item.F_Unit,
                        CheckResultType = item.F_CheckType,
                        RealAmount      = item.F_RealAmount.ToInt()
                    };
                    storagesum.StorageDetails.Add(storage);
                }
                else
                {
                    storage.Amount  += item.F_Amount.ToFloat(2);
                    storage.Charges += item.F_TotalCharges.ToFloat(2);
                }
            }



            return(Content(await _storageApp.GetStorageLogReport(new List <StorageCategory> {
                category
            })));
        }
Esempio n. 5
0
        protected override object GetEditObject()
        {
            if (_InventoryFacade == null)
            {
                _InventoryFacade = new InventoryFacade(base.DataProvider);
            }
            StorageDetail storageDetail = (StorageDetail)Session["storageDetail"];

            storageDetail.StorageAgeDate = FormatHelper.TODateInt(this.StorageAgeDateEdit.Text);
            return(storageDetail);
        }
Esempio n. 6
0
 public string GetDqmCode(string fromCarton)
 {
     #region facade
     InventoryFacade facade = new InventoryFacade(this.DataProvider);
     #endregion
     StorageDetail storageCarton = (StorageDetail)facade.GetStorageDetail(fromCarton);
     if (storageCarton == null)
     {
         return("");
     }
     string dqmCode = storageCarton.DQMCode;
     return(dqmCode);
 }
Esempio n. 7
0
        public static List <StorageDetail> Array2StorageDetailfoList(object[] arr)
        {
            if (arr == null)
            {
                return(null);
            }
            List <StorageDetail> list = new List <StorageDetail>();

            foreach (var a in arr)
            {
                StorageDetail inv = (StorageDetail)a;
                list.Add(inv);
            }
            return(list);
        }
Esempio n. 8
0
        /// <summary>
        /// 获取单据详情
        /// </summary>
        /// <param name="docid">单据ID</param>
        /// <param name="clientid">客户端ID</param>
        /// <returns></returns>
        public static StorageDoc GetStorageDetail(string docid, string clientid)
        {
            DataSet    ds    = OrdersDAL.GetStorageDetail(docid, clientid);
            StorageDoc model = new StorageDoc();

            if (ds.Tables.Contains("Doc") && ds.Tables["Doc"].Rows.Count > 0)
            {
                model.FillData(ds.Tables["Doc"].Rows[0]);
                model.CreateUser = OrganizationBusiness.GetUserByUserID(model.CreateUserID, clientid);
                model.StatusStr  = GetDocStatusStr(model.DocType, model.Status);

                model.Details = new List <StorageDetail>();
                foreach (DataRow item in ds.Tables["Details"].Rows)
                {
                    StorageDetail details = new StorageDetail();
                    details.FillData(item);
                    model.Details.Add(details);
                }
            }

            return(model);
        }
Esempio n. 9
0
        public static StorageDoc GetStorageDetail(string docid, string clientid)
        {
            DataSet    ds    = StockDAL.GetStorageDetail(docid, clientid);
            StorageDoc model = new StorageDoc();

            if (ds.Tables.Contains("Doc") && ds.Tables["Doc"].Rows.Count > 0)
            {
                model.FillData(ds.Tables["Doc"].Rows[0]);
                model.CreateUser = OrganizationBusiness.GetUserByUserID(model.CreateUserID, clientid);
                model.StatusStr  = GetDocStatusStr(model.DocType, model.Status);

                model.DocTypeStr = CommonBusiness.GetEnumDesc <EnumDocType>((EnumDocType)model.DocType);

                if (!string.IsNullOrEmpty(model.ExpressID))
                {
                    model.Express = ExpressCompanyBusiness.GetExpressCompanyDetail(model.ExpressID);
                }

                model.WareHouse = SystemBusiness.BaseBusiness.GetWareByID(model.WareID, model.ClientID);
                model.Details   = new List <StorageDetail>();
                foreach (DataRow item in ds.Tables["Details"].Rows)
                {
                    StorageDetail details = new StorageDetail();
                    details.FillData(item);
                    if (!string.IsNullOrEmpty(details.UnitID))
                    {
                        details.UnitName = new ProductsBusiness().GetUnitByID(details.UnitID).UnitName;
                    }
                    if (!string.IsNullOrEmpty(details.ProviderID))
                    {
                        details.Providers = new ProvidersBusiness().GetProviderByID(details.ProviderID);
                    }
                    model.Details.Add(details);
                }
            }

            return(model);
        }
Esempio n. 10
0
        protected override void DeleteDomainObjects(ArrayList domainObjects)
        {
            if (_WarehouseFacade == null)
            {
                _WarehouseFacade = new WarehouseFacade(base.DataProvider);
            }
            if (_InventoryFacade == null)
            {
                _InventoryFacade = new InventoryFacade(this.DataProvider);
            }
            Pickdetailmaterialsn[] pickdetailmaterialList = ((Pickdetailmaterialsn[])domainObjects.ToArray(typeof(Pickdetailmaterialsn)));
            try
            {
                this.DataProvider.BeginTransaction();
                foreach (Pickdetailmaterialsn pickdetailm in pickdetailmaterialList)
                {
                    #region delete
                    //请先删除箱单信息
                    string   sn   = pickdetailm.Sn;
                    object[] list = _WarehouseFacade.GetCartoninvdetailsnBySn(sn);
                    if (list != null)
                    {
                        this.DataProvider.RollbackTransaction();
                        WebInfoPublish.Publish(this, "请先删除箱单信息", this.languageComponent1);
                        return;
                    }
                    #region delete 检查
                    //1、只有行明细是拣料中和拣料完成状态,且拣货任务令头状态是拣料状态或制作箱单状态时才可以删除。
                    PickDetail pickDetail = _InventoryFacade.GetPickDetail(pickdetailm.Pickno, pickdetailm.Pickline) as PickDetail;
                    Pick       pickHead   = _InventoryFacade.GetPick(pickdetailm.Pickno) as Pick;
                    if (pickDetail == null || pickHead == null)
                    {
                        this.DataProvider.RollbackTransaction();
                        return;
                    }
                    if (!(pickDetail.Status == PickDetail_STATUS.Status_Pick ||
                          pickDetail.Status == PickDetail_STATUS.Status_WaitPick ||
                          pickDetail.Status == PickDetail_STATUS.Status_ClosePick || pickDetail.Status == PickDetail_STATUS.Status_Cancel))
                    {
                        this.DataProvider.RollbackTransaction();
                        WebInfoPublish.Publish(this, "行明细是拣料中和拣料完成,取消状态,才可以删除", this.languageComponent1);
                        return;
                    }
                    if (!(pickHead.Status == PickHeadStatus.PickHeadStatus_Pick ||
                          pickDetail.Status == PickDetail_STATUS.Status_WaitPick ||
                          pickHead.Status == PickHeadStatus.PickHeadStatus_MakePackingList || pickHead.Status == PickHeadStatus.PickHeadStatus_Cancel))
                    {
                        this.DataProvider.RollbackTransaction();
                        WebInfoPublish.Publish(this, "拣货任务令头状态是拣料状态或制作箱单,取消状态时,才可以删除", this.languageComponent1);
                        return;
                    }
                    //delete pickdetailmsn
                    _WarehouseFacade.DeletePickdetailmaterialsn(pickdetailm);
                    // tblPickdetailmaterial
                    object[]           snlist             = _WarehouseFacade.QueryPickdetailmaterialsnByCartonno(pickdetailm.Pickno, pickdetailm.Cartonno);
                    Pickdetailmaterial pickdetailmaterial = _WarehouseFacade.GetPickdetailmaterial(pickdetailm.Pickno, pickdetailm.Cartonno)
                                                            as Pickdetailmaterial;
                    if (pickdetailmaterial != null)
                    {
                        pickdetailmaterial.Qty -= 1;
                        _WarehouseFacade.UpdatePickdetailmaterial(pickdetailmaterial);
                        if (snlist == null)
                        {
                            _WarehouseFacade.DeletePickdetailmaterial(pickdetailmaterial);
                        }
                    }

                    //3、所有已拣行明细删除后,拣货任务令状态变更为待拣料。
                    #endregion

                    StorageDetail storageDetail = _WarehouseFacade.GetStorageDetail(pickdetailm.Cartonno) as StorageDetail;
                    if (storageDetail != null)
                    {
                        storageDetail.FreezeQty    -= 1;
                        storageDetail.AvailableQty += 1;
                        _WarehouseFacade.UpdateStorageDetail(storageDetail);
                    }
                    StorageDetailSN storageDetailsn =
                        _InventoryFacade.GetStorageDetailSN(pickdetailm.Sn) as StorageDetailSN;
                    if (storageDetailsn != null)
                    {
                        storageDetailsn.PickBlock = "N";
                        _InventoryFacade.UpdateStorageDetailSN(storageDetailsn);
                    }


                    int count = _WarehouseFacade.GetPickdetailmaterialCount(pickdetailm.Pickno);
                    pickDetail.SQTY -= 1;
                    if (pickDetail.Status != "Cancel")
                    {
                        pickDetail.Status = PickDetail_STATUS.Status_Pick;
                    }
                    if (count == 0)
                    {
                        //pickHead.Status = PickHeadStatus.PickHeadStatus_WaitPick;
                        _WarehouseFacade.UpdatePick(pickHead);
                        //pickDetail.Status = PickDetail_STATUS.Status_WaitPick;
                    }
                    _WarehouseFacade.UpdatePickdetail(pickDetail);
                    #endregion
                }
                this.DataProvider.CommitTransaction();
                WebInfoPublish.Publish(this, "删除成功", this.languageComponent1);
            }
            catch (Exception ex)
            {
                this.DataProvider.RollbackTransaction();
                WebInfoPublish.PublishInfo(this, ex.Message, this.languageComponent1);
            }
        }
Esempio n. 11
0
        public string OnShelves(DataTable dt, string cartonNO, string UserCode)
        {
            WarehouseFacade facade       = null;
            InventoryFacade _Invenfacade = null;
            DBDateTime      dbTime       = FormatHelper.GetNowDBDateTime(DataProvider);
            object          obj          = null;

            if (facade == null)
            {
                facade = new WarehouseFacade(DataProvider);
            }
            if (_Invenfacade == null)
            {
                _Invenfacade = new InventoryFacade(DataProvider);
            }
            this.DataProvider.BeginTransaction();
            try
            {
                string Stno = string.Empty;
                for (int j = 0; j < dt.Rows.Count; j++)
                {
                    obj = facade.GetAsndetail(int.Parse(dt.Rows[j]["stline"].ToString()), dt.Rows[j]["stno"].ToString());
                    if (obj != null)
                    {
                        Stno = (obj as Asndetail).Stno;
                        #region 更新asndetail表 更新actqty和状态
                        //update actqty and status
                        Asndetail asndetail = obj as Asndetail;
                        asndetail.ActQty       = asndetail.QcpassQty;
                        asndetail.Status       = ASNDetail_STATUS.ASNDetail_Close;
                        asndetail.MaintainDate = dbTime.DBDate;
                        asndetail.MaintainTime = dbTime.DBTime;
                        asndetail.MaintainUser = UserCode;
                        facade.UpdateAsndetail(asndetail);
                        #endregion
                        #region 更新asndetailitem表 更新 actqty 和更新invoicedetail表,更新actqty
                        object[] itemobjs = facade.GetASNDetailItembyStnoAndStline(asndetail.Stno, asndetail.Stline.ToString());
                        if (itemobjs != null)
                        {
                            for (int i = 0; i < itemobjs.Length; i++)
                            {
                                Asndetailitem asnitem = itemobjs[i] as Asndetailitem;
                                asnitem.ActQty       = asnitem.QcpassQty;
                                asnitem.MaintainDate = dbTime.DBDate;
                                asnitem.MaintainTime = dbTime.DBTime;
                                asnitem.MaintainUser = UserCode;
                                facade.UpdateAsndetailitem(asnitem);

                                object         invoiobj = _Invenfacade.GetInvoicesDetail(asnitem.Invno, int.Parse(asnitem.Invline));
                                InvoicesDetail inv      = invoiobj as InvoicesDetail;
                                inv.ActQty      += Convert.ToInt32(asnitem.QcpassQty);
                                inv.MaintainDate = dbTime.DBDate;
                                inv.MaintainTime = dbTime.DBTime;
                                inv.MaintainUser = UserCode;

                                _Invenfacade.UpdateInvoicesDetail(inv);
                            }
                        }
                        #endregion

                        //新增数据tblstoragedetail
                        object asnobj = facade.GetAsn(asndetail.Stno);
                        if (asnobj == null)
                        {
                            this.DataProvider.RollbackTransaction();
                            // WebInfoPublish.Publish(this, "$Error_ASN_NO_DATA", this.languageComponent1);

                            return("ASN 中没有数据:" + asndetail.Stno);
                        }
                        Asn asn = asnobj as Asn;
                        #region 在storagedetail表中增加一条数据
                        StorageDetail stordetail = _Invenfacade.CreateNewStorageDetail();
                        stordetail.AvailableQty       = asndetail.ActQty;
                        stordetail.CartonNo           = asndetail.Cartonno;
                        stordetail.CDate              = dbTime.DBDate;
                        stordetail.CTime              = dbTime.DBTime;
                        stordetail.CUser              = UserCode;
                        stordetail.DQMCode            = asndetail.DqmCode;
                        stordetail.FacCode            = (asnobj as Asn).FacCode;
                        stordetail.FreezeQty          = 0;
                        stordetail.LastStorageAgeDate = dbTime.DBDate;

                        stordetail.LocationCode   = FormatHelper.PKCapitalFormat(FormatHelper.CleanString(cartonNO));
                        stordetail.Lotno          = asndetail.Lotno;
                        stordetail.MaintainDate   = dbTime.DBDate;
                        stordetail.MaintainTime   = dbTime.DBTime;
                        stordetail.MaintainUser   = UserCode;
                        stordetail.MCode          = asndetail.MCode;
                        stordetail.MDesc          = asndetail.MDesc;
                        stordetail.ProductionDate = asndetail.Production_Date;

                        stordetail.ReworkApplyUser = (asnobj as Asn).ReworkapplyUser;
                        stordetail.StorageAgeDate  = string.IsNullOrEmpty(asndetail.StorageageDate.ToString()) ? dbTime.DBDate : int.Parse(asndetail.StorageageDate);
                        stordetail.StorageCode     = (asnobj as Asn).StorageCode;
                        stordetail.StorageQty      = asndetail.ActQty;
                        stordetail.SupplierLotNo   = asndetail.Supplier_lotno;
                        stordetail.Unit            = asndetail.Unit;

                        _Invenfacade.AddStorageDetail(stordetail);
                        #endregion
                        #region 在StorageDetailSN表中增加数据
                        //新增数据tblStorageDetailSN

                        object[] snobj = facade.GetASNDetailSNbyStnoandStline(asndetail.Stno, asndetail.Stline.ToString());
                        if (snobj == null)
                        {
                            this.DataProvider.RollbackTransaction();
                            // WebInfoPublish.Publish(this, "$Error_ASNDetail_NO_DATA", this.languageComponent1);

                            return("ASNDetail表中没有数据:" + asndetail.Stno + "/" + asndetail.Stline.ToString());
                        }
                        for (int i = 0; i < snobj.Length; i++)
                        {
                            StorageDetailSN storDetailSN = _Invenfacade.CreateNewStorageDetailSN();
                            Asndetailsn     detailSN     = snobj[i] as Asndetailsn;
                            storDetailSN.CartonNo     = detailSN.Cartonno;
                            storDetailSN.CDate        = dbTime.DBDate;
                            storDetailSN.CTime        = dbTime.DBTime;
                            storDetailSN.CUser        = UserCode;
                            storDetailSN.MaintainDate = dbTime.DBDate;
                            storDetailSN.MaintainTime = dbTime.DBTime;
                            storDetailSN.MaintainUser = UserCode;
                            storDetailSN.PickBlock    = "N";
                            storDetailSN.SN           = detailSN.Sn;

                            _Invenfacade.AddStorageDetailSN(storDetailSN);
                        }
                        #endregion
                        #region 在invinouttrans表中增加一条数据
                        InvInOutTrans trans = facade.CreateNewInvInOutTrans();
                        trans.CartonNO        = asndetail.Cartonno;
                        trans.DqMCode         = asndetail.DqmCode;
                        trans.FacCode         = asn.FacCode;
                        trans.FromFacCode     = asn.FromfacCode;
                        trans.FromStorageCode = asn.FromstorageCode;
                        trans.InvNO           = asn.Invno;
                        trans.InvType         = asn.StType;
                        trans.LotNo           = asndetail.Lotno;
                        trans.MaintainDate    = dbTime.DBDate;
                        trans.MaintainTime    = dbTime.DBTime;
                        trans.MaintainUser    = UserCode;
                        trans.MCode           = asndetail.MCode;
                        trans.ProductionDate  = asndetail.Production_Date;
                        trans.Qty             = asndetail.ActQty;
                        trans.Serial          = 0;
                        trans.StorageAgeDate  = int.Parse(asndetail.StorageageDate);
                        trans.StorageCode     = asn.StorageCode;
                        trans.SupplierLotNo   = asndetail.Supplier_lotno;
                        trans.TransNO         = asn.Stno;
                        trans.TransType       = "IN";
                        trans.Unit            = asndetail.Unit;
                        facade.AddInvInOutTrans(trans);
                        #endregion
                    }
                }
                #region   架完成后,检查这个stno在asndetail中的状态是否都是close,cancel,如果是将asn表的状态更新为close,cancel
                if (facade.JudgeASNDetailStatus(Stno, ASNDetail_STATUS.ASNDetail_Close))
                {
                    object asnobj = facade.GetAsn(Stno);
                    if (asnobj == null)
                    {
                        this.DataProvider.RollbackTransaction();
                        //WebInfoPublish.Publish(this, "$Error_ASN_NO_DATA", this.languageComponent1);

                        return("ASN 中没有数据:" + Stno);
                    }
                    Asn asn = asnobj as Asn;
                    asn.Status       = ASN_STATUS.ASN_Close;
                    asn.MaintainDate = dbTime.DBDate;
                    asn.MaintainTime = dbTime.DBTime;
                    asn.MaintainUser = UserCode;

                    facade.UpdateAsn(asn);
                }
                if (facade.JudgeASNDetailStatus(Stno, ASNDetail_STATUS.ASNDetail_Cancel))
                {
                    object asnobj = facade.GetAsn(Stno);
                    if (asnobj == null)
                    {
                        this.DataProvider.RollbackTransaction();
                        //WebInfoPublish.Publish(this, "$Error_ASN_NO_DATA", this.languageComponent1);

                        return("ASN中没有数据:" + Stno);
                    }
                    Asn asn = asnobj as Asn;
                    asn.Status       = ASN_STATUS.ASN_Cancel;
                    asn.MaintainDate = dbTime.DBDate;
                    asn.MaintainTime = dbTime.DBTime;
                    asn.MaintainUser = UserCode;

                    facade.UpdateAsn(asn);
                }
                #endregion
                #region  通过入库指令号,查找invno,检查actqty是否等于planqty,如果等于将finishflag=Y
                object asnobj1 = facade.GetAsn(Stno);
                if (asnobj1 == null)
                {
                    this.DataProvider.RollbackTransaction();
                    //WebInfoPublish.Publish(this, "$Error_ASN_NO_DATA", this.languageComponent1);

                    return("ASN中没有数据:" + Stno);
                }
                Asn asn1 = asnobj1 as Asn;
                if (facade.JudgeInvoiceDetailStatus(asn1.Invno))
                {
                    object invobj = _Invenfacade.GetInvoices(asn1.Invno);
                    if (invobj == null)
                    {
                        this.DataProvider.RollbackTransaction();
                        //WebInfoPublish.Publish(this, "$Error_INV_NO_DATA", this.languageComponent1);

                        return("INV中没有数据:" + asn1.Invno);
                    }
                    Invoices inv = invobj as Invoices;
                    inv.FinishFlag   = "Y";
                    inv.MaintainDate = dbTime.DBDate;
                    inv.MaintainTime = dbTime.DBTime;
                    inv.MaintainUser = UserCode;
                    _Invenfacade.UpdateInvoices(inv);
                }
                #endregion

                this.DataProvider.CommitTransaction();
            }
            catch (Exception ex)
            {
                this.DataProvider.RollbackTransaction();
            }

            return("上架成功");
        }
        protected override void DeleteDomainObjects(ArrayList domainObjects)
        {
            if (_WarehouseFacade == null)
            {
                _WarehouseFacade = new WarehouseFacade(base.DataProvider);
            }
            if (_InventoryFacade == null)
            {
                _InventoryFacade = new InventoryFacade(this.DataProvider);
            }
            Pickdetailmaterial[] pickdetailmaterialList = ((Pickdetailmaterial[])domainObjects.ToArray(typeof(Pickdetailmaterial)));
            try
            {
                this.DataProvider.BeginTransaction();

                Pick pick = _InventoryFacade.GetPick(txtPickNoQuery.Text) as Pick;
                if (pick == null)
                {
                    WebInfoPublish.Publish(this, pick.PickNo + "拣货任务令不存在!", this.languageComponent1);
                    return;
                }

                foreach (Pickdetailmaterial pickdetailm in pickdetailmaterialList)
                {
                    int packageCount = _WarehouseFacade.GetPackageMaterialCartonnos(pick.PickNo);
                    if (packageCount > 0)
                    {
                        WebInfoPublish.Publish(this, pick.PickNo + "包装信息存在, 请先删除包装信息!", this.languageComponent1);
                        return;
                    }
                }



                foreach (Pickdetailmaterial pickdetailm in pickdetailmaterialList)
                {
                    #region delete
                    #region delete 检查
                    //1、只有行明细是拣料中和拣料完成状态,且拣货任务令头状态是拣料状态或制作箱单状态时才可以删除。
                    PickDetail pickDetail = _InventoryFacade.GetPickDetail(pickdetailm.Pickno, pickdetailm.Pickline) as PickDetail;
                    Pick       pickHead   = _InventoryFacade.GetPick(pickdetailm.Pickno) as Pick;
                    if (pickDetail == null || pickHead == null)
                    {
                        this.DataProvider.RollbackTransaction();
                        return;
                    }
                    if (!(pickDetail.Status == PickDetail_STATUS.Status_Pick ||
                          pickDetail.Status == PickDetail_STATUS.Status_WaitPick ||
                          pickDetail.Status == PickDetail_STATUS.Status_ClosePick || pickDetail.Status == PickDetail_STATUS.Status_Cancel))
                    {
                        this.DataProvider.RollbackTransaction();
                        WebInfoPublish.Publish(this, "行明细是拣料中和拣料完成,取消状态,才可以删除", this.languageComponent1);
                        return;
                    }
                    if (!(pickHead.Status == PickHeadStatus.PickHeadStatus_Pick ||
                          pickHead.Status == PickHeadStatus.PickHeadStatus_MakePackingList ||
                          pickHead.Status == PickHeadStatus.PickHeadStatus_WaitPick || pickHead.Status == PickHeadStatus.PickHeadStatus_Cancel))
                    {
                        this.DataProvider.RollbackTransaction();
                        WebInfoPublish.Publish(this, "拣货任务令头状态是拣料状态或制作箱单,取消状态时,才可以删除", this.languageComponent1);
                        return;
                    }



                    //  2、删除已拣行明细后,该行状态变更为待拣料。
                    _WarehouseFacade.DeletePickdetailmaterial(pickdetailm);
                    //delete pickdetailmsn
                    _WarehouseFacade.DeletePickDetailMaterialSNByCartonNo(pickdetailm.Pickno, pickdetailm.Cartonno);



                    //3、所有已拣行明细删除后,拣货任务令状态变更为待拣料。
                    #endregion

                    StorageDetail storageDetail = _WarehouseFacade.GetStorageDetail(pickdetailm.Cartonno) as StorageDetail;
                    if (storageDetail != null)
                    {
                        storageDetail.FreezeQty    -= Convert.ToInt32(pickdetailm.Qty);
                        storageDetail.AvailableQty += Convert.ToInt32(pickdetailm.Qty);
                        _WarehouseFacade.UpdateStorageDetail(storageDetail);
                        _WarehouseFacade.UpdateStorageDetailSnbyCartonNo(pickdetailm.Cartonno, "N");
                    }

                    if (pickDetail.Status != "Cancel")
                    {
                        pickDetail.Status = PickDetail_STATUS.Status_Pick;
                    }

                    pickDetail.SQTY -= pickdetailm.Qty;
                    int count = _WarehouseFacade.GetPickdetailmaterialCount(pickdetailm.Pickno);
                    if (count == 0)
                    {
                        //pickHead.Status = PickHeadStatus.PickHeadStatus_WaitPick;
                        _WarehouseFacade.UpdatePick(pickHead);
                        //pickDetail.Status = PickDetail_STATUS.Status_WaitPick;
                    }
                    _WarehouseFacade.UpdatePickdetail(pickDetail);

                    #endregion
                }
                this.DataProvider.CommitTransaction();
                WebInfoPublish.Publish(this, "删除成功", this.languageComponent1);
            }
            catch (Exception ex)
            {
                this.DataProvider.RollbackTransaction();
                WebInfoPublish.PublishInfo(this, ex.Message, this.languageComponent1);
            }
        }
Esempio n. 13
0
        public string Submit(string transNo, string fromCartonNo, string qty, string sn, string locationCode, string rdoSelectType, string mUser, IDomainDataProvider DataProvider)
        {
            InventoryFacade _InventoryFacade = new InventoryFacade(DataProvider);
            WarehouseFacade _WarehouseFacade = new WarehouseFacade(DataProvider);
            DBDateTime      dbDateTime       = FormatHelper.GetNowDBDateTime(DataProvider);
            int             mDate            = dbDateTime.DBDate;
            int             mTime            = dbDateTime.DBTime;

            try
            {
                DataProvider.BeginTransaction();

                #region Check
                Storloctrans storloctrans = (Storloctrans)_WarehouseFacade.GetStorloctrans(transNo);


                if (storloctrans == null)
                {
                    DataProvider.RollbackTransaction();
                    return("无此转储单信息");
                }
                //原箱号:后台获取其库位和货位(TBLStorageDetail),查找条件:根据箱号到TBLStorageDetail中查找库存信息;
                //若库位和出库库位(TBLStorLocTrans. FromStorageCode)不符则报错。
                StorageDetail storageDetail = (StorageDetail)_InventoryFacade.GetStorageDetail(fromCartonNo);
                if (storageDetail == null)
                {
                    DataProvider.RollbackTransaction();
                    return("库存明细信息表里没有对应箱号的数据");
                }

                if (!storageDetail.StorageCode.Equals(storloctrans.FromstorageCode))
                {
                    DataProvider.RollbackTransaction();
                    return("库位和出库库位不符");
                }

                //一 根据箱号到TBLStorageDetail查找mcode,根据(转单号,mcode)查找TBLStorLocTransDetail 中数据,如果没有则报错:转储单中没有对应的SAP物料号
                StorloctransDetail storloctransDetail = _WarehouseFacade.GetStorloctransdetail(transNo, storageDetail.MCode)
                                                        as StorloctransDetail;
                if (storloctransDetail == null)
                {
                    DataProvider.RollbackTransaction();
                    return("转储单中没有对应的SAP物料号");
                }
                //二  判断(CartonNO对应的MCode),(TransNo)在TBLStorLocTransDetail中的状态是否为Close:完成,
                //如果是提示该料转储已经完成,如果是Release(初始化),更新状态为(Pick,拣料中) 。
                if (storloctransDetail.Status == "Close")
                {
                    DataProvider.RollbackTransaction();
                    return("该料转储已经完成");
                }

                decimal total   = _WarehouseFacade.GetStorloctransDetailDqmCodeQtySum(transNo, storageDetail.DQMCode);
                decimal smaller = _WarehouseFacade.GetStorloctransDetailCartonDqmCodeQtySum(transNo, storageDetail.DQMCode);

                if (rdoSelectType == "整箱")
                {
                    smaller += storageDetail.StorageQty;
                }
                else
                {
                    smaller += string.IsNullOrEmpty(sn) ? decimal.Parse(qty) : 1;
                }


                if (smaller > total)
                {
                    DataProvider.RollbackTransaction();
                    return("此物料的转储数量已经超过转储单" + transNo + "规定的数量!");
                }

                if (storloctransDetail.Status == "Release")
                {
                    storloctransDetail.Status       = "Pick";
                    storloctransDetail.MaintainUser = mUser;
                    storloctransDetail.MaintainDate = mDate;
                    storloctransDetail.MaintainTime = mTime;
                    _WarehouseFacade.UpdateStorloctransdetail(storloctransDetail);
                }



                #endregion
                if (rdoSelectType == "整箱")
                {
                    #region 整箱
                    //1,	检查TBLStorageDetail.FreezeQTY是否为零?不为零,检查是否TBLStorageDetail.FreezeQTY=
                    //TBLStorageDetail. STORAGEQTY?如果是:提示此箱在拣料中;如果不是提示此箱SN部分拣料中,请拆箱拣料。
                    #region TBLStorageDetail
                    if (storageDetail.FreezeQty != 0)
                    {
                        if (storageDetail.FreezeQty == storageDetail.StorageQty)
                        {
                            DataProvider.RollbackTransaction();
                            return("此箱在拣料中");
                        }
                        else
                        {
                            DataProvider.RollbackTransaction();
                            return("此箱SN部分拣料中,请拆箱拣料");
                        }
                    }

                    //2,	更新TBLStorageDetail. FreezeQTY= TBLStorageDetail. STORAGEQTY,TBLStorageDetail. AvailableQTY=0。
                    storageDetail.FreezeQty    = storageDetail.StorageQty;
                    storageDetail.AvailableQty = 0;
                    storageDetail.MaintainUser = mUser;
                    storageDetail.MaintainDate = mDate;
                    storageDetail.MaintainTime = mTime;
                    _InventoryFacade.UpdateStorageDetail(storageDetail);
                    #endregion

                    //3,	更新TBLStorageDetailSN. PICKBLOCK=Y。
                    //StorageDetail[] storageDetails = _WarehouseFacade.GetStorageDetailsFromCARTONNO(fromCartonNo);
                    Material mar = _WarehouseFacade.GetMaterialFromDQMCode(storageDetail.DQMCode);
                    if (mar == null)
                    {
                        DataProvider.RollbackTransaction();
                        return("原箱号物料信息不存在");
                    }
                    bool issn = false || mar.MCONTROLTYPE == SAP_CONTROLTYPE.SAP_ITEM_CONTROL_KEYPARTS;

                    //单件管控
                    List <string> snList = new List <string>();
                    #region storageDetailSN
                    if (issn)
                    {
                        object[] objs = _WarehouseFacade.GetStorageDetailSnbyCartonNo(fromCartonNo);
                        if (objs == null)
                        {
                            DataProvider.RollbackTransaction();
                            return("库存明细SN信息表里没有对应箱号的数据");
                        }

                        foreach (StorageDetailSN storageDetailSN in objs)
                        {
                            snList.Add(storageDetailSN.SN);//记sn号
                            storageDetailSN.PickBlock    = "Y";
                            storageDetailSN.MaintainUser = mUser;
                            storageDetailSN.MaintainDate = mDate;
                            storageDetailSN.MaintainTime = mTime;
                            _InventoryFacade.UpdateStorageDetailSN(storageDetailSN);
                        }
                    }
                    #endregion

                    #region StorloctransDetailCarton LocationCode为空


                    StorloctransDetailCarton storCarton = _WarehouseFacade.GetStorLocTransDetailCarton(transNo, fromCartonNo);
                    if (storCarton == null)
                    {
                        StorloctransDetailCarton storloctransDetailCarton = new StorloctransDetailCarton();
                        storloctransDetailCarton.Transno            = transNo;
                        storloctransDetailCarton.MCode              = storloctransDetail.MCode;
                        storloctransDetailCarton.DqmCode            = storageDetail.DQMCode;
                        storloctransDetailCarton.MDesc              = storageDetail.MDesc;
                        storloctransDetailCarton.Unit               = storageDetail.Unit;
                        storloctransDetailCarton.Supplier_lotno     = storageDetail.SupplierLotNo;
                        storloctransDetailCarton.Production_Date    = storageDetail.ProductionDate;
                        storloctransDetailCarton.StorageageDate     = storageDetail.StorageAgeDate;
                        storloctransDetailCarton.LaststorageageDate = storageDetail.LastStorageAgeDate;
                        storloctransDetailCarton.ValidStartDate     = storageDetail.ValidStartDate;
                        storloctransDetailCarton.FacCode            = storageDetail.FacCode;
                        storloctransDetailCarton.Qty              = storageDetail.StorageQty;
                        storloctransDetailCarton.LocationCode     = locationCode;
                        storloctransDetailCarton.Cartonno         = " ";
                        storloctransDetailCarton.FromlocationCode = storageDetail.LocationCode;
                        storloctransDetailCarton.Fromcartonno     = storageDetail.CartonNo;
                        storloctransDetailCarton.Lotno            = storageDetail.Lotno;
                        storloctransDetailCarton.CUser            = mUser;
                        storloctransDetailCarton.CDate            = mDate;
                        storloctransDetailCarton.CTime            = mTime;
                        storloctransDetailCarton.MaintainUser     = mUser;
                        storloctransDetailCarton.MaintainDate     = mDate;
                        storloctransDetailCarton.MaintainTime     = mTime;
                        _WarehouseFacade.AddStorloctransdetailcarton(storloctransDetailCarton);
                    }

                    #endregion

                    #region 6.如果原箱号在TBLStorageDetailSN有SN信息,将SN信息插入到TBLStorLocTransDetailSN表
                    if (issn)
                    {
                        if (snList.Count > 0)
                        {
                            StorloctransDetailSN storloctransDetailSN = new StorloctransDetailSN();
                            foreach (string storageDetailSn in snList)
                            {
                                storloctransDetailSN.Transno      = transNo;
                                storloctransDetailSN.Cartonno     = " ";
                                storloctransDetailSN.Fromcartonno = fromCartonNo;
                                storloctransDetailSN.Sn           = storageDetailSn;// storageDetailSN.SN;
                                storloctransDetailSN.MaintainUser = mUser;
                                storloctransDetailSN.MaintainDate = mDate;
                                storloctransDetailSN.MaintainTime = mTime;
                                _WarehouseFacade.AddStorloctransdetailsn(storloctransDetailSN);
                            }
                        }
                    }
                    #endregion

                    #endregion
                }
                else
                {
                    #region 拆箱
                    //1,	无论输入是【原箱号】,【SN】,首先判断管控类型,如果是单件管控,已输入SN为条件进行录入;
                    //如果是批管控或不管控则以【原箱号】和【数量】为录入条件。
                    StorageDetail[] storageDetails = _WarehouseFacade.GetStorageDetailsFromCARTONNO(fromCartonNo);
                    if (storageDetails == null)
                    {
                        DataProvider.RollbackTransaction();
                        return("原箱号无库存信息");
                    }

                    Material mar = _WarehouseFacade.GetMaterialFromDQMCode(storageDetails[0].DQMCode);
                    if (mar == null)
                    {
                        DataProvider.RollbackTransaction();
                        return("原箱号物料信息不存在");
                    }
                    bool issn = false || mar.MCONTROLTYPE == SAP_CONTROLTYPE.SAP_ITEM_CONTROL_KEYPARTS;

                    if (mar.MCONTROLTYPE == SAP_CONTROLTYPE.SAP_ITEM_CONTROL_KEYPARTS) //单件管控
                    {
                        #region 单件管控

                        if (string.IsNullOrEmpty(sn))
                        {
                            DataProvider.RollbackTransaction();
                            return("必须输入SN号码");
                        }
                        if (!string.IsNullOrEmpty(qty))
                        {
                            DataProvider.RollbackTransaction();
                            return("单件管控料不需要输入数量");
                        }
                        //A 根据SN在TBLStorageDetail查看是否TBLStorageDetail.FreezeQTY= TBLStorageDetail. STORAGEQTY?如果等于,提示:此箱在拣料中;如果不等于0,检查TBLStorageDetailSN. PICKBLOCK是否是Y,如果是提示:此SN正在拣料中。
                        StorageDetailSN storageDetailSN = _InventoryFacade.GetStorageDetailSN(sn) as StorageDetailSN;
                        if (storageDetailSN == null)
                        {
                            DataProvider.RollbackTransaction();
                            return("刷入SN条码不存在");
                        }
                        StorageDetail _storageDetail = _InventoryFacade.GetStorageDetail(storageDetailSN.CartonNo) as StorageDetail;
                        if (_storageDetail == null)
                        {
                            DataProvider.RollbackTransaction();
                            return("输入的SN找不到库存信息");
                        }
                        if (_storageDetail.FreezeQty == _storageDetail.StorageQty)
                        {
                            DataProvider.RollbackTransaction();
                            return("此箱在拣料中");
                        }
                        else
                        {
                            if (storageDetailSN.PickBlock == "Y")
                            {
                                DataProvider.RollbackTransaction();
                                return("此SN正在拣料中");
                            }
                        }

                        //B 根据SN在TBLStorageDetail中查找mcode信息,再根据(mcode+TransNo)信息在TBLStorLocTransDetail中是否有数据,如果没有则报错:转储单中没有对应的SAP物料号。
                        StorloctransDetail _storloctransDetail = _WarehouseFacade.GetStorloctransdetail(transNo,
                                                                                                        _storageDetail.MCode) as StorloctransDetail;
                        if (_storloctransDetail == null)
                        {
                            DataProvider.RollbackTransaction();
                            return("转储单中没有对应的SAP物料号");
                        }
                        //C 更新TBLStorageDetail. FreezeQTY= TBLStorageDetail. FreezeQTY+1,TBLStorageDetail. AvailableQTY= TBLStorageDetail.STORAGEQTY-TBLStorageDetail. FreezeQTY。
                        _storageDetail.FreezeQty   += 1;
                        _storageDetail.AvailableQty = _storageDetail.StorageQty - _storageDetail.FreezeQty;
                        _storageDetail.MaintainUser = mUser;
                        _storageDetail.MaintainDate = mDate;
                        _storageDetail.MaintainTime = mTime;
                        _InventoryFacade.UpdateStorageDetail(_storageDetail);

                        //D 更新TBLStorageDetailSN. PICKBLOCK=Y。
                        storageDetailSN.PickBlock    = "Y";
                        storageDetailSN.MaintainUser = mUser;
                        storageDetailSN.MaintainDate = mDate;
                        storageDetailSN.MaintainTime = mTime;
                        _InventoryFacade.UpdateStorageDetailSN(storageDetailSN);


                        //E  需要输入目标箱号,根据SN信息在TBLStorageDetailSN中查找原箱号信息;
                        //根据(目标箱号+TransNo+FromCARTONNO原箱号)在TBLStorLocTransDetailCarton是否有记录。
                        #region objStorLocTransDetailCarton
                        StorloctransDetailCarton storloctransDetailCarton = _WarehouseFacade.GetStorLocTransDetailCarton(transNo, storageDetailSN.CartonNo);

                        if (storloctransDetailCarton == null)
                        {
                            storloctransDetailCarton                    = new StorloctransDetailCarton();
                            storloctransDetailCarton.Transno            = transNo;
                            storloctransDetailCarton.MCode              = _storloctransDetail.MCode;
                            storloctransDetailCarton.DqmCode            = _storageDetail.DQMCode;
                            storloctransDetailCarton.MDesc              = _storageDetail.MDesc;
                            storloctransDetailCarton.Unit               = _storageDetail.Unit;
                            storloctransDetailCarton.Supplier_lotno     = _storageDetail.SupplierLotNo;
                            storloctransDetailCarton.Production_Date    = _storageDetail.ProductionDate;
                            storloctransDetailCarton.StorageageDate     = _storageDetail.StorageAgeDate;
                            storloctransDetailCarton.LaststorageageDate = _storageDetail.LastStorageAgeDate;
                            storloctransDetailCarton.ValidStartDate     = _storageDetail.ValidStartDate;
                            storloctransDetailCarton.FacCode            = _storageDetail.FacCode;
                            storloctransDetailCarton.Qty                = 1;
                            storloctransDetailCarton.LocationCode       = locationCode;
                            storloctransDetailCarton.Cartonno           = " ";
                            storloctransDetailCarton.FromlocationCode   = _storageDetail.LocationCode;
                            storloctransDetailCarton.Fromcartonno       = _storageDetail.CartonNo;
                            storloctransDetailCarton.Lotno              = _storageDetail.Lotno;
                            storloctransDetailCarton.CUser              = mUser;
                            storloctransDetailCarton.CDate              = mDate;
                            storloctransDetailCarton.CTime              = mTime;
                            storloctransDetailCarton.MaintainUser       = mUser;
                            storloctransDetailCarton.MaintainDate       = mDate;
                            storloctransDetailCarton.MaintainTime       = mTime;
                            _WarehouseFacade.AddStorloctransdetailcarton(storloctransDetailCarton);
                        }
                        else
                        {
                            //如果有记录,检查记录中的料号是否有与原箱的料号一致,如果不一致则提示:(目标箱号物料不一致)
                            object objStorageDetail = _InventoryFacade.GetStorageDetail(fromCartonNo);
                            if (!storloctransDetailCarton.MCode.Equals((objStorageDetail as StorageDetail).MCode))
                            {
                                DataProvider.RollbackTransaction();
                                return("目标箱号物料不一致");
                            }

                            //如果有: 更新TBLStorLocTransDetailCarton.QTY+1,MDate,MTime,MUser。
                            storloctransDetailCarton.Qty         += 1;
                            storloctransDetailCarton.MaintainUser = mUser;
                            storloctransDetailCarton.MaintainDate = mDate;
                            storloctransDetailCarton.MaintainTime = mTime;
                            _WarehouseFacade.UpdateStorloctransdetailcarton(storloctransDetailCarton);
                        }
                        #endregion

                        //F  向表TBLStorLocTransDetailSN插入一条数据。
                        StorloctransDetailSN storloctransDetailSN = new StorloctransDetailSN();
                        storloctransDetailSN.Transno      = transNo;
                        storloctransDetailSN.Cartonno     = " ";
                        storloctransDetailSN.Fromcartonno = fromCartonNo;
                        storloctransDetailSN.Sn           = storageDetailSN.SN;
                        storloctransDetailSN.MaintainUser = mUser;
                        storloctransDetailSN.MaintainDate = mDate;
                        storloctransDetailSN.MaintainTime = mTime;
                        _WarehouseFacade.AddStorloctransdetailsn(storloctransDetailSN);

                        #endregion
                    }
                    else
                    {
                        #region 非单件管控
                        if (string.IsNullOrEmpty(qty))
                        {
                            DataProvider.RollbackTransaction();
                            return("必须输入数量");
                        }
                        #region 判断数量是否是数字格式
                        try
                        {
                            decimal _qty = decimal.Parse(qty);
                            if (_qty <= 0)
                            {
                                DataProvider.RollbackTransaction();
                                return("数量必须为大于零的数字");
                            }
                        }
                        catch (Exception ex)
                        {
                            DataProvider.RollbackTransaction();
                            return("数量必须为大于零的数字");
                        }
                        #endregion

                        //B 检查TBLStorageDetail. AvailableQTY>PDA页面填的数量。如果否,提示:输入的数量大于库存可用数量。
                        StorageDetail _storageDetail = storageDetails[0] as StorageDetail;
                        if (_storageDetail.AvailableQty < decimal.Parse(qty))
                        {
                            DataProvider.RollbackTransaction();
                            return("输入的数量大于库存可用数量");
                        }

                        //C 更新TBLStorageDetail. FreezeQTY= TBLStorageDetail. FreezeQTY+ PDA页面填的数量,
                        //TBLStorageDetail. AvailableQTY= TBLStorageDetail.STORAGEQTY-TBLStorageDetail. FreezeQTY。
                        _storageDetail.FreezeQty   += int.Parse(qty);
                        _storageDetail.AvailableQty = _storageDetail.StorageQty - _storageDetail.FreezeQty;
                        _storageDetail.MaintainUser = mUser;
                        _storageDetail.MaintainDate = mDate;
                        _storageDetail.MaintainTime = mTime;
                        _InventoryFacade.UpdateStorageDetail(_storageDetail);


                        #region D需要输入目标箱号,根据(目标箱号+TransNo+FromCARTONNO原箱号)在TBLStorLocTransDetailCarton是否有记录。
                        StorloctransDetailCarton objStorLocTransDetailCarton = _WarehouseFacade.GetStorLocTransDetailCarton(transNo, _storageDetail.CartonNo);
                        if (objStorLocTransDetailCarton == null)
                        {
                            //    //如果没有:插入一条数据
                            //    if (!_WarehouseFacade.IsExistLocationCode(locationCode))
                            //    {
                            //        DataProvider.RollbackTransaction();
                            //       return"输入的目标货位不存在" ;
                            //    }
                            StorloctransDetailCarton storloctransDetailCarton = new StorloctransDetailCarton();
                            storloctransDetailCarton.Transno            = transNo;
                            storloctransDetailCarton.MCode              = storloctransDetail.MCode;
                            storloctransDetailCarton.DqmCode            = _storageDetail.DQMCode;
                            storloctransDetailCarton.MDesc              = _storageDetail.MDesc;
                            storloctransDetailCarton.Unit               = _storageDetail.Unit;
                            storloctransDetailCarton.Supplier_lotno     = _storageDetail.SupplierLotNo;
                            storloctransDetailCarton.Production_Date    = _storageDetail.ProductionDate;
                            storloctransDetailCarton.StorageageDate     = _storageDetail.StorageAgeDate;
                            storloctransDetailCarton.LaststorageageDate = _storageDetail.LastStorageAgeDate;
                            storloctransDetailCarton.ValidStartDate     = _storageDetail.ValidStartDate;
                            storloctransDetailCarton.FacCode            = _storageDetail.FacCode;
                            storloctransDetailCarton.Qty              = decimal.Parse(qty);
                            storloctransDetailCarton.LocationCode     = locationCode;
                            storloctransDetailCarton.Cartonno         = " ";
                            storloctransDetailCarton.FromlocationCode = _storageDetail.LocationCode;
                            storloctransDetailCarton.Fromcartonno     = _storageDetail.CartonNo;
                            storloctransDetailCarton.Lotno            = _storageDetail.Lotno;
                            storloctransDetailCarton.CUser            = mUser;
                            storloctransDetailCarton.CDate            = mDate;
                            storloctransDetailCarton.CTime            = mTime;
                            storloctransDetailCarton.MaintainUser     = mUser;
                            storloctransDetailCarton.MaintainDate     = mDate;
                            storloctransDetailCarton.MaintainTime     = mTime;
                            _WarehouseFacade.AddStorloctransdetailcarton(storloctransDetailCarton);
                        }
                        else
                        {
                            //如果有记录,检查记录中的料号是否有与原箱的料号一致,如果不一致则提示:(目标箱号物料不一致)
                            StorloctransDetailCarton storloctransDetailCarton = objStorLocTransDetailCarton as StorloctransDetailCarton;
                            object _objStorageDetail = _InventoryFacade.GetStorageDetail(fromCartonNo);
                            if (!storloctransDetailCarton.MCode.Equals((_objStorageDetail as StorageDetail).MCode))
                            {
                                DataProvider.RollbackTransaction();
                                return("目标箱号物料不一致");
                            }

                            //如果有: 更新TBLStorLocTransDetailCarton.QTY+ PDA页面填的数量,MDate,MTime,MUser。
                            storloctransDetailCarton.Qty         += decimal.Parse(qty);
                            storloctransDetailCarton.MaintainUser = mUser;
                            storloctransDetailCarton.MaintainDate = mDate;
                            storloctransDetailCarton.MaintainTime = mTime;
                            _WarehouseFacade.UpdateStorloctransdetailcarton(storloctransDetailCarton);
                        }
                        #endregion

                        #endregion
                    }

                    #endregion
                }

                ////三 判断条件TransNo,MCODE 下sum(TBLStorLocTransDetailCarton.QTY)是否等于需求数量TBLStorLocTransDetail.QTY。
                /////如果等于则更新装填TBLStorLocTransDetail.Status=Close:完成状态。
                //decimal sum = 0;
                //object[] _objs = _WarehouseFacade.GetStorloctransdetailcarton(transNo, storageDetail.MCode);
                //foreach (StorloctransDetailCarton storloctransDetailCarton in _objs)
                //{
                //    sum += storloctransDetailCarton.Qty;
                //}
                //if (sum == storloctransDetail.Qty)
                //{
                //    storloctransDetail.Status = "Close";
                //    storloctransDetail.MaintainUser = mUser;
                //    storloctransDetail.MaintainDate = mDate;
                //    storloctransDetail.MaintainTime = mTime;
                //    _WarehouseFacade.UpdateStorloctransdetail(storloctransDetail);
                //}
                //else if (sum > storloctransDetail.Qty)
                //{
                //    DataProvider.RollbackTransaction();
                //    return "拣料数量超出需求数量";
                //}

                DataProvider.CommitTransaction();
                return("提交成功");
            }
            catch (Exception ex)
            {
                DataProvider.RollbackTransaction();
                return("提交失败:" + ex.Message);
            }
        }
Esempio n. 14
0
        private void Print(FNPRINTHEADEntity head)
        {
            List <FNPRINTBODYEntity> bodys = GetBodys(head.LISTKEY);

            switch (head.LISTTYPE)
            {
            case ListType.ErrorMessage:
                ErrorMessageHead          emHead    = new ErrorMessageHead();
                List <ErrorMessageDetail> emDetails = new List <ErrorMessageDetail>();

                emHead.MessageType = head.RANGE1;
                emHead.TimeRange   = head.RANGE2;

                foreach (FNPRINTBODYEntity body in bodys)
                {
                    ErrorMessageDetail emDetail = new ErrorMessageDetail();

                    emDetail.Time        = body.RANGE1;
                    emDetail.MessageType = body.RANGE2;
                    emDetail.ErroMessage = body.RANGE3;

                    emDetails.Add(emDetail);
                }

                pc.DoPrint(head.PRINTER_NAME, emHead, emDetails);
                break;

            case ListType.InOutRelust:
                InOutResultHead          iorHead    = new InOutResultHead();
                List <InOutResultDetail> iorDetails = new List <InOutResultDetail>();

                iorHead.WorkType  = head.RANGE1;
                iorHead.ItemRange = head.RANGE2;
                iorHead.TimeRange = head.RANGE3;
                iorHead.UserId    = head.RANGE4;

                foreach (FNPRINTBODYEntity body in bodys)
                {
                    InOutResultDetail iorDetail = new InOutResultDetail();

                    iorDetail.ResultDate          = body.RANGE1;
                    iorDetail.WorkTypeStationNo   = body.RANGE2.Replace("\\r\\n", "\r\n");
                    iorDetail.ItemCode            = body.RANGE3;
                    iorDetail.ItemName            = body.RANGE4.Replace("\\r\\n", "\r\n");
                    iorDetail.ColorCode           = body.RANGE5;
                    iorDetail.TicketNoRetrievalNo = body.RANGE6.Replace("\\r\\n", "\r\n");
                    iorDetail.LocationNoBucketNo  = body.RANGE7.Replace("\\r\\n", "\r\n");
                    iorDetail.Qty            = body.RANGE8;
                    iorDetail.UserIdUserName = body.RANGE9.Replace("\\r\\n", "\r\n");

                    iorDetails.Add(iorDetail);
                }

                pc.DoPrint(head.PRINTER_NAME, iorHead, iorDetails);
                break;

            case ListType.LocationStorage:
                LocationStorageHead          lsHead    = new LocationStorageHead();
                List <LocationStorageDetail> lsDetails = new List <LocationStorageDetail>();

                lsHead.Depo             = head.RANGE1;
                lsHead.LocationStatus   = head.RANGE2;
                lsHead.LocationNo       = head.RANGE3;
                lsHead.WeightReportFlag = head.RANGE4;

                foreach (FNPRINTBODYEntity body in bodys)
                {
                    LocationStorageDetail lsDetail = new LocationStorageDetail();

                    lsDetail.LocationNo       = body.RANGE1;
                    lsDetail.ItemCode         = body.RANGE2;
                    lsDetail.ItemName         = body.RANGE3.Replace("\\r\\n", "\r\n");
                    lsDetail.ColorCode        = body.RANGE4;
                    lsDetail.TicketNo         = body.RANGE5;
                    lsDetail.Bucket           = body.RANGE6;
                    lsDetail.StorageCount     = body.RANGE7;
                    lsDetail.StockinDate      = body.RANGE8;
                    lsDetail.WeightReportFlag = body.RANGE9;

                    lsDetails.Add(lsDetail);
                }

                pc.DoPrint(head.PRINTER_NAME, lsHead, lsDetails);
                break;

            case ListType.Message:
                MessageHead          mHead    = new MessageHead();
                List <MessageDetail> mDetails = new List <MessageDetail>();

                mHead.MessageType = head.RANGE1;
                mHead.TimeRange   = head.RANGE2;

                foreach (FNPRINTBODYEntity body in bodys)
                {
                    MessageDetail mDetail = new MessageDetail();

                    mDetail.Time        = body.RANGE1;
                    mDetail.MessageType = body.RANGE2;
                    mDetail.Message     = body.RANGE3;

                    mDetails.Add(mDetail);
                }

                pc.DoPrint(head.PRINTER_NAME, mHead, mDetails);
                break;

            case ListType.OvertimeStorage:
                OvertimeStorageHead          osHead    = new OvertimeStorageHead();
                List <OvertimeStorageDetail> osDetails = new List <OvertimeStorageDetail>();

                osHead.WarehouseType = head.RANGE1;
                osHead.OvertimeDate  = head.RANGE2;
                osHead.OvertimeKey   = head.RANGE3;
                osHead.OrderKey      = head.RANGE4;

                foreach (FNPRINTBODYEntity body in bodys)
                {
                    OvertimeStorageDetail osDetail = new OvertimeStorageDetail();

                    osDetail.Date         = body.RANGE1;
                    osDetail.ItemCode     = body.RANGE2;
                    osDetail.ItemName     = body.RANGE3.Replace("\\r\\n", "\r\n");
                    osDetail.ColorCode    = body.RANGE4;
                    osDetail.TicketNo     = body.RANGE5;
                    osDetail.Bucket       = body.RANGE6;
                    osDetail.LocationNo   = body.RANGE7;
                    osDetail.StorageCount = body.RANGE8;

                    osDetails.Add(osDetail);
                }

                pc.DoPrint(head.PRINTER_NAME, osHead, osDetails);
                break;

            case ListType.StockoutCancel:
                List <StockoutCancel> scs = new List <StockoutCancel>();

                foreach (FNPRINTBODYEntity body in bodys)
                {
                    StockoutCancel sc = new StockoutCancel();

                    sc.RetrievalNo    = body.RANGE1;
                    sc.ItemCode       = body.RANGE2;
                    sc.RetrievalCount = body.RANGE3;
                    sc.CancelCount    = body.RANGE4;
                    sc.StartDate      = body.RANGE5;
                    sc.CompleteDate   = body.RANGE6;
                    sc.CustomerCode   = body.RANGE7;

                    scs.Add(sc);
                }

                pc.DoPrint(head.PRINTER_NAME, null, scs);
                break;

            case ListType.Storage:
                StorageHead          sHead    = new StorageHead();
                List <StorageDetail> sDetails = new List <StorageDetail>();

                sHead.ItemCode  = head.RANGE1;
                sHead.ColorCode = head.RANGE2;

                foreach (FNPRINTBODYEntity body in bodys)
                {
                    StorageDetail sDetail = new StorageDetail();

                    sDetail.ItemCode               = body.RANGE1;
                    sDetail.ItemName               = body.RANGE2.Replace("\\r\\n", "\r\n");
                    sDetail.ColorCode              = body.RANGE3;
                    sDetail.AutoStorageCount       = body.RANGE4;
                    sDetail.FlatStorageCount       = body.RANGE5;
                    sDetail.TotalStorageCount      = body.RANGE6;
                    sDetail.NotStockinStorageCount = body.RANGE7;

                    sDetails.Add(sDetail);
                }

                pc.DoPrint(head.PRINTER_NAME, sHead, sDetails);
                break;

            case ListType.TicketNoAndStorage:
                TicketNoAndStorageHead          tsHead    = new TicketNoAndStorageHead();
                List <TicketNoAndStorageDetail> tsDetails = new List <TicketNoAndStorageDetail>();

                tsHead.Depo              = head.RANGE1;
                tsHead.SearchClass       = head.RANGE2;
                tsHead.SearchRange       = head.RANGE3;
                tsHead.ItemCodeColorCode = head.RANGE4;
                tsHead.BucketNo          = head.RANGE5;

                foreach (FNPRINTBODYEntity body in bodys)
                {
                    TicketNoAndStorageDetail tsDetail = new TicketNoAndStorageDetail();

                    tsDetail.TicketNo           = body.RANGE1;
                    tsDetail.ItemCode           = body.RANGE2;
                    tsDetail.ItemName           = body.RANGE3.Replace("\\r\\n", "\r\n");
                    tsDetail.ColorCode          = body.RANGE4;
                    tsDetail.LocationNo         = body.RANGE5;
                    tsDetail.Bucket             = body.RANGE6;
                    tsDetail.StorageCount       = body.RANGE7;
                    tsDetail.ReceiveMessageDate = body.RANGE8;

                    tsDetails.Add(tsDetail);
                }

                pc.DoPrint(head.PRINTER_NAME, tsHead, tsDetails);
                break;

            case ListType.WorkView:
                WorkViewHead          wvHead    = new WorkViewHead();
                List <WorkViewDetail> wvDetails = new List <WorkViewDetail>();

                wvHead.WorkType    = head.RANGE1;
                wvHead.StationNo   = head.RANGE2;
                wvHead.StationType = head.RANGE3;

                foreach (FNPRINTBODYEntity body in bodys)
                {
                    WorkViewDetail wvDetail = new WorkViewDetail();

                    wvDetail.WorkType   = body.RANGE1;
                    wvDetail.WorkStatus = body.RANGE2;
                    wvDetail.McKey      = body.RANGE3;
                    wvDetail.StationNo  = body.RANGE4;
                    wvDetail.Path       = body.RANGE5;
                    wvDetail.LocationNo = body.RANGE6;
                    wvDetail.Bucket     = body.RANGE7;
                    wvDetail.ItemCode   = body.RANGE8;
                    wvDetail.ItemName   = body.RANGE9.Replace("\\r\\n", "\r\n");
                    wvDetail.ColorCode  = body.RANGE10;
                    wvDetail.Qty        = body.RANGE11;

                    wvDetails.Add(wvDetail);
                }

                pc.DoPrint(head.PRINTER_NAME, wvHead, wvDetails);
                break;

            case ListType.RetrievalOrder:
                RetrievalOrderHead          roHead    = new RetrievalOrderHead();
                List <RetrievalOrderDetail> roDetails = new List <RetrievalOrderDetail>();

                roHead.BucketNo = head.RANGE1;
                roHead.UserId   = head.RANGE2;

                foreach (FNPRINTBODYEntity body in bodys)
                {
                    RetrievalOrderDetail roDetail = new RetrievalOrderDetail();

                    roDetail.SectionAndLine = body.RANGE1;
                    roDetail.StartDate      = body.RANGE2;
                    roDetail.ItemNo         = body.RANGE3;
                    roDetail.ItemName       = body.RANGE4;
                    roDetail.ColorCode      = body.RANGE5;
                    roDetail.QtyPcs         = body.RANGE6;
                    roDetail.QtyKg          = body.RANGE7;
                    roDetail.BucketNo       = body.RANGE8;
                    roDetail.RetrievalNo    = body.RANGE9;
                    roDetail.RetrievalTime  = body.RANGE10;

                    roDetails.Add(roDetail);
                }

                pc.DoPrint(head.PRINTER_NAME, roHead, roDetails);
                break;

            default:
                break;
            }
        }
Esempio n. 15
0
        public string Add(string userCode, string newIqcNo, string fromCarton)
        {
            #region check
            if (_WarehouseFacade == null)
            {
                _WarehouseFacade = new WarehouseFacade(DataProvider);
            }
            InventoryFacade facade     = new InventoryFacade(this.DataProvider);
            ItemFacade      itemFacade = new ItemFacade(DataProvider);
            DBDateTime      dbTime     = FormatHelper.GetNowDBDateTime(DataProvider);
            string          msg        = "";

            StorageDetail storageCarton = (StorageDetail)facade.GetStorageDetail(fromCarton);
            if (storageCarton == null)
            {  //A 根据原箱号和数量操作。根据原箱号(cartonno)到TBLStorageDetail中查找数据。没有报错。
                msg = "转储单中没有对应的SAP物料号";
                return(msg);
            }
            string dqmCode = storageCarton.DQMCode;
            if (string.IsNullOrEmpty(dqmCode))
            {
                msg = "鼎桥物料编码不能为空";
                return(msg);
            }
            BenQGuru.eMES.Domain.MOModel.Material material = (BenQGuru.eMES.Domain.MOModel.Material)itemFacade.GetMaterialByDQMCode(dqmCode);
            if (material == null)
            {
                msg = "鼎桥物料编码不存在";
                return(msg);
            }
            if (string.IsNullOrEmpty(newIqcNo))
            {
                msg = "移转单号不能为空";
                return(msg);
            }

            #endregion
            #region try
            try
            {
                this.DataProvider.BeginTransaction();
                Storloctrans oldStorloctrans = (Storloctrans)_WarehouseFacade.GetStorloctrans(newIqcNo);
                if (oldStorloctrans == null)
                {
                    #region 货位移动单信息TBLStorLocTrans表增加一笔数据
                    Storloctrans storloctrans = new Storloctrans();
                    storloctrans.Transno      = newIqcNo;
                    storloctrans.TransType    = TransType.TransType_Move;//类型(Transfer:转储;Move:货位移动)
                    storloctrans.Status       = Pick_STATUS.Status_Release;
                    storloctrans.Invno        = " ";
                    storloctrans.StorageCode  = "";
                    storloctrans.CDate        = dbTime.DBDate;
                    storloctrans.CTime        = dbTime.DBTime;
                    storloctrans.CUser        = userCode;// this.GetUserCode();
                    storloctrans.MaintainDate = dbTime.DBDate;
                    storloctrans.MaintainTime = dbTime.DBTime;
                    storloctrans.MaintainUser = userCode;// this.GetUserCode();
                    _WarehouseFacade.AddStorloctrans(storloctrans);
                    #endregion
                }
                StorloctransDetail oldstorloctransDetail = (StorloctransDetail)_WarehouseFacade.GetStorloctransdetail(newIqcNo, material.MCode);
                if (oldstorloctransDetail == null)
                {
                    //检查移转单下表TBLStorLocTransDetail是否存在,如果存在提示已经包含物料信息。
                    //    this.DataProvider.RollbackTransaction();
                    //   msg= "移转单号已经包含物料信息" ;
                    //   return msg;
                    //}
                    //else
                    //{
                    #region 货位移动单信息StorloctransDetail表增加一笔数据
                    StorloctransDetail storloctransDetail = new StorloctransDetail();
                    storloctransDetail.Transno      = newIqcNo;
                    storloctransDetail.Status       = Pick_STATUS.Status_Release;
                    storloctransDetail.DqmCode      = dqmCode;
                    storloctransDetail.MCode        = material.MCode;
                    storloctransDetail.MDesc        = material.MenlongDesc;
                    storloctransDetail.CustmCode    = ""; //
                    storloctransDetail.Unit         = ""; //
                    storloctransDetail.Qty          = 0;
                    storloctransDetail.CDate        = dbTime.DBDate;
                    storloctransDetail.CTime        = dbTime.DBTime;
                    storloctransDetail.CUser        = userCode;// this.GetUserCode();
                    storloctransDetail.MaintainDate = dbTime.DBDate;
                    storloctransDetail.MaintainTime = dbTime.DBTime;
                    storloctransDetail.MaintainUser = userCode;// this.GetUserCode();
                    _WarehouseFacade.AddStorloctransdetail(storloctransDetail);
                    #endregion
                }



                //货位移动单据号
                //string date = dbTime.DBDate.ToString().Substring(2, 6);
                //string documentno = CreateAutoDocmentsNo();
                //SaveDocmentsNo(documentno, userCode);


                this.DataProvider.CommitTransaction();
                msg = "新增成功";
                return(msg);
            }
            catch (Exception ex)
            {
                this.DataProvider.RollbackTransaction();
                msg = ex.Message;
                return(msg);
                //WebInfoPublish.PublishInfo(this, ex.Message, this.languageComponent1);
            }
            #endregion
        }
        protected override void DeleteDomainObjects(ArrayList domainObjects)
        {
            WarehouseFacade _WarehouseFacade = new WarehouseFacade(base.DataProvider);


            InventoryFacade _InventoryFacade = new InventoryFacade(this.DataProvider);


            object       objStorloctrans = _WarehouseFacade.GetStorloctrans(txtTransNoQuery.Text);
            Storloctrans storloctrans    = objStorloctrans as Storloctrans;

            if (storloctrans == null)
            {
                WebInfoPublish.Publish(this, txtTransNoQuery.Text + "转储单不存在!", this.languageComponent1);
                return;
            }

            if (storloctrans.Status == "Close")
            {
                WebInfoPublish.Publish(this, "转储单已关闭不能删除!", this.languageComponent1);
                return;
            }
            ArrayList array = this.gridHelper.GetCheckedRows();

            DBDateTime dbDateTime = FormatHelper.GetNowDBDateTime(DataProvider);
            int        mDate      = dbDateTime.DBDate;
            int        mTime      = dbDateTime.DBTime;

            foreach (GridRecord row in array)
            {
                string transno      = storloctrans.Transno;
                string fromCartonno = row.Items.FindItemByKey("FCartonNo").Text;
                string cartonno     = row.Items.FindItemByKey("TCartonNo").Text;
                StorloctransDetailCarton storCartonno = (StorloctransDetailCarton)_WarehouseFacade.GetStorloctransdetailcarton(transno, fromCartonno, cartonno);

                if (storCartonno != null)
                {
                    _WarehouseFacade.DeleteStorloctransdetailcarton(storCartonno);

                    StorageDetail stor = (StorageDetail)_WarehouseFacade.GetStorageDetail(fromCartonno);
                    if (stor != null)
                    {
                        stor.FreezeQty    = stor.FreezeQty - (int)storCartonno.Qty;
                        stor.AvailableQty = stor.AvailableQty + (int)storCartonno.Qty;
                        _WarehouseFacade.UpdateStorageDetail(stor);
                    }

                    object[] objs = _WarehouseFacade.GetStorageDetailSnbyCartonNoBlock(fromCartonno);
                    if (objs != null && objs.Length > 0)
                    {
                        foreach (StorageDetailSN storageDetailSN in objs)
                        {
                            storageDetailSN.PickBlock    = "N";
                            storageDetailSN.MaintainUser = GetUserCode();
                            storageDetailSN.MaintainDate = mDate;
                            storageDetailSN.MaintainTime = mTime;
                            _InventoryFacade.UpdateStorageDetailSN(storageDetailSN);
                        }
                    }

                    StorloctransDetailSN[] storSns = _WarehouseFacade.GetStorloctransDetailSNs(transno, fromCartonno);
                    foreach (StorloctransDetailSN sn in storSns)
                    {
                        _WarehouseFacade.DeleteStorloctransdetailsn(sn);
                    }

                    if (storCartonno.Qty != 0)
                    {
                        StorloctransDetail cartonnoDetail = (StorloctransDetail)_WarehouseFacade.GetStorloctransdetail(transno, storCartonno.MCode);
                        if (cartonnoDetail != null)
                        {
                            cartonnoDetail.Status       = "Pick";
                            cartonnoDetail.MaintainUser = GetUserCode();
                            cartonnoDetail.MaintainDate = mDate;
                            cartonnoDetail.MaintainTime = mTime;
                            _WarehouseFacade.UpdateStorloctransdetail(cartonnoDetail);
                        }
                    }
                }
            }
        }
Esempio n. 17
0
        public string Commit_Click(string userCode, string statusList, string transNo, string tLocationCode, string fromCarton, string tcarton, string inputsn, string inputqty)
        {
            string msg;

            #region facade

            InventoryFacade facade = new InventoryFacade(this.DataProvider);
            if (_WarehouseFacade == null)
            {
                _WarehouseFacade = new WarehouseFacade(this.DataProvider);
            }
            ItemFacade itemFacade = new ItemFacade();
            DBDateTime dbDateTime = FormatHelper.GetNowDBDateTime(this.DataProvider);
            #endregion

            #region check
            if (string.IsNullOrEmpty(transNo))
            {
                msg = "移转单号不能为空";
                return(msg);
            }
            StorageDetail storageCarton = (StorageDetail)facade.GetStorageDetail(fromCarton);
            if (storageCarton == null)
            {  //A 根据原箱号和数量操作。根据原箱号(cartonno)到TBLStorageDetail中查找数据。没有报错。
                msg = "转储单中没有对应的原箱号";
                return(msg);
            }

            if (string.IsNullOrEmpty(tLocationCode))
            {
                msg = "目标货位不能为空";
                return(msg);
            }
            if (string.IsNullOrEmpty(tcarton))
            {
                msg = "目标箱号不能为空";
                return(msg);
            }

            Storloctrans storloctrans = (Storloctrans)_WarehouseFacade.GetStorloctrans(transNo);
            if (storloctrans == null)
            {
                msg = "移转单号不存在";
                return(msg);
            }
            #endregion
            string msgsn = "";


            StorageDetail fromStorageDetail = (StorageDetail)_WarehouseFacade.GetStorageDetail(fromCarton);
            StorageDetail toStorageDetail   = (StorageDetail)_WarehouseFacade.GetStorageDetail(tcarton);
            if (fromStorageDetail == null)
            {
                return("原箱号在库存中不存在!");
            }
            StorloctransDetail storloctransdetailObj = (StorloctransDetail)_WarehouseFacade.GetStorloctransdetail(transNo, fromStorageDetail.MCode);
            if (storloctransdetailObj == null)
            {
                return("转储单中没有对应的物料号");
            }

            Location tLocation = (Location)facade.GetLocation(tLocationCode, 1);
            if (fromStorageDetail.StorageCode != tLocation.StorageCode)
            {
                return("原货位的库位必须与目标货位的库位一致!");
            }
            if (toStorageDetail != null && toStorageDetail.StorageCode != fromStorageDetail.StorageCode)
            {
                return("目标箱号的库位必须原箱号的库位一样!");
            }

            if (tcarton != fromCarton && toStorageDetail != null && toStorageDetail.LocationCode != tLocation.LocationCode)
            {
                return("目标箱号的货位必须与填写的目标货位一致!");
            }

            if (toStorageDetail != null && toStorageDetail.DQMCode != fromStorageDetail.DQMCode)
            {
                return("目标箱号的物料必须与原箱号的物料一致!");
            }
            if ((statusList == CartonType.CartonType_SplitCarton) && (tcarton == fromCarton))
            {
                return("拆箱必须原箱号和目标箱号不同!");
            }
            try
            {
                this.DataProvider.BeginTransaction();


                InvInOutTrans trans = _WarehouseFacade.CreateNewInvInOutTrans();
                trans.CartonNO        = tcarton;
                trans.DqMCode         = fromStorageDetail.DQMCode;
                trans.FacCode         = fromStorageDetail.FacCode;
                trans.FromFacCode     = fromStorageDetail.FacCode;
                trans.FromStorageCode = fromStorageDetail.StorageCode;
                trans.InvNO           = " ";
                trans.InvType         = " ";
                trans.LotNo           = " ";
                trans.MaintainDate    = dbDateTime.DBDate;
                trans.MaintainTime    = dbDateTime.DBTime;
                trans.MaintainUser    = userCode;
                trans.MCode           = fromStorageDetail.MCode;
                trans.ProductionDate  = fromStorageDetail.ProductionDate;
                trans.Qty             = fromStorageDetail.StorageQty;
                trans.Serial          = 0;
                trans.StorageAgeDate  = fromStorageDetail.StorageAgeDate;
                trans.StorageCode     = fromStorageDetail.StorageCode;
                trans.SupplierLotNo   = fromStorageDetail.SupplierLotNo;
                trans.TransNO         = transNo;
                trans.TransType       = "IN";
                trans.ProcessType     = "LocationTrans";
                trans.Unit            = fromStorageDetail.Unit;
                _WarehouseFacade.AddInvInOutTrans(trans);


                #region【整箱】:
                if (statusList == CartonType.CartonType_AllCarton)
                {
                    msgsn = "箱号:" + fromCarton;

                    if (fromStorageDetail.FreezeQty > 0)
                    {
                        return("此箱号以被占用不能移动");
                    }

                    if (_WarehouseFacade.GetStorageDetailSNPickBlockCount(fromCarton) > 0)
                    {
                        return("此箱号SN已被被占用不能移动");
                    }
                    if (_WarehouseFacade.GetStorloctransdetailcarton(transNo, fromCarton,
                                                                     tcarton) != null)
                    {
                        return(transNo + "此单下已存在" + fromCarton + "移动到" + tcarton + ",请另行创建单据!");
                    }


                    facade.DeleteStorageDetail(fromStorageDetail);
                    toStorageDetail = (StorageDetail)_WarehouseFacade.GetStorageDetail(tcarton);
                    if (toStorageDetail == null)
                    {
                        toStorageDetail = new StorageDetail();
                        toStorageDetail.AvailableQty       = 0;
                        toStorageDetail.CartonNo           = tcarton;
                        toStorageDetail.CDate              = FormatHelper.TODateInt(DateTime.Now);
                        toStorageDetail.CTime              = FormatHelper.TOTimeInt(DateTime.Now);
                        toStorageDetail.CUser              = userCode;
                        toStorageDetail.DQMCode            = fromStorageDetail.DQMCode;
                        toStorageDetail.FacCode            = fromStorageDetail.FacCode;
                        toStorageDetail.FreezeQty          = 0;
                        toStorageDetail.LastStorageAgeDate = fromStorageDetail.LastStorageAgeDate;
                        toStorageDetail.LocationCode       = tLocationCode;
                        toStorageDetail.Lotno              = fromStorageDetail.Lotno;
                        toStorageDetail.MaintainDate       = FormatHelper.TODateInt(DateTime.Now);
                        toStorageDetail.MaintainTime       = FormatHelper.TOTimeInt(DateTime.Now);
                        toStorageDetail.MaintainUser       = userCode;
                        toStorageDetail.MCode              = fromStorageDetail.MCode;
                        toStorageDetail.MDesc              = fromStorageDetail.MDesc;
                        toStorageDetail.ProductionDate     = fromStorageDetail.ProductionDate;
                        toStorageDetail.ReworkApplyUser    = fromStorageDetail.ReworkApplyUser;
                        toStorageDetail.StorageAgeDate     = fromStorageDetail.StorageAgeDate;
                        toStorageDetail.StorageCode        = fromStorageDetail.StorageCode;
                        toStorageDetail.StorageQty         = 0;
                        toStorageDetail.SupplierLotNo      = fromStorageDetail.SupplierLotNo;
                        toStorageDetail.Unit           = fromStorageDetail.Unit;
                        toStorageDetail.ValidStartDate = fromStorageDetail.ValidStartDate;
                        facade.AddStorageDetail(toStorageDetail);
                    }

                    toStorageDetail.StorageQty   += fromStorageDetail.StorageQty;
                    toStorageDetail.AvailableQty += fromStorageDetail.AvailableQty;



                    facade.UpdateStorageDetail(toStorageDetail);

                    StorloctransDetail storloctransDetail = (StorloctransDetail)_WarehouseFacade.GetStorloctransdetail(transNo, fromStorageDetail.MCode);
                    storloctransDetail.Qty += fromStorageDetail.AvailableQty;
                    _WarehouseFacade.UpdateStorloctransdetail(storloctransDetail);

                    #region 4,	向TBLStorLocTransDetailCarton插入一笔数据。
                    StorloctransDetailCarton newstorlocDetailCarton = new StorloctransDetailCarton();
                    newstorlocDetailCarton.Transno          = transNo;                 //storlocDetailCarton.Transno = StorLocTransDetail.TransNo;
                    newstorlocDetailCarton.MCode            = fromStorageDetail.MCode; //MCODE:TBLStorLocTransDetail.MCODE
                    newstorlocDetailCarton.DqmCode          = fromStorageDetail.DQMCode;
                    newstorlocDetailCarton.FacCode          = "10Y2";
                    newstorlocDetailCarton.Qty              = fromStorageDetail.StorageQty;   //QTY: TBLStorageDetail. storageQTY
                    newstorlocDetailCarton.LocationCode     = tLocationCode;                  //LocationCode: TBLLOCATION.LOCATIONCODE(根据PDA页面的目标货位找)
                    newstorlocDetailCarton.Cartonno         = tcarton;                        //CARTONNO:PDA页面的目标箱号 txtTLocationCartonEdit
                    newstorlocDetailCarton.FromlocationCode = fromStorageDetail.LocationCode; //FromLocationCode:TBLStorageDetail.LocationCode
                    newstorlocDetailCarton.Fromcartonno     = fromStorageDetail.CartonNo;     //FromCARTONNO:TBLStorageDetail. CARTONNO
                    newstorlocDetailCarton.Lotno            = fromStorageDetail.Lotno;        //LotNo:TBLStorageDetail. LotNo
                    newstorlocDetailCarton.CUser            = userCode;                       //	CUSER
                    newstorlocDetailCarton.CDate            = dbDateTime.DBDate;              //	CDATE
                    newstorlocDetailCarton.CTime            = dbDateTime.DBTime;              //	CTIME
                    newstorlocDetailCarton.MaintainDate     = dbDateTime.DBDate;              //	MDATE
                    newstorlocDetailCarton.MaintainTime     = dbDateTime.DBTime;              //	MTIME
                    newstorlocDetailCarton.MaintainUser     = userCode;
                    _WarehouseFacade.AddStorloctransdetailcarton(newstorlocDetailCarton);
                    #endregion
                    //5,	如果原箱号在TBLStorageDetailSN有SN信息,将SN信息插入到TBLStorLocTransDetailSN表
                    object[] storageDetailSnlist = facade.GetStorageDetailSnbyCarton(fromCarton);
                    if (storageDetailSnlist != null)
                    {
                        foreach (StorageDetailSN newStorageDetailSn in storageDetailSnlist)
                        {
                            #region add TBLStorageDetailSN
                            StorloctransDetailSN newStorloctransDetailSn = new StorloctransDetailSN();
                            newStorloctransDetailSn.Sn           = newStorageDetailSn.SN; //SN:TBLStorageDetailSN.SN
                            newStorloctransDetailSn.Transno      = transNo;               // TBLStorLocTransDetail. TransNo
                            newStorloctransDetailSn.Fromcartonno = fromCarton;            //FromCARTONNO:TBLStorageDetail.LocationCode
                            newStorloctransDetailSn.Cartonno     = tcarton;               //FormatHelper.CleanString(txtTLocationCodeEdit.Text);//CARTONNO:TBLLOCATION.LOCATIONCODE(根据PDA页面的目标货位找)
                            newStorloctransDetailSn.MaintainDate = dbDateTime.DBDate;     //	MDATE
                            newStorloctransDetailSn.MaintainTime = dbDateTime.DBTime;     //	MTIME
                            newStorloctransDetailSn.MaintainUser = userCode;
                            _WarehouseFacade.AddStorloctransdetailsn(newStorloctransDetailSn);

                            newStorageDetailSn.CartonNo     = tcarton;
                            newStorageDetailSn.MaintainDate = FormatHelper.TODateInt(DateTime.Now);
                            newStorageDetailSn.MaintainTime = FormatHelper.TOTimeInt(DateTime.Now);
                            newStorageDetailSn.MaintainUser = userCode;
                            facade.UpdateStorageDetailSN(newStorageDetailSn);
                            #endregion
                        }
                    }
                }
                #endregion

                #region【拆箱】:
                else if (statusList == CartonType.CartonType_SplitCarton)
                {
                    Domain.MOModel.Material material = (Domain.MOModel.Material)itemFacade.GetMaterial(storageCarton.MCode);
                    if (material != null)
                    {
                        //2单件管控IsInt
                        if (material.MCONTROLTYPE == BOMItemControlType.ITEM_CONTROL_KEYPARTS)
                        {
                            #region     单件管控:

                            msgsn = "SN:" + inputsn;
                            if (string.IsNullOrEmpty(inputsn))
                            {
                                msg = "此箱为单件管控,请输入SN。";
                                return(msg);
                            }


                            StorageDetailSN storageDetailSn = (StorageDetailSN)facade.GetStorageDetailSN(inputsn);

                            if (storageDetailSn == null)
                            {
                                return("此SN不存在!");
                            }
                            if (storageDetailSn.CartonNo != fromCarton)
                            {
                                return("原箱中不存在此SN!");
                            }



                            decimal storageQTY = fromStorageDetail.StorageQty - fromStorageDetail.FreezeQty;
                            if (storageQTY <= 0)
                            {
                                return("原箱号的库存数量不足:" + storageQTY);
                            }



                            if (toStorageDetail == null)
                            {
                                toStorageDetail = new StorageDetail();
                                toStorageDetail.AvailableQty       = 0;
                                toStorageDetail.CartonNo           = tcarton;
                                toStorageDetail.CDate              = FormatHelper.TODateInt(DateTime.Now);
                                toStorageDetail.CTime              = FormatHelper.TOTimeInt(DateTime.Now);
                                toStorageDetail.CUser              = userCode;
                                toStorageDetail.DQMCode            = fromStorageDetail.DQMCode;
                                toStorageDetail.FacCode            = fromStorageDetail.FacCode;
                                toStorageDetail.FreezeQty          = 0;
                                toStorageDetail.LastStorageAgeDate = fromStorageDetail.LastStorageAgeDate;
                                toStorageDetail.LocationCode       = tLocationCode;
                                toStorageDetail.Lotno              = fromStorageDetail.Lotno;
                                toStorageDetail.MaintainDate       = FormatHelper.TODateInt(DateTime.Now);
                                toStorageDetail.MaintainTime       = FormatHelper.TOTimeInt(DateTime.Now);
                                toStorageDetail.MaintainUser       = userCode;
                                toStorageDetail.MCode              = fromStorageDetail.MCode;
                                toStorageDetail.MDesc              = fromStorageDetail.MDesc;
                                toStorageDetail.ProductionDate     = fromStorageDetail.ProductionDate;
                                toStorageDetail.ReworkApplyUser    = fromStorageDetail.ReworkApplyUser;
                                toStorageDetail.StorageAgeDate     = fromStorageDetail.StorageAgeDate;
                                toStorageDetail.StorageCode        = fromStorageDetail.StorageCode;
                                toStorageDetail.StorageQty         = 0;
                                toStorageDetail.SupplierLotNo      = fromStorageDetail.SupplierLotNo;
                                toStorageDetail.Unit           = fromStorageDetail.Unit;
                                toStorageDetail.ValidStartDate = fromStorageDetail.ValidStartDate;
                                facade.AddStorageDetail(toStorageDetail);
                            }


                            #region add by sam 2016年4月27日
                            storageDetailSn.CartonNo = tcarton;
                            facade.UpdateStorageDetailSN(storageDetailSn);

                            fromStorageDetail.StorageQty   -= 1;
                            fromStorageDetail.AvailableQty -= 1;
                            facade.UpdateStorageDetail(fromStorageDetail);

                            toStorageDetail               = (StorageDetail)_WarehouseFacade.GetStorageDetail(tcarton);
                            toStorageDetail.StorageQty   += 1;
                            toStorageDetail.AvailableQty += 1;
                            facade.UpdateStorageDetail(toStorageDetail);
                            #endregion


                            StorloctransDetail storloctransDetail = (StorloctransDetail)_WarehouseFacade.GetStorloctransdetail(transNo, fromStorageDetail.MCode);
                            storloctransDetail.Qty += fromStorageDetail.AvailableQty;
                            _WarehouseFacade.UpdateStorloctransdetail(storloctransDetail);
                            StorloctransDetailCarton storloctransDetailCarton =
                                (StorloctransDetailCarton)
                                _WarehouseFacade.GetStorloctransdetailcarton(transNo, fromCarton,
                                                                             tcarton);
                            if (storloctransDetailCarton != null)
                            {// 如果有: 更新TBLStorLocTransDetailCarton.QTY+ PDA页面填的数量,MDate,MTime,MUser。
                                storloctransDetailCarton.Qty         += 1;
                                storloctransDetailCarton.MaintainDate = dbDateTime.DBDate;
                                storloctransDetailCarton.MaintainTime = dbDateTime.DBTime;
                                storloctransDetailCarton.MaintainUser = userCode;
                                _WarehouseFacade.UpdateStorloctransdetailcarton(storloctransDetailCarton);
                            }
                            else
                            {
                                #region 4,	向TBLStorLocTransDetailCarton插入一笔数据。


                                StorloctransDetailCarton newstorlocDetailCarton = new StorloctransDetailCarton();
                                newstorlocDetailCarton.Transno          = transNo;// storloctransdetailObj.Transno;   //storlocDetailCarton.Transno = StorLocTransDetail.TransNo;
                                newstorlocDetailCarton.DqmCode          = storloctransdetailObj.DqmCode;
                                newstorlocDetailCarton.FacCode          = "10Y2";
                                newstorlocDetailCarton.MCode            = storloctransdetailObj.MCode;    //MCODE:TBLStorLocTransDetail.MCODE
                                newstorlocDetailCarton.Qty              = 1;                              //   //QTY: 1
                                newstorlocDetailCarton.LocationCode     = tLocationCode;                  // FormatHelper.CleanString(txtTLocationCodeEdit.Text);//LocationCode: TBLLOCATION.LOCATIONCODE(根据PDA页面的目标货位找)
                                newstorlocDetailCarton.Cartonno         = tcarton;                        // FormatHelper.CleanString(txtTLocationCartonEdit.Text);//CARTONNO:PDA页面的目标箱号 txtTLocationCartonEdit
                                newstorlocDetailCarton.FromlocationCode = fromStorageDetail.LocationCode; //FromLocationCode:TBLStorageDetail.LocationCode
                                newstorlocDetailCarton.Fromcartonno     = fromCarton;                     // rageDetail.CartonNo; //FromCARTONNO:TBLStorageDetail. CARTONNO
                                newstorlocDetailCarton.Lotno            = fromStorageDetail.Lotno;        //LotNo:TBLStorageDetail. LotNo
                                newstorlocDetailCarton.CUser            = userCode;                       //	CUSER
                                newstorlocDetailCarton.CDate            = dbDateTime.DBDate;              //	CDATE
                                newstorlocDetailCarton.CTime            = dbDateTime.DBTime;              //	CTIME
                                newstorlocDetailCarton.MaintainDate     = dbDateTime.DBDate;              //	MDATE
                                newstorlocDetailCarton.MaintainTime     = dbDateTime.DBTime;              //	MTIME
                                newstorlocDetailCarton.MaintainUser     = userCode;
                                _WarehouseFacade.AddStorloctransdetailcarton(newstorlocDetailCarton);
                                #endregion

                                //说明:表中没有的字段来自TBLStorageDetail中对应字段
                                //F  向表TBLStorLocTransDetailSN插入一条数据。


                                StorloctransDetailSN newStorloctransDetailSn = new StorloctransDetailSN();
                                newStorloctransDetailSn.Sn           = inputsn;                       //SN:TBLStorageDetailSN.SN
                                newStorloctransDetailSn.Transno      = storloctransdetailObj.Transno; // TBLStorLocTransDetail. TransNo
                                newStorloctransDetailSn.Fromcartonno = fromCarton;                    //TBLStorageDetail.LocationCode
                                newStorloctransDetailSn.Cartonno     = tcarton;                       // FormatHelper.CleanString(txtTLocationCodeEdit.Text);//CARTONNO:TBLLOCATION.LOCATIONCODE(根据PDA页面的目标货位找)
                                newStorloctransDetailSn.MaintainDate = dbDateTime.DBDate;             //	MDATE
                                newStorloctransDetailSn.MaintainTime = dbDateTime.DBTime;             //	MTIME
                                newStorloctransDetailSn.MaintainUser = userCode;
                                _WarehouseFacade.AddStorloctransdetailsn(newStorloctransDetailSn);
                            }
                            #endregion
                        }
                        else
                        {
                            #region 和非单件管控


                            //B 检查TBLStorageDetail. AvailableQTY>PDA页面填的数量。如果否,提示:输入的数量大于库存可用数量。
                            #region Check 数量
                            int qty;
                            if (!string.IsNullOrEmpty(inputqty))
                            {
                                try
                                {
                                    qty = Int32.Parse(inputqty);
                                }
                                catch (Exception ex)
                                {
                                    msg = "数量只能输入大于0的数字";
                                    return(msg);
                                }
                                if (qty <= 0)
                                {
                                    msg = "数量只能输入大于0的数字";
                                    return(msg);
                                }
                            }
                            else
                            {
                                msg = "数量不能为空";
                                return(msg);
                            }
                            #endregion

                            decimal stroageQTY = fromStorageDetail.StorageQty - fromStorageDetail.FreezeQty;

                            if (stroageQTY < qty)
                            {
                                msg = "输入的数量大于库存可用数量";
                                return(msg);
                            }

                            fromStorageDetail.AvailableQty -= qty;
                            fromStorageDetail.StorageQty   -= qty;
                            facade.UpdateStorageDetail(fromStorageDetail);



                            if (toStorageDetail == null)
                            {
                                toStorageDetail = new StorageDetail();
                                toStorageDetail.AvailableQty       = 0;
                                toStorageDetail.CartonNo           = tcarton;
                                toStorageDetail.CDate              = FormatHelper.TODateInt(DateTime.Now);
                                toStorageDetail.CTime              = FormatHelper.TOTimeInt(DateTime.Now);
                                toStorageDetail.CUser              = userCode;
                                toStorageDetail.DQMCode            = fromStorageDetail.DQMCode;
                                toStorageDetail.FacCode            = fromStorageDetail.FacCode;
                                toStorageDetail.FreezeQty          = 0;
                                toStorageDetail.LastStorageAgeDate = fromStorageDetail.LastStorageAgeDate;
                                toStorageDetail.LocationCode       = tLocationCode;
                                toStorageDetail.Lotno              = fromStorageDetail.Lotno;
                                toStorageDetail.MaintainDate       = FormatHelper.TODateInt(DateTime.Now);
                                toStorageDetail.MaintainTime       = FormatHelper.TOTimeInt(DateTime.Now);
                                toStorageDetail.MaintainUser       = userCode;
                                toStorageDetail.MCode              = fromStorageDetail.MCode;
                                toStorageDetail.MDesc              = fromStorageDetail.MDesc;
                                toStorageDetail.ProductionDate     = fromStorageDetail.ProductionDate;
                                toStorageDetail.ReworkApplyUser    = fromStorageDetail.ReworkApplyUser;
                                toStorageDetail.StorageAgeDate     = fromStorageDetail.StorageAgeDate;
                                toStorageDetail.StorageCode        = fromStorageDetail.StorageCode;
                                toStorageDetail.StorageQty         = 0;
                                toStorageDetail.SupplierLotNo      = fromStorageDetail.SupplierLotNo;
                                toStorageDetail.Unit           = fromStorageDetail.Unit;
                                toStorageDetail.ValidStartDate = fromStorageDetail.ValidStartDate;
                                facade.AddStorageDetail(toStorageDetail);
                            }

                            toStorageDetail               = (StorageDetail)_WarehouseFacade.GetStorageDetail(tcarton);
                            toStorageDetail.StorageQty   += qty;
                            toStorageDetail.AvailableQty += qty;

                            facade.UpdateStorageDetail(toStorageDetail);

                            StorloctransDetailCarton storloctransDetailCarton =
                                (StorloctransDetailCarton)
                                _WarehouseFacade.GetStorloctransdetailcarton(transNo, fromCarton,
                                                                             tcarton);
                            if (storloctransDetailCarton != null)
                            {                                                // 如果有: 更新TBLStorLocTransDetailCarton.QTY+ PDA页面填的数量,MDate,MTime,MUser。
                                storloctransDetailCarton.Qty         += qty; // int.Parse(txtNumEdit.Text);
                                storloctransDetailCarton.MaintainDate = dbDateTime.DBDate;
                                storloctransDetailCarton.MaintainTime = dbDateTime.DBTime;
                                storloctransDetailCarton.MaintainUser = userCode;
                                _WarehouseFacade.UpdateStorloctransdetailcarton(storloctransDetailCarton);
                            }
                            else
                            {
                                #region 如果没有:插入一条数据     向TBLStorLocTransDetailCarton插入一笔数据。
                                StorloctransDetailCarton newstorlocDetailCarton = new StorloctransDetailCarton();
                                newstorlocDetailCarton.Transno          = transNo;                        // storloctransdetailObj.Transno;
                                newstorlocDetailCarton.DqmCode          = fromStorageDetail.DQMCode;      // storloctransdetailObj.DqmCode;
                                newstorlocDetailCarton.FacCode          = fromStorageDetail.FacCode;
                                newstorlocDetailCarton.MCode            = storageCarton.MCode;            // storloctransdetailObj.MCode;//MCODE:TBLStorLocTransDetail.MCODE
                                newstorlocDetailCarton.Qty              = qty;                            //QTY: 1
                                newstorlocDetailCarton.LocationCode     = tLocationCode;                  //FormatHelper.CleanString(txtTLocationCodeEdit.Text);//LocationCode: TBLLOCATION.LOCATIONCODE(根据PDA页面的目标货位找)
                                newstorlocDetailCarton.Cartonno         = tcarton;                        // FormatHelper.CleanString(txtTLocationCartonEdit.Text);//CARTONNO:PDA页面的目标箱号 txtTLocationCartonEdit
                                newstorlocDetailCarton.FromlocationCode = fromStorageDetail.LocationCode; //FromLocationCode:TBLStorageDetail.LocationCode
                                newstorlocDetailCarton.Fromcartonno     = fromCarton;                     // storageDetail.CartonNo; //FromCARTONNO:TBLStorageDetail. CARTONNO
                                newstorlocDetailCarton.Lotno            = storageCarton.Lotno;            //LotNo:TBLStorageDetail. LotNo
                                newstorlocDetailCarton.CUser            = userCode;                       //	CUSER
                                newstorlocDetailCarton.CDate            = dbDateTime.DBDate;              //	CDATE
                                newstorlocDetailCarton.CTime            = dbDateTime.DBTime;              //	CTIME
                                newstorlocDetailCarton.MaintainDate     = dbDateTime.DBDate;              //	MDATE
                                newstorlocDetailCarton.MaintainTime     = dbDateTime.DBTime;              //	MTIME
                                newstorlocDetailCarton.MaintainUser     = userCode;
                                _WarehouseFacade.AddStorloctransdetailcarton(newstorlocDetailCarton);
                                #endregion
                            }
                            #endregion
                        }
                    }
                }
                #endregion



                fromStorageDetail = (StorageDetail)_WarehouseFacade.GetStorageDetail(fromCarton);
                if (fromStorageDetail != null && fromStorageDetail.StorageQty == 0)
                {
                    _WarehouseFacade.DeleteStorageDetail(fromStorageDetail);
                }



                string documentno = CreateAutoDocmentsNo();
                SaveDocmentsNo(documentno, userCode);

                this.DataProvider.CommitTransaction();
                msg = "提交成功";
                return(msg);
            }
            catch (Exception ex)
            {
                this.DataProvider.RollbackTransaction();
                msg = ex.Message;
                return(msg);
            }
        }