/// <summary>
        /// 根据单据信息操作账务信息与库存信息
        /// </summary>
        /// <param name="dataContext">数据上下文</param>
        /// <param name="bill">单据信息</param>
        public void OpertaionDetailAndStock(DepotManagementDataContext dataContext, S_MaterialReturnedInTheDepot bill)
        {
            MaterialListReturnedInTheDepot listService  = new MaterialListReturnedInTheDepot();
            IFinancialDetailManagement     serverDetail =
                ServerModule.ServerModuleFactory.GetServerModule <IFinancialDetailManagement>();

            var result = from r in dataContext.S_MaterialListReturnedInTheDepot
                         where r.Bill_ID == bill.Bill_ID
                         select r;

            if (result == null || result.Count() == 0)
            {
                throw new Exception("获取单据信息失败");
            }

            foreach (var item in result)
            {
                S_FetchGoodsDetailBill detailInfo = listService.AssignDetailInfo(dataContext, bill, item);
                S_Stock stockInfo = listService.AssignStockInfo(dataContext, bill, item);

                if (detailInfo == null || stockInfo == null)
                {
                    throw new Exception("获取账务信息或者库存信息失败");
                }

                serverDetail.ProcessFetchGoodsDetail(dataContext, detailInfo, stockInfo);
            }

            IStoreServer serviceStore = ServerModuleFactory.GetServerModule <IStoreServer>();

            serviceStore.Operation_MES_InProduction(dataContext, bill.Bill_ID);
        }
Пример #2
0
        /// <summary>
        /// 操作账务信息与库存信息_出
        /// </summary>
        /// <param name="dataContext">数据上下文</param>
        /// <param name="lnqOutPut">单据信息</param>
        void OperationDetailAndStock_Out(DepotManagementDataContext dataContext, Business_WarehouseInPut_InPut lnqInPut)
        {
            string             error = "";
            IProductCodeServer productCodeService =
                ServerModule.ServerModuleFactory.GetServerModule <ServerModule.IProductCodeServer>();
            CE_MarketingType marketingType = GlobalObject.EnumOperation.OutPutBusinessTypeConvertToMarketingType(
                GlobalObject.GeneralFunction.StringConvertToEnum <CE_OutPutBusinessType>(lnqInPut.BillType));
            IFinancialDetailManagement serverDetail =
                ServerModule.ServerModuleFactory.GetServerModule <IFinancialDetailManagement>();

            List <View_Business_WarehouseInPut_InPutDetail> listDetail = GetListViewDetailInfo(lnqInPut.BillNo);

            foreach (View_Business_WarehouseInPut_InPutDetail detail1 in listDetail)
            {
                if (!productCodeService.UpdateProductStock(dataContext, lnqInPut.BillNo, marketingType.ToString(), lnqInPut.StorageID,
                                                           (lnqInPut.StorageID == "05" && marketingType == CE_MarketingType.入库) ? true : false, detail1.物品ID, out error))
                {
                    throw new Exception(error);
                }

                S_FetchGoodsDetailBill detailInfo = AssignDetailInfo_Out(dataContext, lnqInPut, detail1);
                S_Stock stockInfo = AssignStockInfo(dataContext, lnqInPut, detail1);

                if (detailInfo == null || stockInfo == null)
                {
                    throw new Exception("获取账务信息或者库存信息失败");
                }

                serverDetail.ProcessFetchGoodsDetail(dataContext, detailInfo, stockInfo);
            }
        }
Пример #3
0
        private void btnStockUpdate_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("您确定要修改此物品?", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                S_Stock stockInfo = CreateStockObject();
                stockInfo.ID = (int)dataGridView1.CurrentRow.Cells[0].Value;

                if (stockInfo.GoodsCode != dataGridView1.CurrentRow.Cells["图号型号"].Value.ToString() ||
                    stockInfo.GoodsName != dataGridView1.CurrentRow.Cells["物品名称"].Value.ToString() ||
                    stockInfo.Spec != dataGridView1.CurrentRow.Cells["规格"].Value.ToString())
                {
                    MessageDialog.ShowErrorMessage("不允许修改物品的图号、名称、规格信息!");
                    return;
                }

                // 获取到修改行索引
                int rowIndex = dataGridView1.CurrentRow.Index;

                if (!m_storeServer.UpdateStore(stockInfo, out m_error))
                {
                    MessageDialog.ShowErrorMessage(m_error);
                }
                else
                {
                    MessageBox.Show("修改成功", "提示");
                }

                QueryStock();
            }
        }
Пример #4
0
        /// <summary>
        /// 赋值库存信息
        /// </summary>
        /// <param name="ctx">数据上下文</param>
        /// <param name="outSourcing">单据信息</param>
        /// <returns>返回库存信息对象</returns>
        S_Stock AssignStockInfo(DepotManagementDataContext ctx, S_CheckOutInDepotForOutsourcingBill outSourcing)
        {
            View_F_GoodsPlanCost tempGoodsLnq = UniversalFunction.GetGoodsInfo(ctx, outSourcing.GoodsID);

            if (tempGoodsLnq == null)
            {
                throw new Exception("无此物品信息");
            }

            S_Stock stock = new S_Stock();

            stock.GoodsID         = outSourcing.GoodsID;
            stock.GoodsCode       = tempGoodsLnq.图号型号;
            stock.GoodsName       = tempGoodsLnq.物品名称;
            stock.Unit            = tempGoodsLnq.单位;
            stock.Spec            = tempGoodsLnq.规格;
            stock.Provider        = outSourcing.Provider;
            stock.ProviderBatchNo = outSourcing.ProviderBatchNo;
            stock.BatchNo         = outSourcing.BatchNo;
            stock.ShelfArea       = outSourcing.ShelfArea;
            stock.ColumnNumber    = outSourcing.ColumnNumber;
            stock.LayerNumber     = outSourcing.LayerNumber;
            stock.ExistCount      = outSourcing.InDepotCount;
            stock.Date            = ServerModule.ServerTime.Time;
            stock.UnitPrice       = outSourcing.UnitPrice;
            stock.StorageID       = outSourcing.StorageID;
            stock.Version         = outSourcing.Version;
            stock.GoodsStatus     = outSourcing.IsOnlyForRepairFlag == true ? 6 : 0;

            return(stock);
        }
