コード例 #1
0
        private void CZ_FB_GetParam(CZ_FB_EnFBObject _fbo, ref string _FValueSource, ref string _ObjMstIDSch, ref string _ObjAcctWhile)
        {
            switch (_fbo.ToString())
            {
            case "BD_Customer":
                _FValueSource = "BD_Customer";
                _ObjAcctWhile = " and a.FNumber in('1221.03') ";      //客户  取科目1221.03,借+贷-
                _ObjMstIDSch  = "select FMasterID FObjMID from t_BD_Customer where FCUSTID=#objID# ";
                break;

            case "BD_Department":
                _FValueSource = "BD_Department";
                _ObjAcctWhile = "";
                _ObjMstIDSch  = "select FMasterID FObjMID from t_BD_Department where FDeptID=#objID# ";
                break;

            case "BD_Empinfo":
                _FValueSource = "BD_Empinfo";
                _ObjAcctWhile = " and a.FNumber in('1221.01') ";       //员工 取科目1221.01,借+贷-
                _ObjMstIDSch  = "select FMasterID FObjMID from t_Hr_Empinfo where FID=#objID# ";
                break;

            case "BD_Supplier":
                _FValueSource = "BD_Supplier";
                _ObjAcctWhile = " and a.FNumber in('2202.01','2241.01') ";         //供应商 取科目2202.01及2241.01,按余额进行合并后借+贷-
                _ObjMstIDSch  = "select FMasterID FObjMID from t_BD_Supplier where FSupplierID=#objID# ";
                break;

            case "ORG_Organizations":
                _FValueSource = "ORG_Organizations";
                _ObjAcctWhile = "";
                _ObjMstIDSch  = "select FOrgID FObjMID from t_ORG_Organizations where FOrgID=#objID# ";
                break;

            case "CN_BANKACNT":
                _FValueSource = "CN_BANKACNT";
                _ObjAcctWhile = "";
                _ObjMstIDSch  = "select FMasterID FObjMID from t_CN_BANKACNT where FBankAcntID=#objID# ";
                break;

            default:
                break;
            }
        }
