/// <summary> /// 更新收料单状态 /// </summary> /// <param name="sReceiveID">主键</param> /// <param name="state">目标状态</param> /// <returns></returns> public string UpdateReceiveState(string sReceiveID, ApproveState state) { int iState = Convert.ToInt32(state); string sErrorMsg = string.Empty; string sUpdateSql = "UPDATE WH_Receive SET Status = " + iState.ToString() + " WHERE ReceiveID = '" + sReceiveID + "' "; sErrorMsg = this.BaseDataAccess.ExecuteDMLSQL(sUpdateSql); if (sErrorMsg.Length == 0) { switch (state) { case ApproveState.State_Approved: { string[] sParams = { "ReceiveID" }; object[] objParamValues = { sReceiveID }; SqlDbType[] paramTypes = { SqlDbType.NVarChar }; bool bRetVal = this.BaseDataAccess.ExecuteSP("spUpdatePOMaterialANDOperateStoreMaterialDetail", sParams, objParamValues, paramTypes); if (bRetVal == false) { sErrorMsg = "OperateStoreFailed"; } // 写入财务接口 string sSelectSql = @"SELECT WHID,ItemCode,BINID,ReceiveNo,CreateBy,FactReceivedQuantity,UnitPriceStandard FROM WH_ReceiveMaterial INNER JOIN WH_Receive ON WH_ReceiveMaterial.ReceiveID = WH_Receive.ReceiveID WHERE WH_Receive.ReceiveID = '" + sReceiveID + "'"; DataTable dtReceiveMaterial = this.BaseDataAccess.GetDataTable(sSelectSql); foreach (DataRow dr in dtReceiveMaterial.Rows) { // 财务接口处理类 CInterfaceOfFinanceAccess pInterfaceOfFinanceAccess = new CInterfaceOfFinanceAccess(); // 财务接口实体 CInterfaceOfFinance pInterfaceOfFinance = new CInterfaceOfFinance(); pInterfaceOfFinance.Location = dr["WHID"].ToString(); pInterfaceOfFinance.ItemCode = dr["ItemCode"].ToString(); pInterfaceOfFinance.BinNo = dr["BINID"].ToString(); pInterfaceOfFinance.BillNo = dr["ReceiveNo"].ToString(); pInterfaceOfFinance.Operater = dr["CreateBy"].ToString(); pInterfaceOfFinance.Quantity = decimal.Parse(dr["FactReceivedQuantity"].ToString()); pInterfaceOfFinance.UnitPriceStandard = decimal.Parse(dr["UnitPriceStandard"].ToString()); pInterfaceOfFinance.OperationDirection = DIRECTIONTYPE.TYPE_IN; pInterfaceOfFinance.OperationType = pInterfaceOfFinanceAccess.GetBillType(BILLTYPE.TYPE_Receive); pInterfaceOfFinanceAccess.OperateInterface(pInterfaceOfFinance); } // =========================================== // // Modified By Liujun at 20081230 // 更新本次收料相关PO所有的 收料记录中的汇率,并且对更新后单价相同项进行合并 // #region 更新汇率 // DAEInStoreMaterialDetail dataEntity = new DAEInStoreMaterialDetail(); // string UpdateSql = @"UPDATE WH_Receive SET TotalPriceStandardlER = (SELECT TotalPriceStandardlER FROM WH_Receive WHERE ReceiveID = '" + sReceiveID + "') WHERE POID IN (SELECT POID FROM WH_Receive WHERE ReceiveID = '" + sReceiveID + "')"; // sErrorMsg = dataEntity.BaseDataAccess.ExecuteDMLSQL(UpdateSql); // if (sErrorMsg.Length == 0) // { // UpdateSql = "UPDATE WH_Receive SET TotalPriceStandarCUR = TotalPriceStandardlER * TotalPrice WHERE POID IN (SELECT POID FROM WH_Receive WHERE ReceiveID = '" + sReceiveID + "')"; // sErrorMsg = dataEntity.BaseDataAccess.ExecuteDMLSQL(UpdateSql); // } // if (sErrorMsg.Length == 0) // { // UpdateSql = @"UPDATE WH_ReceiveMaterial SET UnitPriceStandard = WH_Receive.TotalPriceStandardlER * UnitPrice // FROM WH_ReceiveMaterial INNER JOIN WH_Receive ON WH_Receive.ReceiveID = WH_ReceiveMaterial.ReceiveID // WHERE POID IN (SELECT POID FROM WH_Receive WHERE ReceiveID = '" + sReceiveID + "')"; // sErrorMsg = dataEntity.BaseDataAccess.ExecuteDMLSQL(UpdateSql); // } // if (sErrorMsg.Length == 0) // { // UpdateSql = @"UPDATE WH_InStoreMaterialDetail SET WH_InStoreMaterialDetail.UnitPricePOStandard = WH_ReceiveMaterial.UnitPriceStandard // FROM WH_InStoreMaterialDetail INNER JOIN WH_ReceiveMaterial ON WH_ReceiveMaterial.ItemCode = WH_InStoreMaterialDetail.ItemCode // INNER JOIN WH_Receive ON WH_Receive.ReceiveID = WH_ReceiveMaterial.ReceiveID AND WH_Receive.POID = WH_InStoreMaterialDetail.POID // WHERE WH_Receive.POID IN (SELECT POID FROM WH_Receive WHERE ReceiveID = '" + sReceiveID + "')"; // sErrorMsg = dataEntity.BaseDataAccess.ExecuteDMLSQL(UpdateSql); // } // // ============================================================= // // // Modified By Liujun at 20081228 // // 根据 Warehouse+ItemCode+PO+BinNo+UnitPrice 进行数量合并 // // 根据PO选出所有库存物资 // string SelectSql = "SELECT * FROM WH_InStoreMaterialDetail WHERE POID IN (SELECT POID FROM WH_Receive WHERE ReceiveID = '" + sReceiveID + "') ORDER BY ReceiveDate"; // DataTable dtPOInWarehouse = dataEntity.BaseDataAccess.GetDataTable(SelectSql); // // 待删除列表 放置 InStockMaterialID // System.Collections.ArrayList list = new System.Collections.ArrayList(); // for (int i = dtPOInWarehouse.Rows.Count - 1; i >= 0; i--) // { // for (int j = i - 1; j >= 0; j--) // { // if (dtPOInWarehouse.Rows[i]["WHID"].ToString() == dtPOInWarehouse.Rows[j]["WHID"].ToString() // && dtPOInWarehouse.Rows[i]["ItemCode"].ToString() == dtPOInWarehouse.Rows[j]["ItemCode"].ToString() // && dtPOInWarehouse.Rows[i]["POID"].ToString() == dtPOInWarehouse.Rows[j]["POID"].ToString() // && dtPOInWarehouse.Rows[i]["BinID"].ToString() == dtPOInWarehouse.Rows[j]["BinID"].ToString() // && dtPOInWarehouse.Rows[i]["UnitPricePOStandard"].ToString() == dtPOInWarehouse.Rows[j]["UnitPricePOStandard"].ToString()) // { // dtPOInWarehouse.Rows[j]["QuantityInBin"] = decimal.Parse(dtPOInWarehouse.Rows[i]["QuantityInBin"].ToString()) + decimal.Parse(dtPOInWarehouse.Rows[j]["QuantityInBin"].ToString()); // // 分别对比较行与被比较行修改临时状态 // dtPOInWarehouse.Rows[j]["Status"] = 1; // // 放入删除列表中 // list.Add(dtPOInWarehouse.Rows[i]["InStockMaterialID"].ToString()); // // 在内存数据表中删除 // dtPOInWarehouse.Rows.RemoveAt(i); // break; // } // } // } // // 更新数据 // foreach (DataRow dr in dtPOInWarehouse.Rows) // { // if (dr["Status"].ToString() == "1") // { // UpdateSql = "UPDATE WH_InStoreMaterialDetail SET QuantityInBin = " + dr["QuantityInBin"].ToString() + " WHERE InStockMaterialID ='" + dr["InStockMaterialID"].ToString() + "'"; // sErrorMsg = dataEntity.BaseDataAccess.ExecuteDMLSQL(UpdateSql); // } // } // // 删除数据(数量变为0) // string DeleteSql = string.Empty; // foreach (string str in list) // { // //DeleteSql = "UPDATE WH_InStoreMaterialDetail SET QuantityInBin = 0 WHERE InStockMaterialID ='" + str + "'"; // DeleteSql = "DELETE FROM WH_InStoreMaterialDetail WHERE InStockMaterialID ='" + str + "'"; // sErrorMsg = dataEntity.BaseDataAccess.ExecuteDMLSQL(DeleteSql); // } // #endregion // // =========================================== // // // =========================================== // // // Modified By Liujun at 20030315 // // 更新本次收料相关PO的物资Remark。 // UpdateSql = @"UPDATE POMaterial // // SET POMaterial.Remark = WH_ReceiveMaterial.Comment // // FROM POMaterial INNER JOIN WH_Receive ON POMaterial.POID = WH_Receive.POID // INNER JOIN WH_ReceiveMaterial ON WH_Receive.ReceiveID = WH_ReceiveMaterial.ReceiveID // AND WH_ReceiveMaterial.ItemCode = POMaterial.ItemCode // WHERE WH_Receive.ReceiveID = '" + sReceiveID + "' AND WH_ReceiveMaterial.Comment <> ''"; // sErrorMsg = dataEntity.BaseDataAccess.ExecuteDMLSQL(UpdateSql); // // =========================================== // break; } } } return(sErrorMsg); }
/// <summary> /// 更新直达收料单状态 /// </summary> /// <param name="sReceiveID">主键</param> /// <param name="state">目标状态</param> /// <returns></returns> public string UpdateDirectState(string sIssueID, ApproveState state) { int iState = Convert.ToInt32(state); string sErrorMsg = string.Empty; string sUpdateSql = "UPDATE WH_Receive SET Status = " + iState.ToString() + " WHERE ReceiveID = '" + sIssueID + "' "; sErrorMsg = this.BaseDataAccess.ExecuteDMLSQL(sUpdateSql); sUpdateSql = "UPDATE WH_Issue SET Status = " + iState.ToString() + " WHERE IssueID = '" + sIssueID + "' "; sErrorMsg = this.BaseDataAccess.ExecuteDMLSQL(sUpdateSql); switch (state) { case ApproveState.State_Approved: { // 收料更新(库存,入库) string[] sParams = { "ReceiveID" }; object[] objParamValues = { sIssueID }; SqlDbType[] paramTypes = { SqlDbType.NVarChar }; bool bRetVal = this.BaseDataAccess.ExecuteSP("spUpdatePOMaterialANDOperateStoreMaterialDetail", sParams, objParamValues, paramTypes); if (bRetVal == false) { sErrorMsg = "OperateStoreFailed"; } string sSql = "SELECT a.* , b.WHID,b.POID,b.ReceiveNo,b.CreateBy FROM WH_ReceiveMaterial a left join WH_Receive b on a.ReceiveID = b.ReceiveID WHERE a.ReceiveID = '" + sIssueID + "'"; DataTable dtReceiveMaterial = this.BaseDataAccess.GetDataTable(sSql); CInStoreMaterialDetailAccess pInStoreMaterialDetailAccess = new CInStoreMaterialDetailAccess(); // 财务接口处理类 CInterfaceOfFinanceAccess pInterfaceOfFinanceAccess = new CInterfaceOfFinanceAccess(); foreach (DataRow drReceiveMaterial in dtReceiveMaterial.Rows) { // 财务接口实体 CInterfaceOfFinance pInStoreInterfaceOfFinance = new CInterfaceOfFinance(); pInStoreInterfaceOfFinance.Location = drReceiveMaterial["WHID"].ToString(); pInStoreInterfaceOfFinance.ItemCode = drReceiveMaterial["ItemCode"].ToString(); pInStoreInterfaceOfFinance.BinNo = drReceiveMaterial["BINID"].ToString(); pInStoreInterfaceOfFinance.BillNo = drReceiveMaterial["ReceiveNo"].ToString(); pInStoreInterfaceOfFinance.Operater = drReceiveMaterial["CreateBy"].ToString(); pInStoreInterfaceOfFinance.Quantity = decimal.Parse(drReceiveMaterial["FactReceivedQuantity"].ToString()); pInStoreInterfaceOfFinance.UnitPriceStandard = decimal.Parse(drReceiveMaterial["UnitPriceStandard"].ToString()); pInStoreInterfaceOfFinance.OperationDirection = DIRECTIONTYPE.TYPE_IN; pInStoreInterfaceOfFinance.OperationType = pInterfaceOfFinanceAccess.GetBillType(BILLTYPE.TYPE_Receive); pInterfaceOfFinanceAccess.OperateInterface(pInStoreInterfaceOfFinance); // 出库 CInStoreMaterialDetail pOutStore = new CInStoreMaterialDetail(); pOutStore.StoreOperateType = STOREOPERATETYPE.TYPE_OUT; pOutStore.OperateHistory = true; pOutStore.BINID = drReceiveMaterial["BINID"].ToString(); pOutStore.ItemCode = drReceiveMaterial["ItemCode"].ToString(); pOutStore.POID = drReceiveMaterial["POID"].ToString(); pOutStore.WHID = drReceiveMaterial["WHID"].ToString(); pOutStore.UnitPricePONatural = Decimal.Parse(drReceiveMaterial["UnitPriceNatural"].ToString()); pOutStore.UnitPricePOStandard = Decimal.Parse(drReceiveMaterial["UnitPriceStandard"].ToString()); pOutStore.QuantityInBinSet = Decimal.Parse(drReceiveMaterial["FactReceivedQuantity"].ToString()); pInStoreMaterialDetailAccess.OperateStore(pOutStore); // 财务接口实体 CInterfaceOfFinance pOutStoreInterfaceOfFinance = new CInterfaceOfFinance(); pOutStoreInterfaceOfFinance.Location = drReceiveMaterial["WHID"].ToString(); pOutStoreInterfaceOfFinance.ItemCode = drReceiveMaterial["ItemCode"].ToString(); pOutStoreInterfaceOfFinance.BinNo = drReceiveMaterial["BINID"].ToString(); pOutStoreInterfaceOfFinance.BillNo = drReceiveMaterial["ReceiveNo"].ToString(); pOutStoreInterfaceOfFinance.Operater = drReceiveMaterial["CreateBy"].ToString(); pOutStoreInterfaceOfFinance.Quantity = decimal.Parse(drReceiveMaterial["FactReceivedQuantity"].ToString()); pOutStoreInterfaceOfFinance.UnitPriceStandard = decimal.Parse(drReceiveMaterial["UnitPriceStandard"].ToString()); pOutStoreInterfaceOfFinance.OperationDirection = DIRECTIONTYPE.TYPE_OUT; pOutStoreInterfaceOfFinance.OperationType = pInterfaceOfFinanceAccess.GetBillType(BILLTYPE.TYPE_Issue); pInterfaceOfFinanceAccess.OperateInterface(pOutStoreInterfaceOfFinance); } break; } } return(sErrorMsg); }