Пример #5
0
        /// <summary>
        /// 赋值库存信息
        /// </summary>
        /// <param name="context">数据上下文</param>
        /// <param name="bill">单据信息</param>
        /// <param name="item">明细信息</param>
        /// <returns>返回库存信息对象</returns>
        public S_Stock AssignStockInfo(DepotManagementDataContext context, S_MaterialRequisition bill,
                                       S_MaterialRequisitionGoods item)
        {
            F_GoodsPlanCost basicGoods = m_basicGoodsServer.GetGoodsInfo(context, item.GoodsID);

            if (item.RealCount == 0)
            {
                throw new Exception(string.Format("图号:{0}, 名称:{1}, 规格:{2}, 供应商:{3}, 批次号:{4} 的物品实领数为0,请重新输入!",
                                                  basicGoods.GoodsCode, basicGoods.GoodsName, basicGoods.Spec, item.ProviderCode, item.BatchNo));
            }

            S_Stock stockInfo = new S_Stock();

            stockInfo.GoodsID = item.GoodsID;

            if (basicGoods != null)
            {
                stockInfo.GoodsCode = basicGoods.GoodsCode;
                stockInfo.GoodsName = basicGoods.GoodsName;
                stockInfo.Spec      = basicGoods.Spec;
            }

            stockInfo.ExistCount = item.RealCount;
            stockInfo.Provider   = item.ProviderCode;
            stockInfo.BatchNo    = item.BatchNo;
            stockInfo.StorageID  = bill.StorageID;

            if (item.Remark != null && item.Remark.Contains("无线领料"))
            {
                item.Remark = item.Remark.Replace(",无线领料", "");
                item.Remark = item.Remark.Replace("无线领料", "");  // 防止用户把前面的逗号删除
            }

            return(stockInfo);
        }
        /// <summary>
        /// 赋值库存信息
        /// </summary>
        /// <param name="dataContext">数据上下文</param>
        /// <param name="bill">单据信息</param>
        /// <returns>返回库存信息对象</returns>
        public S_Stock AssignStockInfo(DepotManagementDataContext dataContext, S_CheckOutInDepotBill bill)
        {
            S_Stock stock = new S_Stock();

            stock.GoodsID = bill.GoodsID;

            stock.StorageID    = bill.StorageID;
            stock.ShelfArea    = bill.ShelfArea;
            stock.ColumnNumber = bill.ColumnNumber;
            stock.LayerNumber  = bill.LayerNumber;

            stock.Provider        = bill.Provider;
            stock.ProviderBatchNo = bill.ProviderBatchNo;
            stock.BatchNo         = bill.BatchNo;

            stock.ExistCount = bill.InDepotCount;

            stock.UnitPrice = bill.UnitPrice;

            stock.StorageID = bill.StorageID;
            stock.Version   = bill.Version;

            if (bill.OnlyForRepairFlag)
            {
                stock.GoodsStatus = 6;
            }

            return(stock);
        }
        /// <summary>
        /// 根据单据信息操作账务信息与库存信息
        /// </summary>
        /// <param name="dataContext">数据上下文</param>
        /// <param name="bill">单据信息</param>
        public void OpertaionDetailAndStock(DepotManagementDataContext dataContext, S_FrockInDepotBill bill)
        {
            MaterialRequisitionGoodsServer goodsService = new MaterialRequisitionGoodsServer();
            IFinancialDetailManagement     serverDetail =
                ServerModule.ServerModuleFactory.GetServerModule <IFinancialDetailManagement>();

            var result = from r in dataContext.S_FrockInDepotGoodsBill
                         where r.Bill_ID == bill.Bill_ID
                         select r;

            if (result == null || result.Count() == 0)
            {
                throw new Exception("获取单据信息失败");
            }

            foreach (var item in result)
            {
                S_InDepotDetailBill detailInfo = AssignDetailInfo(dataContext, bill, item);
                S_Stock             stockInfo  = AssignStockInfo(dataContext, bill, item);

                if (detailInfo == null || stockInfo == null)
                {
                    throw new Exception("获取账务信息或者库存信息失败");
                }

                serverDetail.ProcessInDepotDetail(dataContext, detailInfo, stockInfo);
            }
        }
Пример #8
0
        /// <summary>
        /// 定位记录
        /// </summary>
        /// <param name="stockInfo">库存信息</param>
        /// <returns>定位是否成功的标志</returns>
        bool PositioningRecord(S_Stock stockInfo)
        {
            string strColName = "";

            foreach (DataGridViewColumn col in dataGridView1.Columns)
            {
                if (col.Visible)
                {
                    strColName = col.Name;
                    break;
                }
            }

            for (int i = 0; i < dataGridView1.Rows.Count; i++)
            {
                if ((string)dataGridView1.Rows[i].Cells["图号型号"].Value == stockInfo.GoodsCode &&
                    (string)dataGridView1.Rows[i].Cells["物品名称"].Value == stockInfo.GoodsName &&
                    (string)dataGridView1.Rows[i].Cells["规格"].Value == stockInfo.Spec &&
                    (string)dataGridView1.Rows[i].Cells["供货单位"].Value == stockInfo.Provider &&
                    (string)dataGridView1.Rows[i].Cells["批次号"].Value == stockInfo.BatchNo &&
                    (string)dataGridView1.Rows[i].Cells["库房代码"].Value == stockInfo.StorageID)
                {
                    dataGridView1.FirstDisplayedScrollingRowIndex = i;
                    dataGridView1.CurrentCell = dataGridView1.Rows[i].Cells[strColName];
                    return(true);
                }
            }

            return(false);
        }
