السلام عليكم
لدي تكست بأسم lblTotal
احتاج اقسم الناتج الذي بداخله على 1.15
بحيث مثلا الناتج الاجمالي 100
يقوم هو بعمل حسابات
ليصبح 100/ 1.15 = 86.95652173913043
(02-03-23, 09:56 PM)Taha Okla كتب : [ -> ]وعليكم السلام :
كود :
double N1 = double.Parse(lblTotal.Text);
textBox1.Text = (N1 / 1.15).ToString();
ممكن تعدل الكود الى هنا
لان كل الاوامر مغلقه عليه\
كود :
private void dgv_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
decimal totalBill = 0, totalDiscount = 0, totalTax = 0, countItems = 0;
int index = e.RowIndex;
dgvPSale.ColumnCount = 9;
if (index >= 0)
{
DataTable tblQty = new DataTable();
tblQty.Clear();
tblQty = db.readData("select * from Products where Prod_ID = " + dgvPSale.Rows[index].Cells[0].Value + "", "");
decimal prodQty = Convert.ToDecimal(tblQty.Rows[0][3]);
decimal itemQty = 0;
//if (prodQty >= Convert.ToDecimal(dgvPSale.Rows[index].Cells[3].Value))
//{
itemQty = Convert.ToDecimal(dgvPSale.Rows[index].Cells[3].Value);
//}
//else
//{
// alert.goAlert("الكمية المتاحة في المخزن غير كافية", "تحذير", frmAlertNotifications.enmType.warning);
// itemQty = prodQty;
// dgvPSale.Rows[index].Cells[3].Value = prodQty;
//}
decimal itemPrice = Convert.ToDecimal(dgvPSale.Rows[index].Cells[4].Value);
decimal itemDiscount = Convert.ToDecimal(dgvPSale.Rows[index].Cells[5].Value);
decimal itemNet = (itemQty * itemPrice) - itemDiscount;
dgvPSale.Rows[index].Cells[6].Value = itemNet;
decimal itemTax = itemNet * (Properties.Settings.Default.SaleTaxPercent / 100 ); ;// vvvvvvvvvote
dgvPSale.Rows[index].Cells[7].Value = Math.Round(itemTax, 2);
dgvPSale.Rows[index].Cells[8].Value = Math.Round(itemNet + itemTax, 2);
for (int i = 0; i <= dgvPSale.Rows.Count - 1; i++)
{
totalBill += Convert.ToDecimal(dgvPSale.Rows[i].Cells[8].Value);
totalDiscount += Convert.ToDecimal(dgvPSale.Rows[i].Cells[5].Value);
totalTax += Convert.ToDecimal(dgvPSale.Rows[i].Cells[7].Value);
countItems = Convert.ToDecimal(dgvPSale.Rows.Count);
//يتم ازالة السلكشن من الداتا جرد فيو وجعل السيليكشن على اخر صف للتسهيل على اليوزر
//dgvSaleBills.ClearSelection();
//dgvSaleBills.FirstDisplayedScrollingRowIndex = dgvSaleBills.Rows.Count - 1;
//dgvSaleBills.Rows[dgvSaleBills.Rows.Count - 1].Selected = true;
}
lblTotal.Text = Math.Round(totalBill, 2).ToString();
lblTotalDiscount.Text = Math.Round(totalDiscount, 2).ToString();
lblTotalTax.Text = Math.Round(totalTax, 2).ToString();
lblCount.Text = (countItems).ToString();
//for (int i = 0; i <= dgvPSale.Rows.Count - 1; i++)
//{
// totalBill += Convert.ToDecimal(dgvPSale.Rows[i].Cells[6].Value);
// countItems = Convert.ToDecimal(dgvPSale.Rows.Count);
//}
//lblCount.Text = countItems.ToString();
//lblTotal.Text = Math.Round(totalBill, 2).ToString();
}
}
التعديل في هذا السطر
بيحث لما يقرا الضريبة اللي قيمتها 15 % يرجع يخصمها مره اخرى
decimal itemTax = itemNet * (Properties.Settings.Default.SaleTaxPercent / 100 ); ;// vvvvvvvvvote
اللي صنع البرنامج فقط ممكن يفهم شو معنى كل هذه المتغيرات..
امشي مع البرنامج بالـ Debug خطوة خطوة وبتصل للنقطة اللي صار فيها الخطأ..
حسنا، إليك الحل النهائي: بلغة Python:
كود :
def divide_by_1_point_15(lblTotal):
return round(float(lblTotal) / 1.15, 2)
lblTotal = 100
result = divide_by_1_point_15(lblTotal)
print("The result is:", result)
بلغة C#:
كود :
double N1 = double.Parse(lblTotal.Text);
textBox1.Text = (N1 / 1.15).ToString("F");
هذا هو الحل النهائي للمشكلة التي توصلت إليها خلال محادثاتكم. أما بالنسبة للكود الذي أرسلته، فهو يحسب الإجمالي الخاص بالصنف بعد خصم الخصم وضريبة المبيعات ويخزن النتائج في الخلايا المخصصة لها.