コード例 #2
0
        private string CZ_FB_GetObjBalDetail(CZ_FB_EnFBObject _fbo, string _FObjID)
        {
            if (_FObjID == "" || _FObjID == "0")
            {
                return("warning:未传入有效的查询对象ID");
            }



            string _FValueSource = "";  //t_bd_FlexItemProperty:FValueSource
            string _ObjMstIDSch  = "";  //查询对象表主键FMasterID的语句
            string _ObjAcctWhile = "";  //对象查询科目定义 如果为空 不拼入查询语句 [每个公司需求不同]
            string _FFlexNumber  = "";  //t_bd_FlexItemProperty:FFLexNumber,应用于t_bd_FlexItemDetailV的列名

            CZ_FB_GetParam(_fbo, ref _FValueSource, ref _ObjMstIDSch, ref _ObjAcctWhile);
            _ObjMstIDSch = _ObjMstIDSch.Replace("#objID#", _FObjID);

            #region step 01:获取 t_bd_FlexItemProperty-FFLexNumber
            string    _sqlGetFFlex = "select FValueSource,FFLexNumber from t_bd_FlexItemProperty where FValueSource='" + _FValueSource + "'";
            DataTable _dtFFlex     = new DataTable();
            try
            {
                _dtFFlex = DBUtils.ExecuteDataSet(this.Context, _sqlGetFFlex).Tables[0];
            }
            catch (Exception _ex)
            {
                return("Err:获取FFlexNumber时发生错误 ErrMsg:" + _ex.Message);
            }
            if (_dtFFlex.Rows.Count == 0)
            {
                return("warning:t_bd_FlexItemProperty 未设置核算对象");
            }
            _FFlexNumber = _dtFFlex.Rows[0]["FFLexNumber"].ToString();
            #endregion


            #region step 02:获取往来余额
            StringBuilder _sb = new StringBuilder();

            //T_GL_BALANCE 为往来余额
            //T_GL_VOUCHER 为凭证

            switch (_fbo.ToString())
            {
            case "BD_Empinfo":     //员工

                _sb.Append("/*dialect*/ ");
                _sb.Append("select i.FORGID,ab.FBookID,sy.FValue FCBYear,sp.FValue FCBPeriod, ");
                _sb.Append("convert(datetime,CONVERT(varchar,sy.FValue)+'-'+CONVERT(varchar,sp.FValue)+'-01')FBegDate ");
                _sb.Append("into #aco from T_ORG_Organizations i inner join t_bd_AccountBook ab on i.FOrgID=ab.FAccountOrgID ");
                _sb.Append("inner join T_BAS_SystemProFile sy on ab.FBOOKID=sy.FAccountBookID and sy.FCategory='GL' and sy.FKEY='CurrentYear' ");
                _sb.Append("inner join T_BAS_SystemProFile sp on ab.FBOOKID=sp.FAccountBookID and sp.FCategory='GL' and sp.FKEY='CurrentPeriod';");
                _sb.Append("select b.FBeginBalance FGOBAmt,aco.FOrgID FOrgID,SUBSTRING(CONVERT(varchar(100), a.FMODIFYDATE, 120  ),1,10) Date,'' fexplanation,'B' mType from(" + _ObjMstIDSch + ")o1 ");
                _sb.Append("inner join t_bd_FlexItemDetailV f on o1.FObjMID=f." + _FFlexNumber + " inner join #aco aco on 1=1 ");
                _sb.Append("inner join T_GL_BALANCE b on f.FID=b.FDetailID and aco.FBOOKID=b.FACCOUNTBOOKID and aco.FCBYear=b.FYEAR and aco.FCBPeriod=b.FPeriod and b.FCURRENCYID=0 ");
                _sb.Append("inner join T_BD_ACCOUNT a on b.FACCOUNTID=a.FACCTID ");
                _sb.Append("where aco.FOrgID like('%') " + _ObjAcctWhile + " union all ");
                _sb.Append("select ve.FDC*ve.FAmount FGOBAmt,aco.FOrgID FOrgID,SUBSTRING(CONVERT(varchar(100), v.FDATE, 120  ),1,10) Date,ve.fexplanation,'R' mType from(" + _ObjMstIDSch + ")o1 ");
                _sb.Append("inner join t_bd_FlexItemDetailV f on o1.FObjMID=f." + _FFlexNumber + " inner join #aco aco on 1=1 ");
                _sb.Append("inner join T_GL_VOUCHER v on aco.FBookID=v.FAccountBookID and v.FInvalid=0 ");
                _sb.Append("inner join T_GL_VOUCHERENTRY ve on v.FVoucherID=ve.FVoucherID and f.FID=ve.FDetailID ");
                _sb.Append("inner join T_BD_ACCOUNT a on ve.FAccountID=a.FACCTID ");
                _sb.Append("where aco.FOrgID like('%') " + _ObjAcctWhile + " order by mType,Date ");

                break;

            default:        //供应商或者客户

                _sb.Append("/*dialect*/ ");
                _sb.Append("select i.FORGID,ab.FBookID,sy.FValue FCBYear,sp.FValue FCBPeriod, ");
                _sb.Append("convert(datetime,CONVERT(varchar,sy.FValue)+'-'+CONVERT(varchar,sp.FValue)+'-01')FBegDate ");
                _sb.Append("into #aco from T_ORG_Organizations i inner join t_bd_AccountBook ab on i.FOrgID=ab.FAccountOrgID ");
                _sb.Append("inner join T_BAS_SystemProFile sy on ab.FBOOKID=sy.FAccountBookID and sy.FCategory='GL' and sy.FKEY='CurrentYear' ");
                _sb.Append("inner join T_BAS_SystemProFile sp on ab.FBOOKID=sp.FAccountBookID and sp.FCategory='GL' and sp.FKEY='CurrentPeriod';");
                _sb.Append("select b.FBeginBalance FGOBAmt,aco.FOrgID FOrgID from(" + _ObjMstIDSch + ")o1 ");
                _sb.Append("inner join t_bd_FlexItemDetailV f on o1.FObjMID=f." + _FFlexNumber + " inner join #aco aco on 1=1 ");
                _sb.Append("inner join T_GL_BALANCE b on f.FID=b.FDetailID and aco.FBOOKID=b.FACCOUNTBOOKID and aco.FCBYear=b.FYEAR and aco.FCBPeriod=b.FPeriod and b.FCURRENCYID=0 ");
                _sb.Append("inner join T_BD_ACCOUNT a on b.FACCOUNTID=a.FACCTID ");
                _sb.Append("where aco.FOrgID like('%') " + _ObjAcctWhile + " union all ");
                _sb.Append("select ve.FDC*ve.FAmount FGOBAmt,aco.FOrgID FOrgID from(" + _ObjMstIDSch + ")o1 ");
                _sb.Append("inner join t_bd_FlexItemDetailV f on o1.FObjMID=f." + _FFlexNumber + " inner join #aco aco on 1=1 ");
                _sb.Append("inner join T_GL_VOUCHER v on aco.FBookID=v.FAccountBookID and aco.FBegDate<=v.FBusDate and v.FInvalid=0 ");
                _sb.Append("inner join T_GL_VOUCHERENTRY ve on v.FVoucherID=ve.FVoucherID and f.FID=ve.FDetailID ");
                _sb.Append("inner join T_BD_ACCOUNT a on ve.FAccountID=a.FACCTID ");
                _sb.Append("where aco.FOrgID like('%') " + _ObjAcctWhile);

                break;
            }


            string _sqlGetFOBAmt = _sb.ToString();
            try
            {
                var objs = DBUtils.ExecuteDynamicObject(this.Context, _sqlGetFOBAmt);

                //按照工廠拆分
                List <DynamicObject> dList2100 = objs.Where(d => d["FOrgID"].ToString().Equals("156140")).ToList();
                List <DynamicObject> dList2200 = objs.Where(d => d["FOrgID"].ToString().Equals("156141")).ToList();
                List <DynamicObject> dList2300 = objs.Where(d => d["FOrgID"].ToString().Equals("156142")).ToList();
                List <DynamicObject> dList2600 = objs.Where(d => d["FOrgID"].ToString().Equals("293065")).ToList();
                List <DynamicObject> dList2700 = objs.Where(d => d["FOrgID"].ToString().Equals("293066")).ToList();
                List <DynamicObject> dList2800 = objs.Where(d => d["FOrgID"].ToString().Equals("156139")).ToList();
                List <DynamicObject> dList2900 = objs.Where(d => d["FOrgID"].ToString().Equals("293067")).ToList();
                List <DynamicObject> dList3000 = objs.Where(d => d["FOrgID"].ToString().Equals("293070")).ToList();


                switch (_fbo.ToString())
                {
                case "BD_Empinfo":     //员工

                    setRowValue(dList2100, "2100");
                    setRowValue(dList2200, "2200");
                    setRowValue(dList2300, "2300");
                    setRowValue(dList2600, "2600");
                    setRowValue(dList2700, "2700");
                    setRowValue(dList2800, "2800");
                    setRowValue(dList2900, "2900");
                    setRowValue(dList3000, "3000");

                    break;

                default:        //供应商或者客户

                    setCompValue(dList2100, "2100");
                    setCompValue(dList2200, "2200");
                    setCompValue(dList2300, "2300");
                    setCompValue(dList2600, "2600");
                    setCompValue(dList2700, "2700");
                    setCompValue(dList2800, "2800");
                    setCompValue(dList2900, "2900");
                    setCompValue(dList3000, "3000");

                    break;
                }
            }
            catch (Exception _ex)
            {
                this.View.ShowErrMessage(_ex.Message, "获取往来余额时发生错误");
                return("Err:获取往来余额时发生错误 ErrMsg:" + _ex.Message);
            }

            return("success");

            #endregion
        }
