Beispiel #1
0
        public bool AddStockCheckDetailToDatabase(StockCheckDetail stockCheckDetail)
        {
            try
            {
                OpenConnection();
                string     queryString = "Insert Into CHITIETPKK Values(@id, @idStockCheck, @idGood, @firstQuantity, @stockInQuantity, @stockOutQuantity, @finalQuantity)";
                SqlCommand command     = new SqlCommand(queryString, conn);
                command.Parameters.AddWithValue("@id", stockCheckDetail.IdStockCheckDetail);
                command.Parameters.AddWithValue("@idStockCheck", stockCheckDetail.IdStockCheck);
                command.Parameters.AddWithValue("@idGood", stockCheckDetail.IdGood);
                command.Parameters.AddWithValue("@firstQuantity", stockCheckDetail.FirstQuantity);
                command.Parameters.AddWithValue("@stockInQuantity", stockCheckDetail.StockInQuantity);
                command.Parameters.AddWithValue("@stockOutQuantity", stockCheckDetail.StockOutQuantity);
                command.Parameters.AddWithValue("@finalQuantity", stockCheckDetail.FirstQuantity);

                int rs = command.ExecuteNonQuery();
                if (rs != 1)
                {
                    return(false);
                }
                else
                {
                    return(true);
                }
            }
            catch (Exception e)
            {
                MessageBox.Show("Thêm thất bại!" + e, "Thông báo", MessageBoxButton.OK, MessageBoxImage.Error);
                return(false);
            }
            finally
            {
                CloseConnection();
            }
        }
Beispiel #2
0
 private void DoSelect()
 {
     if (!string.IsNullOrEmpty(id))
     {
         IList <StockCheckDetail> scdEnts = StockCheckDetail.FindAllByProperty("StockCheckId", id);
         this.PageState.Add("DataList", scdEnts);
     }
 }
Beispiel #3
0
        string type = String.Empty; // 对象类型
        protected void Page_Load(object sender, EventArgs e)
        {
            op   = RequestData.Get <string>("op");
            id   = RequestData.Get <string>("id");
            type = RequestData.Get <string>("type");
            StockCheck     scEnt   = null;
            IList <String> strList = RequestData.GetList <string>("data");

            switch (RequestActionString)
            {
            case "update":
                scEnt = this.GetMergedData <StockCheck>();
                scEnt.DoUpdate();
                ProcessDetail(strList, scEnt);
                break;

            case "create":
                scEnt       = this.GetPostedData <StockCheck>();
                scEnt.State = "未结束";
                scEnt.DoCreate();
                ProcessDetail(strList, scEnt);
                break;

            case "delete":
                scEnt = this.GetTargetData <StockCheck>();
                scEnt.DoDelete();
                return;

            default:
                if (op != "c" && op != "cs")
                {
                    if (!String.IsNullOrEmpty(id))
                    {
                        scEnt = StockCheck.Find(id);
                        SetFormData(scEnt);
                        IList <StockCheckDetail> scdEnts = StockCheckDetail.FindAllByProperty("StockCheckId", id);
                        PageState.Add("DataList", scdEnts);
                    }
                }
                else
                {
                    PageState.Add("StockCheckNo", DataHelper.QueryValue("select SHHG_AimExamine.dbo.fun_getStockCheckNo()"));
                    this.PageState.Add("FlowEnum", SysEnumeration.GetEnumDictList("WorkFlow.Simple"));
                    if (RequestActionString == "submitfinish")
                    {
                        StockCheck pc = StockCheck.Find(this.RequestData.Get <string>("id"));
                        pc.State = "End";
                        // pc.InventoryState = this.RequestData.Get<string>("ApprovalState");
                        pc.Save();
                    }
                }
                break;
            }
        }