Пример #9
0
        /// <summary>
        /// 根据界面信息生成库存对象
        /// </summary>
        /// <returns>生成的库存对象</returns>
        private S_Stock CreateStockObject()
        {
            View_F_GoodsPlanCost info = m_basicGoodsServer.GetGoodsInfo(txtCode.Text, txtName.Text, txtSpec.Text, out m_error);
            S_Stock stockInfo         = new S_Stock();

            stockInfo.GoodsID         = info.序号;
            stockInfo.GoodsCode       = txtCode.Text;
            stockInfo.GoodsName       = txtName.Text;
            stockInfo.Spec            = txtSpec.Text;
            stockInfo.Provider        = txtProvider.Text;
            stockInfo.ProviderBatchNo = txtProviderBatchNo.Text;
            stockInfo.BatchNo         = txtBatchNo.Text;
            stockInfo.Version         = txtVersion.Text.Trim();
            stockInfo.ShelfArea       = txtShelf.Text.Trim().ToUpper();
            stockInfo.ColumnNumber    = txtColumn.Text.Trim().ToUpper();
            stockInfo.LayerNumber     = txtLayer.Text.Trim().ToUpper();
            stockInfo.ExistCount      = numCount.Value;
            stockInfo.Remark          = txtRemark.Text;
            stockInfo.UnitPrice       = numFactUnitPrice.Value;
            stockInfo.InputPerson     = BasicInfo.LoginID;
            stockInfo.GoodsStatus     = (int)cmbGoodsStatus.SelectedValue;
            stockInfo.StorageID       = UniversalFunction.GetStorageID(cmbStorage.Text);

            return(stockInfo);
        }
Пример #10
0
        private void btnAdd_Click(object sender, EventArgs e)
        {
            if (!CheckData())
            {
                return;
            }

            if (!UpdateBasicGoodsInfo())
            {
                return;
            }

            S_Stock stockInfo = CreateStockObject();

            if (PositioningRecord(stockInfo))
            {
                MessageDialog.ShowPromptMessage("此物品信息已经存在, 不能重复添加");
                return;
            }

            DepotManagementDataContext ctx = CommentParameter.DepotDataContext;

            m_storeServer.InStore(ctx, stockInfo, CE_SubsidiaryOperationType.未知);
            ctx.SubmitChanges();

            QueryStock();
            RefreshControl();
            PositioningRecord(stockInfo);
            chk_PT.Enabled = false;
        }
        private void btnBatchNo_Click(object sender, EventArgs e)
        {
            if (m_lnqWSCode == null)
            {
                return;
            }

            FormQueryInfo form = QueryInfoDialog.GetWorkShopBatchNoInfo(Convert.ToInt32(txtCode.Tag), m_lnqWSCode.WSCode);

            if (form.ShowDialog() == DialogResult.OK)
            {
                txtBatchNo.Text = (string)form.GetDataItem("批次号");
                txtBatchNo.Tag  = form.GetDataItem("库存数量");

                StoreQueryCondition condition = new StoreQueryCondition();

                condition.GoodsID   = Convert.ToInt32(txtCode.Tag);
                condition.BatchNo   = txtBatchNo.Text;
                condition.StorageID = m_strStorage;

                S_Stock tempStock = m_serverStock.GetStockInfo(condition);

                if (tempStock != null)
                {
                    txtProvider.Text        = tempStock.Provider;
                    txtProviderBatchNo.Text = tempStock.ProviderBatchNo;
                }
                else
                {
                    txtProvider.Text = "";
                }
            }
        }
        private void btnPrintBarCode_Click(object sender, EventArgs e)
        {
            try
            {
                if (dataGridView1.CurrentRow == null)
                {
                    throw new Exception("选择打印的条形码记录行不允许为空!");
                }

                List <View_S_InDepotGoodsBarCodeTable> lstBarCodeInfo = new List <View_S_InDepotGoodsBarCodeTable>();
                IBarCodeServer serviceBarCode = ServerModuleFactory.GetServerModule <IBarCodeServer>();

                foreach (DataGridViewRow dgvr in this.dataGridView1.SelectedRows)
                {
                    View_S_InDepotGoodsBarCodeTable barcode = new View_S_InDepotGoodsBarCodeTable();

                    QueryCondition_Store tempInfo = new QueryCondition_Store();

                    tempInfo.BatchNo   = dgvr.Cells["批次号"].Value.ToString();
                    tempInfo.GoodsID   = Convert.ToInt32(dgvr.Cells["物品ID"].Value);
                    tempInfo.Provider  = m_strProvider;
                    tempInfo.StorageID = m_strStorage;

                    S_Stock stockInfo = UniversalFunction.GetStockInfo(tempInfo);

                    View_F_GoodsPlanCost goodsInfo = UniversalFunction.GetGoodsInfo(tempInfo.GoodsID);

                    barcode.条形码 =
                        serviceBarCode.GetBarCode(stockInfo.GoodsID, stockInfo.BatchNo, stockInfo.StorageID, stockInfo.Provider);

                    barcode.图号型号   = goodsInfo.图号型号;
                    barcode.物品名称   = goodsInfo.物品名称;
                    barcode.规格     = goodsInfo.规格;
                    barcode.供货单位   = stockInfo.Provider;
                    barcode.批次号    = stockInfo.BatchNo;
                    barcode.货架     = stockInfo.ShelfArea;
                    barcode.层      = stockInfo.LayerNumber;
                    barcode.列      = stockInfo.ColumnNumber;
                    barcode.材料类别编码 = dgvr.Cells["退货数"].Value.ToString();
                    barcode.物品ID   = stockInfo.GoodsID;

                    lstBarCodeInfo.Add(barcode);
                }

                foreach (var item in lstBarCodeInfo)
                {
                    ServerModule.PrintPartBarcode.PrintBarcodeList(item, Convert.ToDecimal(item.材料类别编码));
                }

                MessageBox.Show("条码全部打印完成");
            }
            catch (Exception ex)
            {
                MessageDialog.ShowErrorMessage(ex.Message);
            }
        }
        /// <summary>
        /// 删除条形码管理表中的信息
        /// </summary>
        /// <param name="context">数据库上下文</param>
        /// <param name="stockInfo">库存信息</param>
        public void Delete(DepotManagementDataContext context, S_Stock stockInfo)
        {
            var result = from r in context.S_InDepotGoodsBarCodeTable
                         where r.GoodsID == stockInfo.GoodsID &&
                         r.Provider == stockInfo.Provider &&
                         r.BatchNo == stockInfo.BatchNo &&
                         r.StorageID == stockInfo.StorageID
                         select r;

            if (result.Count() > 0)
            {
                context.S_InDepotGoodsBarCodeTable.DeleteAllOnSubmit(result);
            }
        }
