نمونه مانده گیری دو ستون بدهکار و بستانکار
بجای استفاده از جدول دردیتابیس من از یک لیست در حافظه استفاده کردم
public partial class Form2 : Form
{
private List<Document> documents;
public Form2()
{
InitializeComponent();
documents=new List<Document>();
}
private void InitDoc()
{
documents.Add(new Document { Id = 1, Code = 1, Comment = "فروش فاکتور شماره 1", Debit = 200000 });
documents.Add(new Document { Id = 2, Code = 1, Comment = "فروش فاکتور شماره 2", Debit = 235000 });
documents.Add(new Document { Id = 3, Code = 1, Comment = "دریافت بابت فاکتور شماره 1", Credit = 200000 });
documents.Add(new Document { Id = 4, Code = 1, Comment = "دریافت بابت فاکتور شماره 2", Credit = 100000 });
documents.Add(new Document { Id = 5, Code = 1, Comment = "فروش فاکتور شماره 3", Debit = 200000 });
documents.Add(new Document { Id = 6, Code = 1, Comment = "دریافت بابت فاکتور شماره 2", Credit = 100000 });
documents.Add(new Document { Id = 7, Code = 1, Comment = "دریافت بابت فاکتور شماره 2", Credit = 100000 });
documents.Add(new Document { Id = 8, Code = 1, Comment = "دریافت بابت فاکتور شماره 2", Credit = 200000 });
documents.Add(new Document { Id = 9, Code = 1, Comment = "پرداخت بابت فاکتور شماره 2", Debit = 65000 });
documents.Add(new Document { Id = 10, Code = 2, Comment = "فروش فاکتور شماره 1", Debit = 500000 });
documents.Add(new Document { Id = 11, Code = 2, Comment = "فروش فاکتور شماره 2", Debit = 295000 });
documents.Add(new Document { Id = 12, Code = 2, Comment = "دریافت بابت فاکتور شماره 1", Credit = 400000 });
documents.Add(new Document { Id = 13, Code = 2, Comment = "دریافت بابت فاکتور شماره 2", Credit = 100000 });
documents.Add(new Document { Id = 14, Code = 3, Comment = "فروش فاکتور شماره 3", Debit = 200000 });
}
private void GetRemainingByCustomerCode(int Code) //customer code
{
decimal sumDebit = 0, sumCredit = 0;
dataGridView1.DataSource = documents.Where(c => c.Code == Code)
.Select(c =>
{
sumDebit += c.Debit;
sumCredit += c.Credit;
return new
{
c.Code,
c.Comment,
c.Debit,
c.Credit,
Remainnig = Math.Abs(sumDebit - sumCredit),
Nature = (sumCredit > sumDebit) ? "بس" : (sumDebit > sumCredit) ? "بد" : "تس"
};
}).ToList();
}
private void Form2_Load(object sender, EventArgs e)
{
InitDoc();
}
private void btnShowResult_Click(object sender, EventArgs e)
{
if(string.IsNullOrEmpty(txtCustomerCode.Text))retu rn;
int code;
int.TryParse(txtCustomerCode.Text, out code);
if(code<=0)return;
GetRemainingByCustomerCode(code);
}
}
public class Document
{
public int Id { get; set; }//آی دی رکورد
public int Code { get; set; }//کد شخص
public string Comment { get; set; }//توضیحات
public decimal Debit { get; set; }//ستون بدهکار
public decimal Credit { get; set; }//ستون بستانکار
}