Beispiel #4
0
        protected void Page_Load(object sender, EventArgs e)
        {
            StockCheck ent = null;

            switch (RequestActionString)
            {
            case "delete":
                ent = this.GetTargetData <StockCheck>();
                ent.DoDelete();
                break;

            case "batchdelete":
                DoBatchDelete();
                break;

            case "SubmitExamine":
                string id = this.RequestData.Get <string>("Id");
                ent = StockCheck.Find(id);
                ent.WorkFlowState = RequestData.Get <string>("state");
                ent.ExamineResult = RequestData.Get <string>("ApprovalState");
                ent.DoUpdate();
                StartFlow(id);
                break;

            case "AutoExecuteFlow":
                Task task = Task.FindAllByProperties(Task.Prop_WorkflowInstanceID, this.RequestData.Get <string>("FlowId"))[0];
                //自动执行,关键代码
                Aim.WorkFlow.WorkFlow.AutoExecute(task);
                this.PageState.Add("TaskId", task.ID);
                break;

            default:
                if (RequestData.Get <string>("optype") == "getChildData")
                {
                    string stockCheckId             = RequestData.Get <string>("StockCheckId");
                    IList <StockCheckDetail> scdEnt = StockCheckDetail.FindAllByProperty("StockCheckId", stockCheckId);
                    PageState.Add("DetailList", scdEnt);
                }
                else
                {
                    DoSelect();
                }
                break;
            }
        }
        private void ProcessDetail(IList <string> strList, StockCheck ent)
        {
            StockCheckDetail scdEnt = null;

            foreach (string str in strList)
            {
                JObject json = JsonHelper.GetObject <JObject>(str);
                scdEnt = StockCheckDetail.Find(json.Value <string>("Id"));
                if (json.Value <int>("StockCheckQuantity") >= 0)
                {
                    scdEnt.StockCheckQuantity = json.Value <int>("StockCheckQuantity");
                    if (scdEnt.StockQuantity > scdEnt.StockCheckQuantity)
                    {
                        scdEnt.StockCheckResult = "盘亏";
                    }
                    if (scdEnt.StockQuantity < scdEnt.StockCheckQuantity)
                    {
                        scdEnt.StockCheckResult = "盘赢";
                    }
                    if (scdEnt.StockQuantity == scdEnt.StockCheckQuantity)
                    {
                        scdEnt.StockCheckResult = "正常";
                        scdEnt.StockCheckState  = "盘点结束";
                    }
                    scdEnt.DoUpdate();
                }
            }
            //1  如果所有的盘点明细都正常 则把盘点单的状态改为已结束
            SearchCriterion.AddSearch("StockCheckResult", "正常", SearchModeEnum.NotEqual);
            IList <StockCheckDetail> scdEnts = StockCheckDetail.FindAll(SearchCriterion);

            if (scdEnts.Count == 0)
            {
                ent.State = "已结束"; ent.Result = "正常";
            }
            else
            {
                ent.Result = "异常";
            }
            ent.DoUpdate();
        }
 private void AddGoodToStockBill(CheckStockWindow parameter)
 {
     if (!String.IsNullOrEmpty(parameter.txtId.Text))
     {
         bool isExisted = false;
         List <StockCheckDetail> stockCheckDetails = StockCheckDetailDAL.Instance.GetStockCheckDetailLById(int.Parse(parameter.txtIdStockBill.Text));
         foreach (var stockCheckDetail in stockCheckDetails)
         {
             MessageBox.Show(stockCheckDetails.Count.ToString());
             if (stockCheckDetail.IdGood.ToString() == parameter.txtId.Text)
             {
                 isExisted = true;
                 MessageBox.Show("Đã thêm sản phẩm vào phiểu kiểm");
                 return;
             }
         }
         if (!isExisted)
         {
             int x = StockCheckDAL.Instance.GetQuantityGood(int.Parse(parameter.txtId.Text));
             int y = StockCheckDAL.Instance.GetStockInGood(int.Parse(parameter.txtId.Text));
             int z = StockCheckDAL.Instance.GetStockOutGood(int.Parse(parameter.txtId.Text));
             int t = x + y - z;
             StockCheckDetail checkDetail = new StockCheckDetail(
                 StockCheckDetailDAL.Instance.GetMaxId() + 1,
                 int.Parse(parameter.txtIdStockBill.Text),
                 int.Parse(parameter.txtId.Text),
                 x,
                 t,
                 y,
                 z);
             StockCheckDetailDAL.Instance.AddStockCheckDetailToDatabase(checkDetail);
             LoadStockCheckGood(CheckStockWindow);
         }
     }
     else
     {
         MessageBox.Show("Vui lòng chọn sản phẩm");
     }
 }