Пример #14
0
        /// <summary>
        /// 赋值库存信息
        /// </summary>
        /// <param name="ctx">数据上下文</param>
        /// <param name="lnqOutPut">单据信息</param>
        /// <param name="detail1">明细信息</param>
        /// <returns>返回库存信息对象</returns>
        S_Stock AssignStockInfo(DepotManagementDataContext ctx, Business_WarehouseInPut_InPut lnqInPut,
                                View_Business_WarehouseInPut_InPutDetail detail1)
        {
            S_Stock tempLnqStock = new S_Stock();

            tempLnqStock.GoodsID    = detail1.物品ID;
            tempLnqStock.BatchNo    = detail1.批次号;
            tempLnqStock.Date       = ServerTime.Time;
            tempLnqStock.Provider   = detail1.供应商;
            tempLnqStock.StorageID  = lnqInPut.StorageID;
            tempLnqStock.ExistCount = Convert.ToDecimal(detail1.数量);

            return(tempLnqStock);
        }
        /// <summary>
        /// 在添加库存信息时添加条形码信息
        /// </summary>
        /// <param name="context">数据库上下文</param>
        /// <param name="stockInfo">库存表的一条库存信息</param>
        public void Add(DepotManagementDataContext context, S_Stock stockInfo)
        {
            if (IsExists(context, stockInfo.GoodsID, stockInfo.StorageID, stockInfo.BatchNo, stockInfo.Provider))
            {
                return;
            }

            S_InDepotGoodsBarCodeTable lnqBarCodeInfo = new S_InDepotGoodsBarCodeTable();

            lnqBarCodeInfo.GoodsID   = (int)stockInfo.GoodsID;
            lnqBarCodeInfo.Provider  = stockInfo.Provider;
            lnqBarCodeInfo.BatchNo   = stockInfo.BatchNo;
            lnqBarCodeInfo.StorageID = stockInfo.StorageID;

            context.S_InDepotGoodsBarCodeTable.InsertOnSubmit(lnqBarCodeInfo);
        }
        /// <summary>
        /// 赋值库存信息
        /// </summary>
        /// <param name="context">数据上下文</param>
        /// <param name="bill">单据信息</param>
        /// <param name="goodsItem">明细信息</param>
        /// <returns>返回库存信息对象</returns>
        public S_Stock AssignStockInfo(DepotManagementDataContext context, S_MaterialReturnedInTheDepot bill,
                                       S_MaterialListReturnedInTheDepot goodsItem)
        {
            if (goodsItem.ShelfArea == null || goodsItem.ColumnNumber == null || goodsItem.LayerNumber == null)
            {
                throw new Exception("仓库货架、层、列等信息不能为空,请修改后重新提交");
            }

            bool blIsOnlyForRepair = false;

            var resultbill = from a in context.S_MaterialReturnedInTheDepot
                             where a.Bill_ID == bill.Bill_ID
                             select a;

            if (resultbill.Count() != 1)
            {
                throw new Exception("数据不唯一或者为空");
            }
            else
            {
                blIsOnlyForRepair = resultbill.Single().IsOnlyForRepair.ToString() == ""
                    ? false : Convert.ToBoolean(resultbill.Single().IsOnlyForRepair);
            }

            S_Stock stock = new S_Stock();

            // 添加信息到库存
            IStoreServer storeServer = ServerModuleFactory.GetServerModule <IStoreServer>();

            stock.GoodsID         = goodsItem.GoodsID;
            stock.Provider        = goodsItem.Provider;
            stock.ProviderBatchNo = goodsItem.ProviderBatchNo;
            stock.BatchNo         = goodsItem.BatchNo;
            stock.ShelfArea       = goodsItem.ShelfArea;
            stock.ColumnNumber    = goodsItem.ColumnNumber;
            stock.LayerNumber     = goodsItem.LayerNumber;
            stock.ExistCount      = (decimal)goodsItem.ReturnedAmount;
            stock.Date            = ServerModule.ServerTime.Time;
            stock.StorageID       = bill.StorageID;

            if (blIsOnlyForRepair)
            {
                stock.GoodsStatus = 6;
            }

            return(stock);
        }
Пример #17
0
        /// <summary>
        /// 赋值库存信息
        /// </summary>
        /// <param name="dataContxt">数据上下文</param>
        /// <param name="bill">单据信息</param>
        /// <param name="item">明细信息</param>
        /// <returns>返回库存信息对象</returns>
        S_Stock AssignStockInfo(DepotManagementDataContext dataContxt, S_HomemadeRejectBill bill, S_HomemadeRejectList item)
        {
            F_GoodsPlanCost info = m_basicGoodsServer.GetGoodsInfo(dataContxt, item.GoodsID);

            S_Stock stockInfo = new S_Stock();

            stockInfo.GoodsID    = info.ID;
            stockInfo.GoodsCode  = info.GoodsCode;
            stockInfo.GoodsName  = info.GoodsName;
            stockInfo.Spec       = info.Spec;
            stockInfo.Provider   = item.Provider;
            stockInfo.BatchNo    = item.BatchNo;
            stockInfo.ExistCount = item.Amount;
            stockInfo.StorageID  = bill.StorageID;

            return(stockInfo);
        }
        /// <summary>
        /// 赋值库存信息
        /// </summary>
        /// <param name="dataContext">数据上下文</param>
        /// <param name="bill">单据信息</param>
        /// <returns>返回库存信息对象</returns>
        S_Stock AssignStockInfo(DepotManagementDataContext dataContext, S_HomemadePartBill bill)
        {
            S_Stock stock = new S_Stock();

            stock.GoodsID = bill.GoodsID;

            stock.StorageID       = bill.StorageID;
            stock.ShelfArea       = bill.ShelfArea;
            stock.ColumnNumber    = bill.ColumnNumber;
            stock.LayerNumber     = bill.LayerNumber;
            stock.Provider        = bill.Provider;
            stock.ProviderBatchNo = bill.ProviderBatchNo;
            stock.BatchNo         = bill.BatchNo;
            stock.ExistCount      = bill.InDepotCount;
            stock.UnitPrice       = bill.UnitPrice;
            stock.StorageID       = bill.StorageID;

            return(stock);
        }
