예제 #1
0
        protected override object EvaluateFunction(object[] args)
        {
            if (((args == null) || (args.Length < this.MinArgs)) || (args.Length > this.MaxArgs))
            {
                return("#VALUE?");
            }
            List <string> list = new List <string>();

            foreach (object obj2 in args)
            {
                list.Add((string)obj2);
            }
            BugdetDataFunctionArgs args2 = new BugdetDataFunctionArgs();

            Kingdee.BOS.Context namedSlotData = KdsCalcCacheMananger.GetNamedSlotData("Context") as Kingdee.BOS.Context;
            List <string>       values        = BugdetDataFunctionArgs.Validate(args2.ConvertToFunctionArgs(namedSlotData, list.ToArray()), namedSlotData);

            if (values.Count > 0)
            {
                return(string.Format("#{0}", string.Join("", values)));
            }
            KdsCalcCacheMananger.GetNamedSlotData("KDSContext");
            KdsCalcCacheMananger.GetNamedSlotData("ReportProperty");
            KdsCalcCacheMananger.GetNamedSlotData("KDSCalContext");
            object obj3 = null;

            return(decimal.Parse(obj3.ToString()));
        }
예제 #2
0
        public BudgetDataEntities ConvertToFunctionArgs(Kingdee.BOS.Context ctx, string[] args)
        {
            this.Context = ctx;
            ReportProperty namedSlotData = KdsCalcCacheMananger.GetNamedSlotData("ReportProperty") as ReportProperty;
            bool           flag          = namedSlotData != null;
            bool           flag2         = false;

            if (flag)
            {
                flag2 = namedSlotData.AcctParameter != null;
            }
            BudgetDataEntities funcArgs = new BudgetDataEntities();
            int schemeIdByNumber        = this.GetSchemeIdByNumber(args[0]);

            if ((schemeIdByNumber == 0) && flag)
            {
                if (flag && (namedSlotData.AcctParameter.SchemeId > 0))
                {
                    schemeIdByNumber = namedSlotData.AcctParameter.SchemeId;
                }
                else
                {
                    schemeIdByNumber = namedSlotData.SchemeId;
                }
            }
            funcArgs.SchemeId = schemeIdByNumber;
            string str = args[1];

            if (!string.IsNullOrWhiteSpace(str))
            {
                this.GetOrgIdByNumber(str, funcArgs);
            }
            else if (flag && (namedSlotData.AcctParameter.OrgId > 0L))
            {
                funcArgs.OrgId   = namedSlotData.AcctParameter.OrgId;
                funcArgs.OrgType = namedSlotData.AcctParameter.OrgType;
            }
            else
            {
                funcArgs.OrgId   = namedSlotData.OrgId;
                funcArgs.OrgType = namedSlotData.OrgType;
            }
            string periodTypeByNumber = args[2];

            if (!string.IsNullOrWhiteSpace(periodTypeByNumber))
            {
                periodTypeByNumber = this.GetPeriodTypeByNumber(periodTypeByNumber);
            }
            else if (flag)
            {
                periodTypeByNumber = namedSlotData.CycleType;
            }
            funcArgs.PeriodType = periodTypeByNumber;
            int year        = args[3].IsNullOrEmptyOrWhiteSpace() ? 0 : Convert.ToInt32(args[3]);
            int startPeriod = args[4].IsNullOrEmptyOrWhiteSpace() ? 0 : Convert.ToInt32(args[4]);
            int endPeriod   = args[5].IsNullOrEmptyOrWhiteSpace() ? 0 : Convert.ToInt32(args[5]);

            if ((year == 0) && flag)
            {
                if (flag)
                {
                    year = namedSlotData.AcctParameter.Year;
                }
                if (year == 0)
                {
                    year = namedSlotData.Year;
                }
            }
            if ((startPeriod == 0) && flag)
            {
                if (flag)
                {
                    startPeriod = namedSlotData.AcctParameter.StartPeriod;
                }
                if (startPeriod == 0)
                {
                    startPeriod = namedSlotData.Period;
                }
            }
            if ((endPeriod == 0) && flag)
            {
                if (flag)
                {
                    endPeriod = namedSlotData.AcctParameter.EndPeriod;
                }
                if (endPeriod == 0)
                {
                    endPeriod = namedSlotData.Period;
                }
            }
            DateTime relativePeriod = this.GetRelativePeriod(ctx);

            switch (year)
            {
            case 0:
            case -1:
                year = relativePeriod.Year + year;
                break;
            }
            if ((startPeriod == 0) || (startPeriod == -1))
            {
                startPeriod = relativePeriod.Month + startPeriod;
            }
            if ((endPeriod == 0) || (endPeriod == -1))
            {
                endPeriod = startPeriod;
            }
            funcArgs.Year            = year;
            funcArgs.StartPeriod     = startPeriod;
            funcArgs.EndPeriod       = endPeriod;
            funcArgs.StartYearPeriod = (year * 0x3e8) + startPeriod;
            funcArgs.EndYearPeriod   = (year * 0x3e8) + endPeriod;
            string dimissionInfo = args[6];

            funcArgs.DicDimissionFilter = this.GetScopeFilter(ctx, dimissionInfo);
            funcArgs.BusinessType       = this.GetBusinessTypeIdByNumber(args[7]);
            int dataTypeIdByNumber = this.GetDataTypeIdByNumber(args[8]);

            if (dataTypeIdByNumber > 0)
            {
                switch (Convert.ToString(this.DicDataTypeInfo[args[8]]["FDATATYPE"]))
                {
                case "0":
                case "2":
                    funcArgs.IsAmount = true;
                    break;
                }
            }
            funcArgs.DataType   = dataTypeIdByNumber;
            funcArgs.ValueType  = args[9].IsNullOrEmptyOrWhiteSpace() ? 0 : Convert.ToInt32(args[9]);
            funcArgs.CurrencyId = this.GetCurrencyIdByNumber(args[10]);
            string amountUnitNumber = args[11].IsNullOrEmptyOrWhiteSpace() ? "JEDW01_SYS" : args[11];

            funcArgs.AmountUnitId = this.GetAmountUnitIdByNumber(amountUnitNumber);
            bool includeUnAuditReport = false;

            if (flag2)
            {
                includeUnAuditReport = namedSlotData.AcctParameter.IncludeUnAuditReport;
            }
            funcArgs.IncludeUnAuditReport = includeUnAuditReport;
            bool includeAuditAdjustData = false;

            if (flag2)
            {
                includeAuditAdjustData = namedSlotData.AcctParameter.IncludeAuditAdjustData;
            }
            funcArgs.IncludeAuditAdjustData = includeAuditAdjustData;
            funcArgs.CalcType = CalcType.Formula;
            return(funcArgs);
        }