Beispiel #7
0
        public List <StockCheckDetail> GetStockCheckDetailLById(int idStockCheckDetail)
        {
            List <StockCheckDetail> stockCheckDetails = new List <StockCheckDetail>();

            try
            {
                OpenConnection();
                string         query   = String.Format("Select * From CHITIETPKK Where MaPKK = '{0}'", idStockCheckDetail);
                SqlCommand     command = new SqlCommand(query, conn);
                SqlDataAdapter adapter = new SqlDataAdapter(command);

                DataTable dataTable = new DataTable();
                adapter.Fill(dataTable);

                for (int i = 0; i < dataTable.Rows.Count; i++)
                {
                    StockCheckDetail stockCheckDetail = new StockCheckDetail(
                        int.Parse(dataTable.Rows[i].ItemArray[0].ToString()),
                        int.Parse(dataTable.Rows[i].ItemArray[1].ToString()),
                        int.Parse(dataTable.Rows[i].ItemArray[2].ToString()),
                        int.Parse(dataTable.Rows[i].ItemArray[3].ToString()),
                        int.Parse(dataTable.Rows[i].ItemArray[4].ToString()),
                        int.Parse(dataTable.Rows[i].ItemArray[5].ToString()),
                        int.Parse(dataTable.Rows[i].ItemArray[6].ToString())
                        );
                    stockCheckDetails.Add(stockCheckDetail);
                }
                return(stockCheckDetails);
            }
            catch
            {
                return(new List <StockCheckDetail>());
            }
            finally
            {
                CloseConnection();
            }
        }
        public List <StockCheckDetail> ConvertDBToStockDetailList(int idStockCheck)
        {
            DataTable dt = new DataTable();
            List <StockCheckDetail> stockCheckDetails = new List <StockCheckDetail>();

            try
            {
                OpenConnection();
                string queryString = String.Format("Select * from CHITIETPKK Where MaPKK = '{0}'", idStockCheck);

                SqlCommand command = new SqlCommand(queryString, conn);
                command.ExecuteNonQuery();
                SqlDataAdapter adapter = new SqlDataAdapter(command);

                adapter.Fill(dt);
            }
            catch
            {
            }
            finally
            {
                CloseConnection();
            }
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                StockCheckDetail stockCheck = new StockCheckDetail(
                    int.Parse(dt.Rows[i].ItemArray[0].ToString()),
                    int.Parse(dt.Rows[i].ItemArray[1].ToString()),
                    int.Parse(dt.Rows[i].ItemArray[2].ToString()),
                    int.Parse(dt.Rows[i].ItemArray[3].ToString()),
                    int.Parse(dt.Rows[i].ItemArray[4].ToString()),
                    int.Parse(dt.Rows[i].ItemArray[5].ToString()),
                    int.Parse(dt.Rows[i].ItemArray[6].ToString())
                    );
                stockCheckDetails.Add(stockCheck);
            }
            return(stockCheckDetails);
        }
Beispiel #9
0
        private void ProcessDetail(IList <string> strList, StockCheck ent)
        {
            IList <StockCheckDetail> scEnts = StockCheckDetail.FindAllByProperty("StockCheckId", ent.Id);

            foreach (StockCheckDetail tent in scEnts)
            {
                tent.DoDelete();
            }
            StockCheckDetail scdEnt = null;

            foreach (string str in strList)
            {
                JObject json = JsonHelper.GetObject <JObject>(str);
                scdEnt = new StockCheckDetail();
                scdEnt.StockCheckId    = ent.Id;
                scdEnt.ProductId       = json.Value <string>("ProductId");
                scdEnt.ProductName     = json.Value <string>("ProductName");
                scdEnt.ProductCode     = json.Value <string>("ProductCode");
                scdEnt.ProductPcn      = json.Value <string>("ProductPcn");
                scdEnt.StockQuantity   = json.Value <int>("StockQuantity");
                scdEnt.StockCheckState = json.Value <string>("StockCheckState");
                scdEnt.DoCreate();
            }
        }
 public void AddToStockCheckDetails(StockCheckDetail stockCheckDetail)
 {
     base.AddObject("StockCheckDetails", stockCheckDetail);
 }
 public static StockCheckDetail CreateStockCheckDetail(int ID, int stockCheckDetails_StockCheck, int unitsExpected, int unitsFound, byte[] rowVersion)
 {
     StockCheckDetail stockCheckDetail = new StockCheckDetail();
     stockCheckDetail.Id = ID;
     stockCheckDetail.StockCheckDetails_StockCheck = stockCheckDetails_StockCheck;
     stockCheckDetail.UnitsExpected = unitsExpected;
     stockCheckDetail.UnitsFound = unitsFound;
     stockCheckDetail.RowVersion = rowVersion;
     return stockCheckDetail;
 }