Пример #19
0
        /// <summary>
        /// 修改物品库存状态
        /// </summary>
        /// <param name="ctx">数据上下文</param>
        /// <param name="billInfo">单据信息</param>
        /// <param name="goodsStatus">物品状态</param>
        public void UpdateStockGoodsStatus(DepotManagementDataContext ctx, Business_QualityManagement_Isolation billInfo, int goodsStatus)
        {
            var varData = from a in ctx.S_Stock
                          where a.BatchNo == billInfo.BatchNo &&
                          a.GoodsID == billInfo.GoodsID &&
                          a.Provider == billInfo.Provider &&
                          a.StorageID == billInfo.StorageID
                          select a;

            if (varData.Count() == 1)
            {
                S_Stock tempStok = varData.Single();
                tempStok.GoodsStatus = goodsStatus;
            }
            else
            {
                throw new Exception("库存信息有误,操作失败");
            }
        }
        /// <summary>
        /// 根据单据信息操作账务信息与库存信息
        /// </summary>
        /// <param name="dataContext">数据上下文</param>
        /// <param name="bill">单据信息</param>
        public void OpertaionDetailAndStock(DepotManagementDataContext dataContext, S_HomemadePartBill bill)
        {
            IFinancialDetailManagement serverDetail =
                ServerModule.ServerModuleFactory.GetServerModule <IFinancialDetailManagement>();

            S_InDepotDetailBill detailInfo = AssignDetailInfo(dataContext, bill);
            S_Stock             stockInfo  = AssignStockInfo(dataContext, bill);

            if (detailInfo == null || stockInfo == null)
            {
                throw new Exception("获取账务信息或者库存信息失败");
            }

            if (bill.DeclareCount < bill.InDepotCount)
            {
                throw new Exception("入库数不能大于报检数");
            }

            serverDetail.ProcessInDepotDetail(dataContext, detailInfo, stockInfo);
        }
Пример #21
0
        /// <summary>
        /// 赋值库存信息
        /// </summary>
        /// <param name="dataContext">数据上下文</param>
        /// <param name="billInfo">单据信息</param>
        /// <param name="listSingle">明细信息</param>
        /// <param name="operationType">操作类型</param>
        /// <returns>返回库存信息对象</returns>
        S_Stock AssignStockInfo(DepotManagementDataContext dataContext, S_CannibalizeBill billInfo, S_CannibalizeList listSingle,
                                CE_SubsidiaryOperationType operationType)
        {
            S_Stock tempLnqStock = new S_Stock();

            tempLnqStock.GoodsID    = Convert.ToInt32(listSingle.GoodsID);
            tempLnqStock.BatchNo    = listSingle.BatchNo;
            tempLnqStock.ExistCount = (decimal)listSingle.Count;
            tempLnqStock.Date       = ServerTime.Time;
            tempLnqStock.Provider   = listSingle.Provider;
            tempLnqStock.UnitPrice  = (decimal)listSingle.UnitPrice;
            tempLnqStock.Price      = tempLnqStock.UnitPrice * tempLnqStock.ExistCount;

            if (operationType == CE_SubsidiaryOperationType.库房调出)
            {
                tempLnqStock.StorageID = billInfo.OutStoreRoom;
            }
            else if (operationType == CE_SubsidiaryOperationType.库房调入)
            {
                tempLnqStock.StorageID = billInfo.InStoreRoom;
            }
            else
            {
                throw new Exception("业务类型错误");
            }

            QueryCondition_Store store = new QueryCondition_Store();

            store.BatchNo   = tempLnqStock.BatchNo;
            store.GoodsID   = tempLnqStock.GoodsID;
            store.StorageID = billInfo.OutStoreRoom;
            store.Provider  = tempLnqStock.Provider;

            S_Stock stockInfo = UniversalFunction.GetStockInfo(dataContext, store);

            tempLnqStock.GoodsStatus = stockInfo.GoodsStatus;

            tempLnqStock.InputPerson = BasicInfo.LoginID;

            return(tempLnqStock);
        }
Пример #22
0
        /// <summary>
        /// 根据单据信息操作账务信息与库存信息
        /// </summary>
        /// <param name="dataContext">数据上下文</param>
        /// <param name="bill">单据信息</param>
        void OpertaionDetailAndStock(DepotManagementDataContext dataContext, S_HomemadeRejectBill bill)
        {
            IFinancialDetailManagement serverDetail =
                ServerModule.ServerModuleFactory.GetServerModule <IFinancialDetailManagement>();

            var result = from r in dataContext.S_HomemadeRejectList
                         where r.Bill_ID == bill.Bill_ID
                         select r;

            foreach (var item in result)
            {
                S_InDepotDetailBill detailInfo = AssignDetailInfo(dataContext, bill, item);
                S_Stock             stockInfo  = AssignStockInfo(dataContext, bill, item);

                if (detailInfo == null || stockInfo == null)
                {
                    throw new Exception("获取账务信息或者库存信息失败");
                }

                serverDetail.ProcessInDepotDetail(dataContext, detailInfo, stockInfo);
            }
        }
        /// <summary>
        /// 在更新条形码管理表中的信息
        /// </summary>
        /// <param name="context">数据库上下文</param>
        /// <param name="oldInfo">旧库存信息</param>
        /// <param name="newInfo">新库存信息</param>
        public void Update(DepotManagementDataContext context, S_Stock oldInfo, S_Stock newInfo)
        {
            if (IsExists(oldInfo.GoodsID, oldInfo.StorageID, oldInfo.BatchNo, oldInfo.Provider))
            {
                var result = from r in context.S_InDepotGoodsBarCodeTable
                             where r.GoodsID == oldInfo.GoodsID &&
                             r.Provider == oldInfo.Provider &&
                             r.BatchNo == oldInfo.BatchNo &&
                             r.StorageID == oldInfo.StorageID
                             select r;

                if (result.Count() == 1)
                {
                    S_InDepotGoodsBarCodeTable lnqBarcode = result.Single();

                    lnqBarcode.GoodsID   = (int)newInfo.GoodsID;
                    lnqBarcode.Provider  = newInfo.Provider;
                    lnqBarcode.BatchNo   = newInfo.BatchNo;
                    lnqBarcode.StorageID = newInfo.StorageID;
                }
            }
        }
