/// <summary> /// print a currency value (actually all sorts of values, e.g. dates) into a string /// </summary> /// <param name="value">the value to be printed</param> /// <param name="format">the format to be used; can be dayofyear for birthdays, currency, etc</param> /// <returns>the formatted string</returns> public static String FormatCurrency(TVariant value, String format) { String ReturnValue; decimal d; DateTime ThisYearDate; // for partnerkey String OrigFormat; ReturnValue = ""; if (format.ToLower() == "dayofyear") { if (value.IsZeroOrNull()) { ReturnValue = "N/A"; } else { ThisYearDate = new DateTime(DateTime.Today.Year, value.ToDate().Month, value.ToDate().Day); ReturnValue = DateToStr(ThisYearDate, "dd-MMM").ToUpper(); } return ReturnValue; } if (format == null) { format = ""; } OrigFormat = format; if (value.TypeVariant == eVariantTypes.eString) { format = ""; } else { format = GetFormatString(value.FormatString, format); } if (value != null) { if ((format == null) || (format.Length == 0)) { return value.ToString(); } String formatPositive = GetNextCSV(ref format, ";"); String formatNegative = GetNextCSV(ref format, ";"); String formatZero = GetNextCSV(ref format, ";"); String formatNil = GetNextCSV(ref format, ";"); if ((OrigFormat.ToLower() == "partnerkey") || (value.FormatString == "partnerkey")) { if (value.ToInt64() <= 0) { ReturnValue = FormatCurrencyInternal(0, "0000000000"); } else { ReturnValue = FormatCurrencyInternal(value.ToDecimal(), formatPositive); } } else if ((value.TypeVariant == eVariantTypes.eDecimal) || (value.TypeVariant == eVariantTypes.eCurrency) || (value.TypeVariant == eVariantTypes.eInteger)) { d = value.ToDecimal(); if (d > 0) { ReturnValue = FormatCurrencyInternal(d, formatPositive); } else if (d < 0) { ReturnValue = FormatCurrencyInternal(Math.Abs(d), formatNegative); } else { // (d == 0) ReturnValue = FormatCurrencyInternal(d, formatZero); } } else if (value.IsZeroOrNull()) { ReturnValue = FormatCurrencyInternal(0, formatNil); } else { ReturnValue = value.ToString(); } } return ReturnValue; }
private bool GetPartnerLabelValues() { PPartnerTable PartnerTable; System.Data.DataTable mTable; System.Int32 col; TRptCalculation mRptCalculation; TRptDataCalcCalculation mRptDataCalcCalculation; TVariant mRptCalcResult; mRptCalculation = situation.GetReportStore().GetCalculation(situation.GetCurrentReport(), "PartnerLabelValue"); mRptDataCalcCalculation = new TRptDataCalcCalculation(situation); mRptCalcResult = mRptDataCalcCalculation.EvaluateCalculationAll(mRptCalculation, null, mRptCalculation.rptGrpTemplate, mRptCalculation.rptGrpQuery); List <int>AddedColumns = new List <int>(); if (mRptCalcResult.IsZeroOrNull()) { return false; } mTable = situation.GetDatabaseConnection().SelectDT(mRptCalcResult.ToString(), "table", situation.GetDatabaseConnection().Transaction); foreach (DataRow mRow in mTable.Rows) { TVariant LabelValue = new TVariant(); // Data Type: (char | integer | float | currency | boolean | date | time | partnerkey | lookup) if (mRow["LabelDataType"].ToString() == "char") { LabelValue = new TVariant(mRow["LabelValueChar"].ToString()); } else if (mRow["LabelDataType"].ToString() == "integer") { LabelValue = new TVariant(mRow["LabelValueInt"]); } else if (mRow["LabelDataType"].ToString() == "float") { // todo p_num_decimal_places_i LabelValue = new TVariant(mRow["LabelValueNum"]); } else if (mRow["LabelDataType"].ToString() == "currency") { LabelValue = new TVariant(StringHelper.FormatUsingCurrencyCode( Convert.ToDecimal(mRow["LabelValueCurrency"]), mRow["CurrencyCode"].ToString()) + ' ' + mRow["CurrencyCode"].ToString()); } else if (mRow["LabelDataType"].ToString() == "boolean") { LabelValue = new TVariant(mRow["LabelValueBool"]); } else if (mRow["LabelDataType"].ToString() == "date") { LabelValue = new TVariant(mRow["LabelValueDate"]); } else if (mRow["LabelDataType"].ToString() == "time") { // todo needs testing LabelValue = new TVariant(Conversions.Int32TimeToDateTime(Convert.ToInt32(mRow["LabelValueTime"])).ToString("t")); } else if (mRow["LabelDataType"].ToString() == "lookup") { // todo p_lookup_category_code_c LabelValue = new TVariant(mRow["LabelValueLookup"]); } else if (mRow["LabelDataType"].ToString() == "partnerkey") { // retrieve the shortname of this partner LabelValue = new TVariant(mRow["LabelValuePartnerKey"]); PartnerTable = PPartnerAccess.LoadByPrimaryKey(LabelValue.ToInt64(), StringHelper.StrSplit(PPartnerTable.GetPartnerShortNameDBName(), ","), situation.GetDatabaseConnection().Transaction); if (PartnerTable.Rows.Count != 0) { LabelValue = new TVariant(PartnerTable[0].PartnerShortName); } } else { LabelValue = new TVariant("unknown data label type"); } for (col = 0; col <= situation.GetParameters().Get("MaxDisplayColumns").ToInt() - 1; col += 1) { if (!AddedColumns.Contains(col)) { situation.GetParameters().RemoveVariable("LabelValue", col, situation.GetDepth(), eParameterFit.eBestFit); } if (situation.GetParameters().Exists("param_label", col, -1, eParameterFit.eExact)) { if (mRow["LabelName"].ToString() == situation.GetParameters().Get("param_label", col, -1, eParameterFit.eExact).ToString()) { if (!LabelValue.IsNil()) { situation.GetParameters().Add("LabelValue", LabelValue, col, situation.GetDepth(), null, null, ReportingConsts.CALCULATIONPARAMETERS); AddedColumns.Add(col); } } } } } return true; }