Beispiel #12
0
        protected void Page_Load(object sender, EventArgs e)
        {
            op   = RequestData.Get <string>("op");
            id   = RequestData.Get <string>("id");
            type = RequestData.Get <string>("type");
            ent  = StockCheck.Find(id);
            switch (RequestActionString)
            {
            case "WorkFlowEnd":
                ent.WorkFlowState = RequestData.Get <string>("state");
                ent.ExamineResult = RequestData.Get <string>("ApprovalState");
                ent.State         = "已结束";
                ent.DoUpdate();
                IList <StockCheckDetail> scdEnts = StockCheckDetail.FindAllByProperty("StockCheckId", id);
                foreach (StockCheckDetail scdEnt in scdEnts)
                {
                    if (scdEnt.StockCheckResult != "正常")
                    {
                        scdEnt.StockCheckState = "盘点结束";
                        scdEnt.DoUpdate();
                    }
                }
                if (ent.ExamineResult == "同意")
                {
                    foreach (StockCheckDetail scdEnt in scdEnts)
                    {
                        if (scdEnt.StockCheckResult != "正常")    //创建库存变更日志  并更改库存
                        {
                            StockLog slEnt = new StockLog();
                            slEnt.InOrOutDetailId = scdEnt.Id;
                            StockCheck scEnt = StockCheck.Find(scdEnt.StockCheckId);
                            slEnt.InOrOutBillNo = scEnt.StockCheckNo;
                            slEnt.OperateType   = "库存盘点";
                            slEnt.WarehouseId   = scEnt.WarehouseId;
                            slEnt.WarehouseName = scEnt.WarehouseName;
                            slEnt.StockQuantity = scdEnt.StockQuantity;
                            slEnt.Quantity      = scdEnt.StockCheckQuantity - scdEnt.StockQuantity;
                            slEnt.ProductId     = scdEnt.ProductId;
                            Product pEnt = Product.Find(scdEnt.ProductId);
                            slEnt.ProductName = pEnt.Name;
                            slEnt.ProductCode = pEnt.Code;
                            slEnt.ProductIsbn = pEnt.Isbn;
                            slEnt.ProductPcn  = pEnt.Pcn;
                            slEnt.CreateId    = UserInfo.UserID;
                            slEnt.CreateName  = UserInfo.Name;
                            slEnt.CreateTime  = System.DateTime.Now;
                            slEnt.DoCreate();
                            IList <StockInfo> siEnts = StockInfo.FindAllByProperties("ProductId", scdEnt.ProductId, "WarehouseId", ent.WarehouseId);
                            if (siEnts.Count > 0)
                            {
                                siEnts[0].StockQuantity = scdEnt.StockCheckQuantity;
                                siEnts[0].DoUpdate();
                            }
                        }
                    }
                }
                break;

            default:
                DoSelect();
                break;
            }
            if (op != "c" && op != "cs")
            {
                if (!String.IsNullOrEmpty(id))
                {
                    SetFormData(ent);
                }
            }
        }
Beispiel #13
0
        public ReturnType Check(int num, List <StockDetail> stockDetailList, StockDetail checkDetail, StockCheckDetail stockCheckDetail)
        {
            System.Data.Common.DbTransaction tran = null;
            using (AladingEntities alading = new AladingEntities(AppSettings.GetConnectionString()))
            {
                try
                {
                    alading.Connection.Open();
                    tran = alading.Connection.BeginTransaction();
                    StockProduct      stockProduct      = alading.StockProduct.FirstOrDefault(c => c.SkuOuterID == checkDetail.ProductSkuOuterId);
                    StockItem         stockItem         = alading.StockItem.FirstOrDefault(c => c.OuterID == stockProduct.OuterID);
                    StockHouseProduct stockHouseProduct = alading.StockHouseProduct.FirstOrDefault(c => c.HouseCode == checkDetail.StockHouseCode && c.LayoutCode == checkDetail.StockLayOutCode && c.SkuOuterID == checkDetail.ProductSkuOuterId);
                    /*修改相关数量,若报溢则加,报损则减*/
                    stockProduct.SkuQuantity += num;
                    stockItem.TotalQuantity  += num;
                    if (stockHouseProduct != null)
                    {
                        stockHouseProduct.Num += num;
                    }
                    else
                    {
                        stockHouseProduct                  = new StockHouseProduct();
                        stockHouseProduct.HouseCode        = checkDetail.StockHouseCode;
                        stockHouseProduct.HouseName        = checkDetail.HouseName;
                        stockHouseProduct.HouseProductCode = System.Guid.NewGuid().ToString();
                        stockHouseProduct.LayoutCode       = checkDetail.StockLayOutCode;
                        stockHouseProduct.LayoutName       = checkDetail.LayoutName;
                        stockHouseProduct.Num              = num;
                        stockHouseProduct.SkuOuterID       = checkDetail.ProductSkuOuterId;
                        alading.AddToStockHouseProduct(stockHouseProduct);
                    }

                    /*将出入库详情添加到历史表中并在StockDetail表中删除该数据*/
                    foreach (StockDetail stockDetail in stockDetailList)
                    {
                        HistoryStockDetail hisStockDetail = new HistoryStockDetail();
                        hisStockDetail.DetailRemark           = stockDetail.DetailRemark;
                        hisStockDetail.DetailType             = stockDetail.DetailType;
                        hisStockDetail.DurabilityDate         = stockDetail.DurabilityDate;
                        hisStockDetail.HistoryStockDetailCode = stockDetail.StockDetailCode;
                        hisStockDetail.HouseName         = stockDetail.HouseName;
                        hisStockDetail.InOutCode         = stockDetail.InOutCode;
                        hisStockDetail.LayoutName        = stockDetail.LayoutName;
                        hisStockDetail.Price             = stockDetail.Price;
                        hisStockDetail.ProductSkuOuterId = stockDetail.ProductSkuOuterId;
                        hisStockDetail.Quantity          = stockDetail.Quantity;
                        hisStockDetail.SearchText        = stockDetail.SearchText;
                        hisStockDetail.StockHouseCode    = stockDetail.StockHouseCode;
                        hisStockDetail.StockLayOutCode   = stockDetail.StockLayOutCode;
                        hisStockDetail.Tax      = stockDetail.Tax;
                        hisStockDetail.TotalFee = stockDetail.TotalFee;
                        alading.AddToHistoryStockDetail(hisStockDetail);

                        StockDetail temp = alading.StockDetail.FirstOrDefault(c => c.StockDetailCode == stockDetail.StockDetailCode);
                        if (temp != null)
                        {
                            alading.DeleteObject(temp);
                        }
                    }

                    /*将盘点生成的入库详情加入StockDetail表中,做为初始数据*/
                    alading.AddToStockDetail(checkDetail);
                    alading.AddToStockCheckDetail(stockCheckDetail);
                    alading.SaveChanges();
                    tran.Commit();
                    return(ReturnType.Success);
                }
                catch (System.Exception ex)
                {
                    if (tran != null)
                    {
                        tran.Rollback();
                    }
                    return(ReturnType.SaveFailed);
                }
                finally
                {
                    if (alading != null && alading.Connection.State != System.Data.ConnectionState.Closed)
                    {
                        alading.Connection.Close();
                    }
                }
            }
        }