Пример #24
0
        /// <summary>
        /// 根据单据信息操作账务信息与库存信息
        /// </summary>
        /// <param name="dataContext">数据上下文</param>
        /// <param name="bill">单据信息</param>
        /// <param name="operationType">操作类型</param>
        void OpertaionDetailAndStock(DepotManagementDataContext dataContext, S_CannibalizeBill bill,
                                     CE_SubsidiaryOperationType operationType)
        {
            IFinancialDetailManagement serverDetail =
                ServerModule.ServerModuleFactory.GetServerModule <IFinancialDetailManagement>();

            var result = from r in dataContext.S_CannibalizeList
                         where r.DJ_ID == bill.ID
                         select r;

            foreach (var item in result)
            {
                S_FetchGoodsDetailBill detailInfo = AssignDetailInfo(dataContext, bill, item, operationType);
                S_Stock stockInfo = AssignStockInfo(dataContext, bill, item, operationType);

                if (detailInfo == null || stockInfo == null)
                {
                    throw new Exception("获取账务信息或者库存信息失败");
                }

                serverDetail.ProcessFetchGoodsDetail(dataContext, detailInfo, stockInfo);
            }
        }
        /// <summary>
        /// 赋值库存信息
        /// </summary>
        /// <param name="dataContext">数据上下文</param>
        /// <param name="bill">单据信息</param>
        /// <param name="item">明细信息</param>
        /// <returns>返回库存信息</returns>
        public S_Stock AssignStockInfo(DepotManagementDataContext dataContext, S_OrdinaryInDepotBill bill,
                                       S_OrdinaryInDepotGoodsBill item)
        {
            S_Stock lnqStock = new S_Stock();

            lnqStock.GoodsID = item.GoodsID;

            lnqStock.ProviderBatchNo = item.ProviderBatchNo;
            lnqStock.BatchNo         = item.BatchNo;
            lnqStock.Provider        = bill.Provider;

            lnqStock.StorageID    = bill.StorageID;
            lnqStock.ShelfArea    = item.ShelfArea;
            lnqStock.ColumnNumber = item.ColumnNumber;
            lnqStock.LayerNumber  = item.LayerNumber;

            lnqStock.ExistCount = (decimal)item.Amount;

            lnqStock.UnitPrice = item.UnitPrice;
            lnqStock.Price     = 0;

            return(lnqStock);
        }
        /// <summary>
        /// 赋值库存信息
        /// </summary>
        /// <param name="ctx">数据上下文</param>
        /// <param name="bill">单据信息</param>
        /// <param name="item">明细信息</param>
        /// <returns>返回库存信息对象</returns>
        S_Stock AssignStockInfo(DepotManagementDataContext ctx, S_FrockInDepotBill bill, S_FrockInDepotGoodsBill item)
        {
            S_Stock stock = new S_Stock();

            stock.GoodsID = item.GoodsID;

            stock.Provider = CE_WorkShopCode.JJCJ.ToString();

            stock.BatchNo         = item.BatchNo;
            stock.ProviderBatchNo = "";

            stock.StorageID    = bill.StorageID;
            stock.ShelfArea    = item.ShelfArea;
            stock.ColumnNumber = item.ColumnNumber;
            stock.LayerNumber  = item.LayerNumber;

            stock.ExistCount = (decimal)item.Amount;

            stock.UnitPrice = 0;
            stock.Price     = 0;

            return(stock);
        }
Пример #27
0
        private void btnUpdate_Click(object sender, EventArgs e)
        {
            if (!CheckSelectedRow())
            {
                return;
            }

            if (!CheckData())
            {
                return;
            }

            if (!UpdateBasicGoodsInfo())
            {
                return;
            }

            S_Stock stockInfo = CreateStockObject();

            stockInfo.ID = (int)dataGridView1.CurrentRow.Cells[0].Value;

            if (stockInfo.GoodsCode != dataGridView1.CurrentRow.Cells["图号型号"].Value.ToString().Trim() ||
                stockInfo.GoodsName != dataGridView1.CurrentRow.Cells["物品名称"].Value.ToString().Trim() ||
                stockInfo.Spec != dataGridView1.CurrentRow.Cells["规格"].Value.ToString().Trim())
            {
                MessageDialog.ShowErrorMessage("不允许修改物品的图号、名称、规格信息!");
                return;
            }

            // 获取到修改行索引
            int rowIndex = dataGridView1.CurrentRow.Index;

            if (!m_storeServer.UpdateStore(stockInfo, out m_error))
            {
                MessageDialog.ShowErrorMessage(m_error);
                return;
            }

            QueryStock();
            RefreshControl();


            string strColName = "";

            foreach (DataGridViewColumn col in dataGridView1.Columns)
            {
                if (col.Visible)
                {
                    strColName = col.Name;
                    break;
                }
            }

            // 自动跳到下一行记录
            if (rowIndex != dataGridView1.Rows.Count - 1)
            {
                dataGridView1.CurrentCell = dataGridView1.Rows[rowIndex + 1].Cells[strColName];
            }

            dataGridView1.FirstDisplayedScrollingRowIndex = rowIndex;
            dataGridView1.Focus();
            chk_PT.Enabled = false;
        }
