对数据进行控制计算

今天,我想跟大家讲一个计算的点。这个是对数据相对简单的加减计算。大家可以看图一,这是一个单位公司挂账的情况图。图二是对图一挂账结算的页面,注意两个是不同一页面。是分开的两个不同的模块。

图一 、 图二、
对数据进行控制计算
在这里我们要做什么呢?
第一步:结算。但不只是“表面的结算”,当我们在挂账结算页面进行结算。要想结算完了之后,挂账金额
的页面的数据也要进行改变,例如你收了第二个公司的100 块。刚好这个公司结算了100 块。那么第二个公司的挂账金额就要显示为0,实现真正意义上的结算。
这一步实现的结算的代码:
public ActionResult InsertTally(SYS_TallyInventory sysTallyInventory)
{
ReturnJson returnJson = new ReturnJson();
returnJson.State = false;
//判断数据
if (!string.IsNullOrEmpty(sysTallyInventory.GatheringMoney.ToString())
&& sysTallyInventory.AgreementUnitID != null && sysTallyInventory.GatheringWayID != null
)
{
SYS_TallyInventory mod = new SYS_TallyInventory(); //结算表
// 查询出挂账的表
var owe = (from tb in myModel.PW_AgreementUnit
where tb.AgreementUnitID == sysTallyInventory.AgreementUnitID
select tb).Single();
mod.GatheringMoney = sysTallyInventory.GatheringMoney;//传递过来结算的钱
var A = Convert.ToDecimal(sysTallyInventory.GatheringMoney);//对结算的钱进行转换
var B = Convert.ToDecimal(owe.TallyQuota); //挂账的钱
var C = B - A;

owe.TallyQuota = C;
myModel.Entry(owe).State
= System.Data.Entity.EntityState.Modified;

if (myModel.SaveChanges() > 0)
{
returnJson.State = true;
returnJson.Text = “结算成功”;
}
myModel.SYS_TallyInventory.Add(sysTallyInventory);
int intR = myModel.SaveChanges();
if (intR > 0)
{
returnJson.State = true;
returnJson.Text = “保存成功”;
}
else
{
returnJson.Text = “保存失败”;
}
}
else
{
returnJson.Text = “数据不完整”;
}
return Json(returnJson, JsonRequestBehavior.AllowGet);
}
这里面一共有两张表。第一张SYS_TallyInventory(结算表)
这个表主要记录你挂账金额数据的传递之后进行结算信息的记录,页面所传递过来的数据。
第二张表PW_AgreementUnit 这个主要是挂账单位挂账情况表。我们只要把挂账结算页面传递过来的收款金额
和挂账单位的挂账金额查出进行相减即可。
易错点。我们很容易犯的一个错就是我们会那收款金额减去挂账金额。其实,这是错的,如果是收款金额减去挂账金额,就会容易出现收多钱的情况。但我们反过来减 在去判断它的值>0,这样可以防止收多钱。如果挂账=0;就直接跳出结算循环页码。并且提示对方。你已近结算完了。
重点:数据类型的转换。对于金钱。在数据库我们往往是用smallmoney这种数据类型。如果你直接用这种数据类型进行加减乘除的话是行不通的,必须转化为整形才能进行计算。
转换:Convert.ToDecimal 将指定对象转化为等效的十进制数,
Convert.ToInt32 将指定对象转化为32位带符号的整形。
这俩个都可以进行转化计算。
对数据进行控制计算
执行结果如上。
额外的考虑:
第一、如果挂账金额为0,不可能再要它进行结算。
第二、收款金额如果大于挂账金额。这是不合理的。这里要进行判断。
我觉得需要对这两个问题进行判断。这个大家也可以尝试去判断一下。我就不再这里放代码了。
好了,这就是我这一次要讲的计算。希望对刚开始计算的“小白”有所帮助。不足之处多多包涵!!!