Beispiel #14
0
        /// <summary>
        /// 归档
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void bbtnSave_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            WaitDialogForm waitForm = new WaitDialogForm(Constants.OPERATE_DB_DATA);

            waitForm.Show();
            try
            {
                if (string.IsNullOrEmpty(comboBoxStockHouse.Text))
                {
                    waitForm.Close();
                    XtraMessageBox.Show("请选择仓库进行盘点!");
                    return;
                }

                if (gvProductCheck.RowCount == 0)
                {
                    waitForm.Close();
                    XtraMessageBox.Show("请选择一件商品进行盘点!");
                    return;
                }
                if (string.IsNullOrEmpty(pceOperator.Text))
                {
                    waitForm.Close();
                    XtraMessageBox.Show("请选择操作人!");
                    return;
                }
                /*盘点必须选择具体库位,否则返回*/
                if (!IsChooseLayout())
                {
                    waitForm.Close();
                    XtraMessageBox.Show("请选择具体库位!");
                    return;
                }

                /*盘点必须输入实际数量,否则返回*/
                if (!IsInputQuantity())
                {
                    waitForm.Close();
                    XtraMessageBox.Show("请输入实际数量!");
                    return;
                }

                /*开始进行盘点*/

                #region 出入库单
                ///*实例化两个StockInOut,一个用于记录报损出库,一个用于记录报溢入库*/
                //Alading.Entity.StockInOut profitInout = new Alading.Entity.StockInOut();
                //Alading.Entity.StockInOut lossInout = new Alading.Entity.StockInOut();

                //#region 初始化赋值
                //profitInout.AmountTax = 0;
                //profitInout.DiscountFee = 0;
                //profitInout.DueFee = 0;
                //profitInout.FreightCode = string.Empty;
                //profitInout.FreightCompany = string.Empty;
                //profitInout.HouseCodeIn = string.Empty;
                //profitInout.HouseCodeOut = string.Empty;
                //profitInout.HouseNameIn = string.Empty;
                //profitInout.HouseNameOut = string.Empty;
                //profitInout.IncomeTime = DateTime.Now;
                ///*GUID*/
                //profitInout.InOutCode = System.Guid.NewGuid().ToString();
                //profitInout.InOutStatus = (int)InOutStatus.AllReach;
                //profitInout.InOutTime = DateTime.Now;
                //profitInout.InOutType = (int)InOutType.ProfitIn;
                //profitInout.IsSettled = true;
                ///*操作人,暂时为空*/
                //profitInout.OperatorCode = string.Empty;
                //profitInout.OperatorName = string.Empty;

                //profitInout.PayTerm = DateTime.Now;
                //profitInout.PayThisTime = 0;
                //profitInout.PayType = (int)PayType.OTHER;
                //profitInout.SearchText = string.Empty;
                //profitInout.TradeOrderCode = string.Empty;
                //profitInout.TransportCode = string.Empty;

                //lossInout.AmountTax = 0;
                //lossInout.DiscountFee = 0;
                //lossInout.DueFee = 0;
                //lossInout.FreightCode = string.Empty;
                //lossInout.FreightCompany = string.Empty;
                //lossInout.HouseCodeIn = string.Empty;
                //lossInout.HouseCodeOut = string.Empty;
                //lossInout.HouseNameIn = string.Empty;
                //lossInout.HouseNameOut = string.Empty;
                //lossInout.IncomeTime = DateTime.Now;
                ///*GUID*/
                //lossInout.InOutCode = System.Guid.NewGuid().ToString();
                //lossInout.InOutStatus = (int)InOutStatus.AllReach;
                //lossInout.InOutTime = DateTime.Now;
                //lossInout.InOutType = (int)InOutType.ProfitIn;
                //lossInout.IsSettled = true;
                ///*操作人,暂时为空*/
                //lossInout.OperatorCode = string.Empty;
                //lossInout.OperatorName = string.Empty;

                //lossInout.PayTerm = DateTime.Now;
                //lossInout.PayThisTime = 0;
                //lossInout.PayType = (int)PayType.OTHER;
                //lossInout.SearchText = string.Empty;
                //lossInout.TradeOrderCode = string.Empty;
                //lossInout.TransportCode = string.Empty;
                //#endregion
                #endregion

                Hashtable table     = comboBoxStockHouse.Tag as Hashtable;
                string    houseCode = table[comboBoxStockHouse.SelectedIndex].ToString();
                int       rowCount  = gvProductCheck.RowCount;
                /*盘点详情列表*/
                //List<StockCheckDetail> stockCheckDetailList = new List<StockCheckDetail>();

                #region 盘点单

                StockCheck stockCheck = new StockCheck();
                stockCheck.Created = DateTime.Now;
                /*操作人*/
                stockCheck.OperatorCode = pceOperator.Tag != null?pceOperator.Tag.ToString() : string.Empty;

                /*盘点单号*/
                //string year = DateTime.Now.Year.ToString();
                //string month = DateTime.Now.Month.ToString();
                //string day = DateTime.Now.Day.ToString();
                //string hour = DateTime.Now.Hour.ToString();
                //string minute = DateTime.Now.Minute.ToString();
                //string second = DateTime.Now.Second.ToString();
                //stockCheck.StockCheckCode = "PDD-"+year+month+day+"-"+hour+minute+second;
                stockCheck.StockCheckCode = !string.IsNullOrEmpty(textEditCheckCode.Text) ? textEditCheckCode.Text.Trim() : System.Guid.NewGuid().ToString();
                stockCheck.StockHouseCode = houseCode;
                #endregion

                if (StockDetailService.AddStockCheck(stockCheck) == ReturnType.Success)
                {
                    for (int i = 0; i < rowCount; i++)
                    {
                        DataRow row          = gvProductCheck.GetDataRow(i);
                        string  profitType   = row[gcProfitType.FieldName].ToString();
                        string  skuOuterId   = row[gcSkuOuterID.FieldName].ToString();
                        int     factQuantity = int.Parse(row[gcQuantity.FieldName].ToString());
                        int     skuQuantity  = int.Parse(row[gcSkuQuantity.FieldName].ToString());
                        string  layoutCode   = row[gcLayoutCode.FieldName].ToString();
                        string  layoutName   = row[gcLayoutName.FieldName].ToString();

                        #region 盘点入库Detail
                        StockDetail stockDetail = new StockDetail();
                        stockDetail.DetailRemark   = string.Empty;
                        stockDetail.DetailType     = (int)DetailType.CheckIn;
                        stockDetail.DurabilityDate = DateTime.Now;
                        stockDetail.HouseName      = comboBoxStockHouse.Text;
                        stockDetail.InOutCode      = string.Empty;
                        stockDetail.LayoutName     = layoutName;
                        /*价格问题??????*/
                        stockDetail.Price             = row[gcPrice.FieldName] != null && row[gcPrice.FieldName].ToString() != string.Empty ? float.Parse(row[gcPrice.FieldName].ToString()) : 0;
                        stockDetail.ProductSkuOuterId = skuOuterId;
                        stockDetail.Quantity          = factQuantity;
                        /*搜索字段*/
                        stockDetail.SearchText      = string.Empty;
                        stockDetail.StockDetailCode = System.Guid.NewGuid().ToString();
                        stockDetail.StockHouseCode  = houseCode;
                        stockDetail.StockLayOutCode = layoutCode;
                        stockDetail.Tax             = string.Empty;
                        stockDetail.TotalFee        = stockDetail.Price * stockDetail.Quantity;
                        #endregion

                        #region 盘点详情

                        StockCheckDetail stockCheckDetail = new StockCheckDetail();
                        /*报溢/报损数量*/
                        stockCheckDetail.CheckQuantity = factQuantity - skuQuantity;
                        if (stockCheckDetail.CheckQuantity < 0)
                        {
                            stockCheckDetail.CheckQuantity = -stockCheckDetail.CheckQuantity;
                        }

                        stockCheckDetail.LayoutCode = layoutCode;
                        /*实际数量*/
                        stockCheckDetail.Quantity = factQuantity;
                        /*搜索字段*/
                        stockCheckDetail.SearchText = string.Empty;
                        stockCheckDetail.SkuOuterID = skuOuterId;
                        /*账面数量*/
                        stockCheckDetail.SkuQuantity    = skuQuantity;
                        stockCheckDetail.StockCheckCode = stockCheck.StockCheckCode;
                        #endregion

                        /*将所有该仓库该库位的商品出入库详情取出,放入历史表*/
                        List <StockDetail> hisStockDetailList = StockDetailService.GetStockDetail(c => c.ProductSkuOuterId == skuOuterId && c.StockHouseCode == houseCode && c.StockLayOutCode == layoutCode);

                        if (profitType == "1")
                        {
                            /*报溢处理*/
                            StockDetail profitDetail = new StockDetail();
                            profitDetail.DetailRemark      = "报溢入库";
                            profitDetail.DetailType        = (int)DetailType.ProfitIn;
                            profitDetail.DurabilityDate    = stockDetail.DurabilityDate;
                            profitDetail.HouseName         = stockDetail.HouseName;
                            profitDetail.InOutCode         = string.Empty;
                            profitDetail.LayoutName        = stockDetail.LayoutName;
                            profitDetail.Price             = stockDetail.Price;
                            profitDetail.ProductSkuOuterId = stockDetail.ProductSkuOuterId;
                            /*报溢入库数量=实际数量-账面数量*/
                            profitDetail.Quantity = factQuantity - skuQuantity;
                            /*搜索字段*/
                            profitDetail.SearchText      = string.Empty;
                            profitDetail.StockDetailCode = System.Guid.NewGuid().ToString();
                            profitDetail.StockHouseCode  = houseCode;
                            profitDetail.StockLayOutCode = layoutCode;
                            profitDetail.Tax             = string.Empty;
                            /*总花费*/
                            profitDetail.TotalFee = profitDetail.Quantity * profitDetail.Price;
                            hisStockDetailList.Add(profitDetail);

                            /*盘点详情的类型为报溢*/
                            stockCheckDetail.ProfitType = (int)ProfitType.PROFIT;
                        }
                        else if (profitType == "2")
                        {
                            /*报损处理*/
                            StockDetail LossDetail = new StockDetail();
                            LossDetail.DetailRemark      = "报损入库";
                            LossDetail.DetailType        = (int)DetailType.LossOut;
                            LossDetail.DurabilityDate    = stockDetail.DurabilityDate;
                            LossDetail.HouseName         = stockDetail.HouseName;
                            LossDetail.InOutCode         = string.Empty;
                            LossDetail.LayoutName        = stockDetail.LayoutName;
                            LossDetail.Price             = stockDetail.Price;
                            LossDetail.ProductSkuOuterId = stockDetail.ProductSkuOuterId;
                            /*报损出库数量=实际数量-账面数量*/
                            LossDetail.Quantity = skuQuantity - factQuantity;
                            /*搜索字段*/
                            LossDetail.SearchText      = string.Empty;
                            LossDetail.StockDetailCode = System.Guid.NewGuid().ToString();
                            LossDetail.StockHouseCode  = houseCode;
                            LossDetail.StockLayOutCode = layoutCode;
                            LossDetail.Tax             = string.Empty;
                            /*总花费*/
                            LossDetail.TotalFee = LossDetail.Quantity * LossDetail.Price;
                            hisStockDetailList.Add(LossDetail);

                            /*盘点详情的类型为报损*/
                            stockCheckDetail.ProfitType = (int)ProfitType.LOSS;
                        }
                        else
                        {
                            /*正常处理*/
                            stockCheckDetail.ProfitType = (int)ProfitType.NORMAL;
                        }
                        /*盘点详情列表*/
                        //stockCheckDetailList.Add();
                        /*盘点单需要的参数:1、类型(报溢/报损)2、报溢或报损数量 3、历史出入库详情 4、盘点入库详情 5、盘点单列表*/
                        StockDetailService.Check(factQuantity - skuQuantity, hisStockDetailList, stockDetail, stockCheckDetail);
                    }
                }
                else
                {
                    /**/
                }
                gvProductCheck.BestFitColumns();
                gridViewDetail.BestFitColumns();
                waitForm.Close();
            }
            catch (Exception ex)
            {
                waitForm.Close();
                XtraMessageBox.Show(ex.ToString(), Constants.SYSTEM_PROMPT, MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
Beispiel #15
0
        public void RunStockCheckDetail(string id)
        {
            //日期		    date
            //车牌号码	    no
            //供应商名称	supplierName
            //运输单位名称	transportName
            //材料种类	    sort
            //材料名称	    materialName
            //规格型号	    model
            //毛重		    grossWeight
            //皮重		    tare
            //净重		    suttle
            //检斤员		personnel
            LinkSelect linkS = new LinkSelect();

            linkS.TableNames.Add("stockMaterialNoteCorresponding");
            linkS.TableNames.Add("stockMaterialSettlementDetail");
            linkS.LinkConds.Add("stockMaterialNoteCorresponding.smsdId=stockMaterialSettlementDetail.id");
            linkS.TableNames.Add("stockMaterialSettlement");
            linkS.LinkConds.Add("stockMaterialSettlementDetail.smsId=stockMaterialSettlement.id");
            linkS.TableNames.Add("stockNote");
            linkS.LinkConds.Add("stockMaterialNoteCorresponding.snId=stockNote.id");
            linkS.TableNames.Add("personnelInfo");
            linkS.LinkConds.Add("stockNote.piId1=personnelInfo.id");
            linkS.TableNames.Add("indent");
            linkS.LinkConds.Add("stockNote.iId=indent.id");
            linkS.TableNames.Add("material");
            linkS.LinkConds.Add("indent.mid=material.id");
            linkS.TableNames.Add("materialName");
            linkS.LinkConds.Add("material.mnid=materialName.id");
            linkS.TableNames.Add("materialModel");
            linkS.LinkConds.Add("material.mmid=materialModel.id");
            linkS.TableNames.Add("materialKind");
            linkS.LinkConds.Add("materialName.mkId=materialKind.id");
            linkS.TableNames.Add("stockContract");
            linkS.LinkConds.Add("indent.scId=stockContract.id");
            linkS.TableNames.Add("providerInfo");
            linkS.LinkConds.Add("stockContract.piId=providerInfo.Id");
            linkS.TableNames.Add("voitureInfo");
            linkS.LinkConds.Add("stockNote.viId=voitureInfo.id");
            linkS.TableNames.Add("transportUnit");
            linkS.LinkConds.Add("voitureInfo.tuId=transportUnit.id");
            linkS.TableNames.Add("transportGoodsInformationCorresponding");
            linkS.LinkConds.Add("stockNote.tgicId=transportGoodsInformationCorresponding.id");
            linkS.TableNames.Add("transportContract");
            linkS.LinkConds.Add("transportGoodsInformationCorresponding.tcId=transportContract.id");
            linkS.Viewfields.Add("stockMaterialNoteCorresponding.inputDate as date");
            linkS.Viewfields.Add("voitureInfo.[no]");
            linkS.Viewfields.Add("providerInfo.[name] as supplierName");
            linkS.Viewfields.Add("transportUnit.[name] as transportName");
            linkS.Viewfields.Add("materialKind.sort");
            linkS.Viewfields.Add("materialModel.model");
            linkS.Viewfields.Add("materialName.[name] as materialName");
            linkS.Viewfields.Add("stockNote.grossWeight");
            linkS.Viewfields.Add("stockNote.tare");
            linkS.Viewfields.Add("stockNote.suttle");
            linkS.Viewfields.Add("personnelInfo.[name] as personnel");
            linkS.Conds.Add("stockMaterialSettlement.id=" + id);
            DataSet ds = linkS.LeftLinkOpen();

            StockCheckDetail oStockCheckDetail = new StockCheckDetail();

            oStockCheckDetail.Source = ds;

            oStockCheckDetail.CoName = "中百";
            oStockCheckDetail.ShowReport();
        }
 public static ReturnType Check(int num, List <StockDetail> stockDetailList, StockDetail checkDetail, StockCheckDetail stockCheckDetail)
 {
     return(DataProviderClass.Instance().Check(num, stockDetailList, checkDetail, stockCheckDetail));
 }
 partial void StockCheckDetails_Inserted(StockCheckDetail entity)
 {
     OnProductStatusAffected(entity.Product);
 }
 partial void StockCheckDetails_Updated(StockCheckDetail entity)
 {
     //OnProductStatusAffected(entity.Product);
 }
 partial void StockCheckDetails_Updated(StockCheckDetail entity)
 {
     OnProductStatusAffected(entity.Product);
 }