Пример #28
0
        /// <summary>
        /// 生成领料退库单
        /// </summary>
        /// <param name="context">数据上下文</param>
        /// <param name="billNo">单据号</param>
        void InsertReturnBill(DepotManagementDataContext context, string billNo)
        {
            IMaterialReturnedInTheDepot serverReturnedBill =
                ServerModule.ServerModuleFactory.GetServerModule <IMaterialReturnedInTheDepot>();


            var varList = from a in context.S_ScrapGoods
                          where a.Bill_ID == billNo &&
                          a.ResponsibilityProvider == a.Provider
                          select a;

            if (varList.Count() == 0)
            {
                return;
            }

            var varData = from a in context.S_ScrapBill
                          where a.Bill_ID == billNo
                          select a;

            if (varData.Count() == 0)
            {
                return;
            }

            S_ScrapBill bill = varData.Single();

            //操作主表
            S_MaterialReturnedInTheDepot returnBill = new S_MaterialReturnedInTheDepot();

            var data1 = from a in context.BASE_MaterialRequisitionPurpose
                        where a.Purpose == bill.ProductType &&
                        a.Code.Substring(0, 1) == "F"
                        select a;

            returnBill.Bill_ID             = m_assignBill.AssignNewNo(context, serverReturnedBill, CE_BillTypeEnum.领料退库单.ToString());
            returnBill.Bill_Time           = ServerTime.Time;
            returnBill.BillStatus          = MaterialReturnedInTheDepotBillStatus.已完成.ToString();
            returnBill.Department          = bill.DeclareDepartment;
            returnBill.ReturnType          = "其他退库";//退库类别
            returnBill.FillInPersonnel     = bill.FillInPersonnel;
            returnBill.FillInPersonnelCode = bill.FillInPersonnelCode;
            returnBill.DepartmentDirector  = bill.DepartmentDirector;
            returnBill.QualityInputer      = "";
            returnBill.DepotManager        = BasicInfo.LoginName;
            returnBill.PurposeCode         = data1.First().Code;
            returnBill.ReturnReason        = "由【报废单】:" + billNo + " 生成的报废退库";
            returnBill.Remark          = "系统自动生成";
            returnBill.StorageID       = "01";
            returnBill.ReturnMode      = "领料退库";//退库方式
            returnBill.IsOnlyForRepair = false;
            returnBill.InDepotDate     = ServerTime.Time;

            context.S_MaterialReturnedInTheDepot.InsertOnSubmit(returnBill);
            context.SubmitChanges();

            foreach (S_ScrapGoods goodsInfo in varList)
            {
                View_F_GoodsPlanCost goodsView = UniversalFunction.GetGoodsInfo(context, goodsInfo.GoodsID);

                QueryCondition_Store queryInfo = new QueryCondition_Store();

                queryInfo.BatchNo   = goodsInfo.BatchNo;
                queryInfo.GoodsID   = goodsInfo.GoodsID;
                queryInfo.StorageID = "01";

                S_Stock stockInfo = UniversalFunction.GetStockInfo(context, queryInfo);

                S_MaterialListReturnedInTheDepot detailInfo = new S_MaterialListReturnedInTheDepot();

                detailInfo.BatchNo         = goodsInfo.BatchNo;
                detailInfo.Bill_ID         = returnBill.Bill_ID;
                detailInfo.GoodsID         = goodsInfo.GoodsID;
                detailInfo.Provider        = goodsInfo.Provider;
                detailInfo.ReturnedAmount  = goodsInfo.Quantity;
                detailInfo.Depot           = goodsView.物品类别;
                detailInfo.ColumnNumber    = stockInfo == null ? "" : stockInfo.ColumnNumber;
                detailInfo.LayerNumber     = stockInfo == null ? "" : stockInfo.LayerNumber;
                detailInfo.ShelfArea       = stockInfo == null ? "" : stockInfo.ShelfArea;
                detailInfo.ProviderBatchNo = stockInfo == null ? "" : stockInfo.ProviderBatchNo;
                detailInfo.Remark          = "";

                context.S_MaterialListReturnedInTheDepot.InsertOnSubmit(detailInfo);
                context.SubmitChanges();
            }

            serverReturnedBill.OpertaionDetailAndStock(context, returnBill);
            context.SubmitChanges();
        }
