السلام عليكم
استخدم برنامج اكتيف ريبورت لعمل التقارير ActiveReports for .net 3.0 و قمت بتصميم فاتورة و وضعت كود للتفقيط
[code
]
public string Tafgeet(Double Amount, string Curr, string SubCurr)
{
string Value = Math.Floor(Amount).ToString();
string NewValue = null;
string[] Part1 = new string[10] { "", "إحدي ", "اثنا", "ثلاث", "أربعة", "خمسة", "ستة", "سبعة", "ثمانية", "تسعة" };
string[] Part2 = new string[10] { "", "عشر", "عشرون", "ثلاثون", "أربعون", "خمسون", "ستون", "سبعون", "ثمانون", "تسعون" };
string[] Part3 = new string[10] { "", "مئة", "مئان", "ثلاث مائة", "أربع مائة", "خمس مائة", "ست مائة", "سبع مائة", "ثمان مائة", "تسع مائة" };
string[] Part4 = new string[10] { "", "ألف", "ألفان", "ثلاثة آلاف", "أربع آلاف", "خمسة آلاف", "ستة آلاف", "سبع آلاف", "ثمانية آلاف", "تسعة آلاف" };
//---------------------------< ....... الملاييييييييييييين ........ >
if (Value.Length == 7)
{
if (Value.Substring(0, 1) == "1")
NewValue = "مليون ";
else if (Value.Substring(0, 1) == "2")
NewValue = "مليونان ";
else
NewValue = Part1[int.Parse(Value.Substring(0, 1))] + " ملايين";
Value = Value.Substring(1, Value.Length - 1);
}
//------------------------------------< ....... مئات الألوف....... >
if (Value.Length == 6)
{
NewValue += " " + Part3[int.Parse(Value.Substring(0, 1))] + " و";
Value = Value.Substring(1, Value.Length - 1);
}
//----------------------------------
if (Value.Length == 5)
{
NewValue += " " + Part1[int.Parse(Value.Substring(1, 1))];
NewValue += " و" + Part2[int.Parse(Value.Substring(0, 1))] + " ألفا و";
Value = Value.Substring(1, Value.Length - 1);
Value = Value.Substring(1, Value.Length - 1);
}
//---------------------------------
if (Value.Length == 4)
{
NewValue += " " + Part4[int.Parse(Value.Substring(0, 1))];
Value = Value.Substring(1, Value.Length - 1);
}
if (Value.Length == 3)
{
NewValue += " " + Part3[int.Parse(Value.Substring(0, 1))] + " و";
Value = Value.Substring(1, Value.Length - 1);
}
//-----------------------------------
if (Value.Length >= 1 && Value.Length <= 2)
{
NewValue += Part1[int.Parse(Value.Substring(1, 1))];
NewValue += " " + Part2[int.Parse(Value.Substring(0, 1))];
Value = Value.Substring(1, Value.Length - 1);
Value = Value.Substring(1, Value.Length - 1);
}
NewValue += " " + Curr;
//الكسر العشري
string Real = Amount.ToString("");
int Pos = Real.IndexOf('.', 0, Real.Length);
if (Pos != -1)
{
Pos++;
try
{
string NewReal = (float.Parse(Real.Substring(Pos, Real.Length - Pos))).ToString();
if (NewReal.Length == 1)
NewValue += " و " + Part1[int.Parse(NewReal.Substring(0, 1))];
else
{
NewValue += " و " + Part1[int.Parse(NewReal.Substring(1, 1))];
NewValue += " و " + Part2[int.Parse(NewReal.Substring(0, 1))];
}
NewValue += " " + SubCurr;
}
catch { }
}
return NewValue;
}
[/code
]
ثم وضعت الكود التالى فى التقرير
]
public string Tafgeet(Double Amount, string Curr, string SubCurr)
{
string Value = Math.Floor(Amount).ToString();
string NewValue = null;
string[] Part1 = new string[10] { "", "إحدي ", "اثنا", "ثلاث", "أربعة", "خمسة", "ستة", "سبعة", "ثمانية", "تسعة" };
string[] Part2 = new string[10] { "", "عشر", "عشرون", "ثلاثون", "أربعون", "خمسون", "ستون", "سبعون", "ثمانون", "تسعون" };
string[] Part3 = new string[10] { "", "مئة", "مئان", "ثلاث مائة", "أربع مائة", "خمس مائة", "ست مائة", "سبع مائة", "ثمان مائة", "تسع مائة" };
string[] Part4 = new string[10] { "", "ألف", "ألفان", "ثلاثة آلاف", "أربع آلاف", "خمسة آلاف", "ستة آلاف", "سبع آلاف", "ثمانية آلاف", "تسعة آلاف" };
//---------------------------< ....... الملاييييييييييييين ........ >
if (Value.Length == 7)
{
if (Value.Substring(0, 1) == "1")
NewValue = "مليون ";
else if (Value.Substring(0, 1) == "2")
NewValue = "مليونان ";
else
NewValue = Part1[int.Parse(Value.Substring(0, 1))] + " ملايين";
Value = Value.Substring(1, Value.Length - 1);
}
//------------------------------------< ....... مئات الألوف....... >
if (Value.Length == 6)
{
NewValue += " " + Part3[int.Parse(Value.Substring(0, 1))] + " و";
Value = Value.Substring(1, Value.Length - 1);
}
//----------------------------------
if (Value.Length == 5)
{
NewValue += " " + Part1[int.Parse(Value.Substring(1, 1))];
NewValue += " و" + Part2[int.Parse(Value.Substring(0, 1))] + " ألفا و";
Value = Value.Substring(1, Value.Length - 1);
Value = Value.Substring(1, Value.Length - 1);
}
//---------------------------------
if (Value.Length == 4)
{
NewValue += " " + Part4[int.Parse(Value.Substring(0, 1))];
Value = Value.Substring(1, Value.Length - 1);
}
if (Value.Length == 3)
{
NewValue += " " + Part3[int.Parse(Value.Substring(0, 1))] + " و";
Value = Value.Substring(1, Value.Length - 1);
}
//-----------------------------------
if (Value.Length >= 1 && Value.Length <= 2)
{
NewValue += Part1[int.Parse(Value.Substring(1, 1))];
NewValue += " " + Part2[int.Parse(Value.Substring(0, 1))];
Value = Value.Substring(1, Value.Length - 1);
Value = Value.Substring(1, Value.Length - 1);
}
NewValue += " " + Curr;
//الكسر العشري
string Real = Amount.ToString("");
int Pos = Real.IndexOf('.', 0, Real.Length);
if (Pos != -1)
{
Pos++;
try
{
string NewReal = (float.Parse(Real.Substring(Pos, Real.Length - Pos))).ToString();
if (NewReal.Length == 1)
NewValue += " و " + Part1[int.Parse(NewReal.Substring(0, 1))];
else
{
NewValue += " و " + Part1[int.Parse(NewReal.Substring(1, 1))];
NewValue += " و " + Part2[int.Parse(NewReal.Substring(0, 1))];
}
NewValue += " " + SubCurr;
}
catch { }
}
return NewValue;
}
[/code
]
ثم وضعت الكود التالى فى التقرير
private void fatora_FetchData(object sender, FetchEventArgs eArgs)
{
double amount1 = Convert.ToDouble(this.Fields["amount1"].Value);
double pricebtax = Convert.ToDouble(this.Fields["pricebtax"].Value);
this.Fields["totalprice"].Value = (amount1 * pricebtax);
this.Fields["tax"].Value = (amount1 * pricebtax *.1);
this.Fields["total"].Value = (amount1 * pricebtax * 1.1);
this.Fields["a"].Value = con.Tafgeet(Double.Parse(Convert.ToString(this.Fields["total"].Value)), "دولار", "سنت");
this.Fields["a"].Value = textBox15.Value;
}
private void fatora_DataInitialize(object sender, EventArgs e)
{
this.Fields.Add("totalprice");
this.Fields.Add("tax");
this.Fields.Add("total");
this.Fields.Add("a");
}لكن كل مرة يقوم بتفقيط اول سطر فى التقرير فقط و يتجاهل بقية الصفوف فما هو الخطأ .