Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        /// <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);
        }