Пример #29
0
        /// <summary>
        /// 生成采购退货单
        /// </summary>
        /// <param name="context">数据上下文</param>
        /// <param name="billNo">单据号</param>
        void InsertRejectBill(DepotManagementDataContext context, string billNo)
        {
            string error = null;
            IMaterialRejectBill     serverRejectBill     = ServerModule.ServerModuleFactory.GetServerModule <IMaterialRejectBill>();
            IMaterialListRejectBill serverRejectListBill = ServerModule.ServerModuleFactory.GetServerModule <IMaterialListRejectBill>();

            var varData = from a in context.S_ScrapBill
                          where a.Bill_ID == billNo
                          select a;

            if (varData.Count() == 0)
            {
                return;
            }

            S_ScrapBill   scarpBill   = varData.Single();
            List <string> lstProvider = (from a in context.S_ScrapGoods
                                         where a.Bill_ID == billNo && a.ResponsibilityProvider == a.Provider
                                         select a.Provider).Distinct().ToList();

            foreach (string provider in lstProvider)
            {
                var dataProviderWork = from a in context.ProviderPrincipal
                                       where a.Provider == provider &&
                                       a.IsMainDuty == true
                                       select a;

                View_HR_Personnel    personnelInfo = UniversalFunction.GetPersonnelInfo(context, dataProviderWork.First().PrincipalWorkId);
                S_MaterialRejectBill bill          = new S_MaterialRejectBill();

                bill.Bill_ID             = m_assignBill.AssignNewNo(context, serverRejectBill, CE_BillTypeEnum.采购退货单.ToString());
                bill.Bill_Time           = ServerTime.Time;
                bill.BillStatus          = MaterialRejectBillBillStatus.已完成.ToString();
                bill.Department          = personnelInfo.部门编码;
                bill.FillInPersonnel     = personnelInfo.姓名;
                bill.FillInPersonnelCode = personnelInfo.工号;
                bill.DepotManager        = BasicInfo.LoginName;
                bill.Provider            = provider;
                bill.Reason       = "由【报废单】:" + billNo + " 生成的报废退货";
                bill.Remark       = "系统自动生成";
                bill.BillType     = "总仓库退货单";
                bill.StorageID    = "01";
                bill.OutDepotDate = ServerTime.Time;

                context.S_MaterialRejectBill.InsertOnSubmit(bill);
                context.SubmitChanges();

                var varData2 = from a in context.S_ScrapGoods
                               where a.Provider == provider &&
                               a.Bill_ID == billNo &&
                               a.ResponsibilityProvider == a.Provider
                               select a;

                foreach (S_ScrapGoods goodsInfo in varData2)
                {
                    string orderForm = GetOrderForm(context, goodsInfo.GoodsID, goodsInfo.BatchNo, provider);

                    if (orderForm == null)
                    {
                        throw new Exception(UniversalFunction.GetGoodsMessage(context, goodsInfo.GoodsID)
                                            + " 批次号:【" + goodsInfo.BatchNo + "】  供应商:【" + provider + "】 找不到对应的【订单号】");
                    }

                    QueryCondition_Store queryInfo = new QueryCondition_Store();

                    queryInfo.BatchNo   = goodsInfo.BatchNo;
                    queryInfo.GoodsID   = goodsInfo.GoodsID;
                    queryInfo.StorageID = "01";

                    S_Stock stockInfo = UniversalFunction.GetStockInfo(context, queryInfo);

                    //插入业务明细信息
                    S_MaterialListRejectBill goods = new S_MaterialListRejectBill();

                    goods.Bill_ID         = bill.Bill_ID;
                    goods.GoodsID         = goodsInfo.GoodsID;
                    goods.Provider        = provider;
                    goods.ProviderBatchNo = stockInfo == null ? "" : stockInfo.ProviderBatchNo;
                    goods.BatchNo         = goodsInfo.BatchNo;
                    goods.Amount          = (decimal)goodsInfo.Quantity;
                    goods.Remark          = "";
                    goods.AssociateID     = orderForm;

                    if (!serverRejectListBill.SetPriceInfo(goods.AssociateID, goods, bill.StorageID, out error))
                    {
                        throw new Exception(error);
                    }

                    context.S_MaterialListRejectBill.InsertOnSubmit(goods);
                    context.SubmitChanges();
                }

                serverRejectBill.OpertaionDetailAndStock(context, bill);
                context.SubmitChanges();
            }
        }
Пример #30
0
        /// <summary>
        /// 结束业务
        /// </summary>
        /// <param name="billNo">业务编号</param>
        public void FinishBill(string billNo)
        {
            IFlowServer serviceFlow = FlowControlService.ServerModuleFactory.GetServerModule <IFlowServer>();

            Flow_FlowInfo flowInfo =
                _serviceFlow.GetNowFlowInfo(_serviceFlow.GetBusinessTypeID(CE_BillTypeEnum.合格品隔离处置单, null), billNo);

            if (flowInfo == null)
            {
                throw new Exception("单据状态为空,请重新确认");
            }

            DepotManagementDataContext ctx = CommentParameter.DepotDataContext;

            ctx.Connection.Open();
            ctx.Transaction = ctx.Connection.BeginTransaction();

            try
            {
                Business_QualityManagement_Isolation billInfo = GetSingleBillInfo(billNo);

                if (billInfo == null || billInfo.BillNo.Length == 0)
                {
                    throw new Exception("此单据不存在");
                }

                switch (flowInfo.FlowID)
                {
                case 57:
                    UpdateStockGoodsStatus(ctx, billInfo, (int)CE_StockGoodsStatus.隔离);
                    break;

                case 59:
                    if (billInfo.QC_ScraptCount != null && billInfo.QC_ScraptCount > 0)
                    {
                        InsertIntoMaterialRequisition(ctx, billInfo);
                    }

                    if ((decimal)billInfo.QC_QualifiedCount == billInfo.GoodsCount)
                    {
                        UpdateStockGoodsStatus(ctx, billInfo, (int)CE_StockGoodsStatus.正常);
                    }

                    break;

                case 60:

                    QueryCondition_Store stockQuery = new QueryCondition_Store();

                    stockQuery.BatchNo   = billInfo.BatchNo;
                    stockQuery.GoodsID   = billInfo.GoodsID;
                    stockQuery.StorageID = billInfo.StorageID;
                    stockQuery.Provider  = billInfo.Provider;

                    S_Stock stockInfo = UniversalFunction.GetStockInfo(ctx, stockQuery);

                    if (stockInfo == null)
                    {
                        throw new Exception("获取库存信息失败");
                    }

                    if (billInfo.QC_ConcessionCount == null || billInfo.QC_QualifiedCount == null)
                    {
                        if (stockInfo.ExistCount != billInfo.PH_QualifiedCount)
                        {
                            throw new Exception("此物品的当前库存为【" + stockInfo.ExistCount + "】不等于【处理人】的【合格数】," +
                                                "请根据处理方式要求采购员开【领料单】或者【采购退货单】减库存");
                        }
                    }
                    else
                    {
                        if (stockInfo.ExistCount != billInfo.QC_ConcessionCount + billInfo.QC_QualifiedCount)
                        {
                            throw new Exception("此物品的当前库存为【" + stockInfo.ExistCount + "】不等于【QC】的【让步数】+【合格数】," +
                                                "请根据处理方式要求采购员开【领料单】或者【采购退货单】减库存");
                        }
                    }

                    UpdateStockGoodsStatus(ctx, billInfo, (int)CE_StockGoodsStatus.正常);
                    break;

                default:
                    break;
                }

                ctx.SubmitChanges();
                ctx.Transaction.Commit();
            }
            catch (Exception ex)
            {
                ctx.Transaction.Rollback();
                throw new Exception(ex.Message);
            }
        }