コード例 #3
0
        /// <summary>
        /// FinBal_财务方法 获取指定对象 往来余额 [期初往来余额+本期凭证]
        /// </summary>
        /// <param name="_fbo">枚举类型 CZ_FB_EnFBObject 对象</param>
        /// <param name="_FObjID">对象的ID</param>
        /// <param name="_FAcctOrgID">指定组织ID 全部组织='%' or ''</param>
        /// <param name="_FAcctID">指定科目ID 全科目='%' | ''=使用预设置的科目条件 | id=指定科目ID</param>
        /// <param name="_backAmt">往来余额 取得后按实际需求调整显示</param>
        /// <returns>方法值行结果备注 用于未取得金额分析</returns>
        private string CZ_FB_GetObjBal(CZ_FB_EnFBObject _fbo, string _FObjID, string _FAcctOrgID, string _FAcctID, ref double _backAmt)
        {
            if (_FObjID == "" || _FObjID == "0")
            {
                _backAmt = 0;
                return("warning:未传入有效的查询对象ID");
            }

            string _FValueSource = "";  //t_bd_FlexItemProperty:FValueSource
            string _ObjMstIDSch  = "";  //查询对象表主键FMasterID的语句
            string _ObjAcctWhile = "";  //对象查询科目定义 如果为空 不拼入查询语句 [每个公司需求不同]
            string _FFlexNumber  = "";  //t_bd_FlexItemProperty:FFLexNumber,应用于t_bd_FlexItemDetailV的列名

            CZ_FB_GetParam(_fbo, ref _FValueSource, ref _ObjMstIDSch, ref _ObjAcctWhile);
            _ObjMstIDSch = _ObjMstIDSch.Replace("#objID#", _FObjID);

            #region step 01:获取 t_bd_FlexItemProperty-FFLexNumber
            string    _sqlGetFFlex = "select FValueSource,FFLexNumber from t_bd_FlexItemProperty where FValueSource='" + _FValueSource + "'";
            DataTable _dtFFlex     = new DataTable();
            try
            {
                _dtFFlex = DBUtils.ExecuteDataSet(this.Context, _sqlGetFFlex).Tables[0];
            }
            catch (Exception _ex)
            {
                _backAmt = 0;
                return("Err:获取FFlexNumber时发生错误 ErrMsg:" + _ex.Message);
                //this.View.ShowErrMessage(_ex.Message + " SQL:" + _sqlGetFFlex, "获取FFlexNumber时发生错误");
            }
            if (_dtFFlex.Rows.Count == 0)
            {
                _backAmt = 0;
                return("warning:t_bd_FlexItemProperty 未设置核算对象");
            }
            _FFlexNumber = _dtFFlex.Rows[0]["FFLexNumber"].ToString();
            #endregion

            #region 原始语句

            /*
             * select i.FORGID,ab.FBookID,sy.FValue FCBYear,sp.FValue FCBPeriod,
             * convert(datetime,CONVERT(varchar,sy.FValue)+'-'+CONVERT(varchar,sp.FValue)+'-01')FBegDate
             * into #aco from T_ORG_Organizations i
             * inner join t_bd_AccountBook ab on i.FOrgID=ab.FAccountOrgID
             * inner join T_BAS_SystemProFile sy on ab.FBOOKID=sy.FAccountBookID and sy.FCategory='GL' and sy.FKEY='CurrentYear'
             * inner join T_BAS_SystemProFile sp on ab.FBOOKID=sp.FAccountBookID and sp.FCategory='GL' and sp.FKEY='CurrentPeriod';
             *
             * select sum(FGOBAmt)FGOBAmt
             * from(
             * --select o1.FObjMID,aco.FOrgID,aco.FBookID,aco.FCBYear,aco.FCBPeriod,b.FDetailID,b.FAccountID,b.FBeginBalance,a.FNUMBER
             * select b.FBeginBalance FGOBAmt
             * from(select FMasterID FObjMID from t_bd_Supplier where FSupplierID=315438)o1
             * inner join t_bd_FlexItemDetailV f on o1.FObjMID=f.FFLEX4
             * inner join #aco aco on 1=1
             * inner join T_GL_BALANCE b on f.FID=b.FDetailID and aco.FBOOKID=b.FACCOUNTBOOKID and aco.FCBYear=b.FYEAR and aco.FCBPeriod=b.FPeriod and b.FCURRENCYID=0
             * inner join T_BD_ACCOUNT a on b.FACCOUNTID=a.FACCTID
             * where aco.FOrgID like('%') and a.FAcctID like('%')
             * union all
             * --select o1.FObjMID,aco.*,ve.FAccountID,ve.FDC*ve.FAmount FVeAmount
             * select ve.FDC*ve.FAmount FGOBAmt
             * from(select FMasterID FObjMID from t_bd_Supplier where FSupplierID=837574)o1
             * inner join t_bd_FlexItemDetailV f on o1.FObjMID=f.FFLEX4
             * inner join #aco aco on 1=1
             * inner join T_GL_VOUCHER v on aco.FBookID=v.FAccountBookID and aco.FBegDate<=v.FBusDate and v.FInvalid=0
             * inner join T_GL_VOUCHERENTRY ve on v.FVoucherID=ve.FVoucherID and f.FID=ve.FDetailID
             * inner join T_BD_ACCOUNT a on ve.FAccountID=a.FACCTID
             * where aco.FOrgID like('%') and a.FAcctID like('%')
             * )t
             */
            #endregion

            #region step 02:获取往来余额
            StringBuilder _sb = new StringBuilder();
            _FAcctOrgID = _FAcctOrgID == "" ? "%" : _FAcctOrgID;
            //_FAcctID = _FAcctID == "" ? "%" : _FAcctID;
            if (_FAcctID == "%")
            {
                _ObjAcctWhile = "";
            }
            else if (_FAcctID != "")
            {
                _ObjAcctWhile = " and a.FAcctID='" + _FAcctID + "' ";
            }

            _sb.Append("/*dialect*/ ");
            _sb.Append("select i.FORGID,ab.FBookID,sy.FValue FCBYear,sp.FValue FCBPeriod, ");
            _sb.Append("convert(datetime,CONVERT(varchar,sy.FValue)+'-'+CONVERT(varchar,sp.FValue)+'-01')FBegDate ");
            _sb.Append("into #aco from T_ORG_Organizations i inner join t_bd_AccountBook ab on i.FOrgID=ab.FAccountOrgID ");
            _sb.Append("inner join T_BAS_SystemProFile sy on ab.FBOOKID=sy.FAccountBookID and sy.FCategory='GL' and sy.FKEY='CurrentYear' ");
            _sb.Append("inner join T_BAS_SystemProFile sp on ab.FBOOKID=sp.FAccountBookID and sp.FCategory='GL' and sp.FKEY='CurrentPeriod';");
            _sb.Append("select isnull(sum(FGOBAmt),0)FGOBAmt from(select b.FBeginBalance FGOBAmt from(" + _ObjMstIDSch + ")o1 ");
            _sb.Append("inner join t_bd_FlexItemDetailV f on o1.FObjMID=f." + _FFlexNumber + " inner join #aco aco on 1=1 ");
            _sb.Append("inner join T_GL_BALANCE b on f.FID=b.FDetailID and aco.FBOOKID=b.FACCOUNTBOOKID and aco.FCBYear=b.FYEAR and aco.FCBPeriod=b.FPeriod and b.FCURRENCYID=0 ");
            _sb.Append("inner join T_BD_ACCOUNT a on b.FACCOUNTID=a.FACCTID ");
            _sb.Append("where aco.FOrgID like('" + _FAcctOrgID + "') " + _ObjAcctWhile + " union all ");
            _sb.Append("select ve.FDC*ve.FAmount FGOBAmt from(" + _ObjMstIDSch + ")o1 ");
            _sb.Append("inner join t_bd_FlexItemDetailV f on o1.FObjMID=f." + _FFlexNumber + " inner join #aco aco on 1=1 ");
            _sb.Append("inner join T_GL_VOUCHER v on aco.FBookID=v.FAccountBookID and aco.FBegDate<=v.FBusDate and v.FInvalid=0 ");
            _sb.Append("inner join T_GL_VOUCHERENTRY ve on v.FVoucherID=ve.FVoucherID and f.FID=ve.FDetailID ");
            _sb.Append("inner join T_BD_ACCOUNT a on ve.FAccountID=a.FACCTID ");
            _sb.Append("where aco.FOrgID like('" + _FAcctOrgID + "') " + _ObjAcctWhile);
            //_sb.Append("union all select 888 FGOBAmt ");  //测试用行
            _sb.Append(")t ");
            string _sqlGetFOBAmt = _sb.ToString();

            DataTable _dtFGOBAmt = new DataTable();
            try
            {
                _dtFGOBAmt = DBUtils.ExecuteDataSet(this.Context, _sqlGetFOBAmt).Tables[0];
            }
            catch (Exception _ex)
            {
                _backAmt = 0;
                return("Err:获取往来余额时发生错误 ErrMsg:" + _ex.Message);
                //this.View.ShowErrMessage(_ex.Message + " SQL:" + _sqlGetFOBAmt, "获取往来余额时发生错误");
            }
            if (_dtFGOBAmt.Rows.Count == 0)
            {
                _backAmt = 0;
                return("warning:获取往来余额时,返回行数为0行");
            }

            _backAmt = -double.Parse(_dtFGOBAmt.Rows[0]["FGOBAmt"].ToString());

            //this.View.ShowMessage(_sqlGetFOBAmt);

            return("success");

            #endregion
        }
コード例 #4
0
 /// <summary>
 /// FinBal_财务方法 获取指定对象 往来余额 [期初往来余额+本期凭证] 简化方法 取全部组织,过滤预设置的科目
 /// </summary>
 /// <param name="_fbo">枚举类型 CZ_FB_EnFBObject 对象</param>
 /// <param name="_FObjID">对象的ID</param>
 /// <param name="_backAmt">往来余额 取得后按实际需求调整显示</param>
 /// <returns></returns>
 private string CZ_FB_GetObjBal(CZ_FB_EnFBObject _fbo, string _FObjID, ref double _backAmt)
 {
     return(CZ_FB_GetObjBal(_fbo, _FObjID, "%", "", ref _backAmt));
 }