diff --git a/server/AyaNova/biz/PMBiz.cs b/server/AyaNova/biz/PMBiz.cs index 63be3a13..43536fc1 100644 --- a/server/AyaNova/biz/PMBiz.cs +++ b/server/AyaNova/biz/PMBiz.cs @@ -1966,16 +1966,16 @@ namespace AyaNova.Biz if (pct != 0) { if (cot == ContractOverrideType.CostMarkup) - o.PriceViz = o.CostViz + (o.CostViz * pct); + o.PriceViz = MoneyUtil.Round(o.CostViz + (o.CostViz * pct)); else if (cot == ContractOverrideType.PriceDiscount) - o.PriceViz = o.ListPriceViz - (o.ListPriceViz * pct); + o.PriceViz = MoneyUtil.Round(o.ListPriceViz - (o.ListPriceViz * pct)); } } } //Calculate totals and taxes //NET - o.NetViz = o.PriceViz * o.ServiceRateQuantity; + o.NetViz = MoneyUtil.Round(o.PriceViz * o.ServiceRateQuantity); //TAX o.TaxAViz = 0; @@ -1984,17 +1984,17 @@ namespace AyaNova.Biz { if (Tax.TaxAPct != 0) { - o.TaxAViz = o.NetViz * (Tax.TaxAPct / 100); + o.TaxAViz = MoneyUtil.Round(o.NetViz * (Tax.TaxAPct / 100)); } if (Tax.TaxBPct != 0) { if (Tax.TaxOnTax) { - o.TaxBViz = (o.NetViz + o.TaxAViz) * (Tax.TaxBPct / 100); + o.TaxBViz = MoneyUtil.Round((o.NetViz + o.TaxAViz) * (Tax.TaxBPct / 100)); } else { - o.TaxBViz = o.NetViz * (Tax.TaxBPct / 100); + o.TaxBViz = MoneyUtil.Round(o.NetViz * (Tax.TaxBPct / 100)); } } } @@ -2300,7 +2300,7 @@ namespace AyaNova.Biz //Calculate totals and taxes //NET - o.NetViz = o.PriceViz * o.Quantity; + o.NetViz = MoneyUtil.Round(o.PriceViz * o.Quantity); //TAX o.TaxAViz = 0; @@ -2309,17 +2309,17 @@ namespace AyaNova.Biz { if (Tax.TaxAPct != 0) { - o.TaxAViz = o.NetViz * (Tax.TaxAPct / 100); + o.TaxAViz = MoneyUtil.Round(o.NetViz * (Tax.TaxAPct / 100)); } if (Tax.TaxBPct != 0) { if (Tax.TaxOnTax) { - o.TaxBViz = (o.NetViz + o.TaxAViz) * (Tax.TaxBPct / 100); + o.TaxBViz = MoneyUtil.Round((o.NetViz + o.TaxAViz) * (Tax.TaxBPct / 100)); } else { - o.TaxBViz = o.NetViz * (Tax.TaxBPct / 100); + o.TaxBViz = MoneyUtil.Round(o.NetViz * (Tax.TaxBPct / 100)); } } } @@ -2695,17 +2695,17 @@ namespace AyaNova.Biz { if (Tax.TaxAPct != 0) { - o.TaxAViz = o.NetViz * (Tax.TaxAPct / 100); + o.TaxAViz = MoneyUtil.Round(o.NetViz * (Tax.TaxAPct / 100)); } if (Tax.TaxBPct != 0) { if (Tax.TaxOnTax) { - o.TaxBViz = (o.NetViz + o.TaxAViz) * (Tax.TaxBPct / 100); + o.TaxBViz = MoneyUtil.Round((o.NetViz + o.TaxAViz) * (Tax.TaxBPct / 100)); } else { - o.TaxBViz = o.NetViz * (Tax.TaxBPct / 100); + o.TaxBViz = MoneyUtil.Round(o.NetViz * (Tax.TaxBPct / 100)); } } } @@ -3064,16 +3064,16 @@ namespace AyaNova.Biz if (pct != 0) { if (cot == ContractOverrideType.CostMarkup) - o.PriceViz = o.Cost + (o.Cost * pct); + o.PriceViz = MoneyUtil.Round(o.Cost + (o.Cost * pct)); else if (cot == ContractOverrideType.PriceDiscount) - o.PriceViz = o.ListPrice - (o.ListPrice * pct); + o.PriceViz = MoneyUtil.Round(o.ListPrice - (o.ListPrice * pct)); } } } //Calculate totals and taxes //NET - o.NetViz = o.PriceViz * o.Quantity; + o.NetViz = MoneyUtil.Round(o.PriceViz * o.Quantity); //TAX o.TaxAViz = 0; @@ -3082,17 +3082,17 @@ namespace AyaNova.Biz { if (Tax.TaxAPct != 0) { - o.TaxAViz = o.NetViz * (Tax.TaxAPct / 100); + o.TaxAViz = MoneyUtil.Round(o.NetViz * (Tax.TaxAPct / 100)); } if (Tax.TaxBPct != 0) { if (Tax.TaxOnTax) { - o.TaxBViz = (o.NetViz + o.TaxAViz) * (Tax.TaxBPct / 100); + o.TaxBViz = MoneyUtil.Round((o.NetViz + o.TaxAViz) * (Tax.TaxBPct / 100)); } else { - o.TaxBViz = o.NetViz * (Tax.TaxBPct / 100); + o.TaxBViz = MoneyUtil.Round(o.NetViz * (Tax.TaxBPct / 100)); } } } @@ -3969,16 +3969,16 @@ namespace AyaNova.Biz if (pct != 0) { if (cot == ContractOverrideType.CostMarkup) - o.PriceViz = o.CostViz + (o.CostViz * pct); + o.PriceViz = MoneyUtil.Round(o.CostViz + (o.CostViz * pct)); else if (cot == ContractOverrideType.PriceDiscount) - o.PriceViz = o.ListPriceViz - (o.ListPriceViz * pct); + o.PriceViz = MoneyUtil.Round(o.ListPriceViz - (o.ListPriceViz * pct)); } } } //Calculate totals and taxes //NET - o.NetViz = o.PriceViz * o.TravelRateQuantity; + o.NetViz = MoneyUtil.Round(o.PriceViz * o.TravelRateQuantity); //TAX o.TaxAViz = 0; @@ -3987,17 +3987,17 @@ namespace AyaNova.Biz { if (Tax.TaxAPct != 0) { - o.TaxAViz = o.NetViz * (Tax.TaxAPct / 100); + o.TaxAViz = MoneyUtil.Round(o.NetViz * (Tax.TaxAPct / 100)); } if (Tax.TaxBPct != 0) { if (Tax.TaxOnTax) { - o.TaxBViz = (o.NetViz + o.TaxAViz) * (Tax.TaxBPct / 100); + o.TaxBViz = MoneyUtil.Round((o.NetViz + o.TaxAViz) * (Tax.TaxBPct / 100)); } else { - o.TaxBViz = o.NetViz * (Tax.TaxBPct / 100); + o.TaxBViz = MoneyUtil.Round(o.NetViz * (Tax.TaxBPct / 100)); } } } diff --git a/server/AyaNova/biz/QuoteBiz.cs b/server/AyaNova/biz/QuoteBiz.cs index 02001b19..bcf8b958 100644 --- a/server/AyaNova/biz/QuoteBiz.cs +++ b/server/AyaNova/biz/QuoteBiz.cs @@ -1788,17 +1788,17 @@ namespace AyaNova.Biz { if (Tax.TaxAPct != 0) { - o.TaxAViz = o.ChargeAmount * (Tax.TaxAPct / 100); + o.TaxAViz = MoneyUtil.Round(o.ChargeAmount * (Tax.TaxAPct / 100)); } if (Tax.TaxBPct != 0) { if (Tax.TaxOnTax) { - o.TaxBViz = (o.ChargeAmount + o.TaxAViz) * (Tax.TaxBPct / 100); + o.TaxBViz = MoneyUtil.Round((o.ChargeAmount + o.TaxAViz) * (Tax.TaxBPct / 100)); } else { - o.TaxBViz = o.ChargeAmount * (Tax.TaxBPct / 100); + o.TaxBViz = MoneyUtil.Round(o.ChargeAmount * (Tax.TaxBPct / 100)); } } o.LineTotalViz = o.ChargeAmount + o.TaxAViz + o.TaxBViz; @@ -2199,16 +2199,16 @@ namespace AyaNova.Biz if (pct != 0) { if (cot == ContractOverrideType.CostMarkup) - o.PriceViz = o.CostViz + (o.CostViz * pct); + o.PriceViz = MoneyUtil.Round(o.CostViz + (o.CostViz * pct)); else if (cot == ContractOverrideType.PriceDiscount) - o.PriceViz = o.ListPriceViz - (o.ListPriceViz * pct); + o.PriceViz = MoneyUtil.Round(o.ListPriceViz - (o.ListPriceViz * pct)); } } } //Calculate totals and taxes //NET - o.NetViz = o.PriceViz * o.ServiceRateQuantity; + o.NetViz = MoneyUtil.Round(o.PriceViz * o.ServiceRateQuantity); //TAX o.TaxAViz = 0; @@ -2217,17 +2217,17 @@ namespace AyaNova.Biz { if (Tax.TaxAPct != 0) { - o.TaxAViz = o.NetViz * (Tax.TaxAPct / 100); + o.TaxAViz = MoneyUtil.Round(o.NetViz * (Tax.TaxAPct / 100)); } if (Tax.TaxBPct != 0) { if (Tax.TaxOnTax) { - o.TaxBViz = (o.NetViz + o.TaxAViz) * (Tax.TaxBPct / 100); + o.TaxBViz = MoneyUtil.Round((o.NetViz + o.TaxAViz) * (Tax.TaxBPct / 100)); } else { - o.TaxBViz = o.NetViz * (Tax.TaxBPct / 100); + o.TaxBViz = MoneyUtil.Round(o.NetViz * (Tax.TaxBPct / 100)); } } } @@ -2547,7 +2547,7 @@ namespace AyaNova.Biz //Calculate totals and taxes //NET - o.NetViz = o.PriceViz * o.Quantity; + o.NetViz = MoneyUtil.Round(o.PriceViz * o.Quantity); //TAX o.TaxAViz = 0; @@ -2556,17 +2556,17 @@ namespace AyaNova.Biz { if (Tax.TaxAPct != 0) { - o.TaxAViz = o.NetViz * (Tax.TaxAPct / 100); + o.TaxAViz = MoneyUtil.Round(o.NetViz * (Tax.TaxAPct / 100)); } if (Tax.TaxBPct != 0) { if (Tax.TaxOnTax) { - o.TaxBViz = (o.NetViz + o.TaxAViz) * (Tax.TaxBPct / 100); + o.TaxBViz = MoneyUtil.Round((o.NetViz + o.TaxAViz) * (Tax.TaxBPct / 100)); } else { - o.TaxBViz = o.NetViz * (Tax.TaxBPct / 100); + o.TaxBViz = MoneyUtil.Round(o.NetViz * (Tax.TaxBPct / 100)); } } } @@ -2949,17 +2949,17 @@ namespace AyaNova.Biz { if (Tax.TaxAPct != 0) { - o.TaxAViz = o.NetViz * (Tax.TaxAPct / 100); + o.TaxAViz = MoneyUtil.Round(o.NetViz * (Tax.TaxAPct / 100)); } if (Tax.TaxBPct != 0) { if (Tax.TaxOnTax) { - o.TaxBViz = (o.NetViz + o.TaxAViz) * (Tax.TaxBPct / 100); + o.TaxBViz = MoneyUtil.Round((o.NetViz + o.TaxAViz) * (Tax.TaxBPct / 100)); } else { - o.TaxBViz = o.NetViz * (Tax.TaxBPct / 100); + o.TaxBViz = MoneyUtil.Round(o.NetViz * (Tax.TaxBPct / 100)); } } } @@ -3325,16 +3325,16 @@ namespace AyaNova.Biz if (pct != 0) { if (cot == ContractOverrideType.CostMarkup) - o.PriceViz = o.Cost + (o.Cost * pct); + o.PriceViz = MoneyUtil.Round(o.Cost + (o.Cost * pct)); else if (cot == ContractOverrideType.PriceDiscount) - o.PriceViz = o.ListPrice - (o.ListPrice * pct); + o.PriceViz = MoneyUtil.Round(o.ListPrice - (o.ListPrice * pct)); } } } //Calculate totals and taxes //NET - o.NetViz = o.PriceViz * o.Quantity; + o.NetViz = MoneyUtil.Round(o.PriceViz * o.Quantity); //TAX o.TaxAViz = 0; @@ -3343,17 +3343,17 @@ namespace AyaNova.Biz { if (Tax.TaxAPct != 0) { - o.TaxAViz = o.NetViz * (Tax.TaxAPct / 100); + o.TaxAViz = MoneyUtil.Round(o.NetViz * (Tax.TaxAPct / 100)); } if (Tax.TaxBPct != 0) { if (Tax.TaxOnTax) { - o.TaxBViz = (o.NetViz + o.TaxAViz) * (Tax.TaxBPct / 100); + o.TaxBViz = MoneyUtil.Round((o.NetViz + o.TaxAViz) * (Tax.TaxBPct / 100)); } else { - o.TaxBViz = o.NetViz * (Tax.TaxBPct / 100); + o.TaxBViz = MoneyUtil.Round(o.NetViz * (Tax.TaxBPct / 100)); } } } @@ -4266,16 +4266,16 @@ namespace AyaNova.Biz if (pct != 0) { if (cot == ContractOverrideType.CostMarkup) - o.PriceViz = o.CostViz + (o.CostViz * pct); + o.PriceViz = MoneyUtil.Round(o.CostViz + (o.CostViz * pct)); else if (cot == ContractOverrideType.PriceDiscount) - o.PriceViz = o.ListPriceViz - (o.ListPriceViz * pct); + o.PriceViz = MoneyUtil.Round(o.ListPriceViz - (o.ListPriceViz * pct)); } } } //Calculate totals and taxes //NET - o.NetViz = o.PriceViz * o.TravelRateQuantity; + o.NetViz = MoneyUtil.Round(o.PriceViz * o.TravelRateQuantity); //TAX o.TaxAViz = 0; @@ -4284,17 +4284,17 @@ namespace AyaNova.Biz { if (Tax.TaxAPct != 0) { - o.TaxAViz = o.NetViz * (Tax.TaxAPct / 100); + o.TaxAViz = MoneyUtil.Round(o.NetViz * (Tax.TaxAPct / 100)); } if (Tax.TaxBPct != 0) { if (Tax.TaxOnTax) { - o.TaxBViz = (o.NetViz + o.TaxAViz) * (Tax.TaxBPct / 100); + o.TaxBViz = MoneyUtil.Round((o.NetViz + o.TaxAViz) * (Tax.TaxBPct / 100)); } else { - o.TaxBViz = o.NetViz * (Tax.TaxBPct / 100); + o.TaxBViz = MoneyUtil.Round(o.NetViz * (Tax.TaxBPct / 100)); } } } diff --git a/server/AyaNova/biz/WorkOrderBiz.cs b/server/AyaNova/biz/WorkOrderBiz.cs index 7c142fe1..651dc7ab 100644 --- a/server/AyaNova/biz/WorkOrderBiz.cs +++ b/server/AyaNova/biz/WorkOrderBiz.cs @@ -113,7 +113,7 @@ namespace AyaNova.Biz return null; else { - + await WorkOrderBizActionsAsync(AyaEvent.Created, newObject, null, null); newObject.Tags = TagBiz.NormalizeTags(newObject.Tags); newObject.CustomFields = JsonUtil.CompactJson(newObject.CustomFields); @@ -2203,17 +2203,17 @@ namespace AyaNova.Biz { if (Tax.TaxAPct != 0) { - o.TaxAViz = o.ChargeAmount * (Tax.TaxAPct / 100); + o.TaxAViz = MoneyUtil.Round(o.ChargeAmount * (Tax.TaxAPct / 100)); } if (Tax.TaxBPct != 0) { if (Tax.TaxOnTax) { - o.TaxBViz = (o.ChargeAmount + o.TaxAViz) * (Tax.TaxBPct / 100); + o.TaxBViz = MoneyUtil.Round((o.ChargeAmount + o.TaxAViz) * (Tax.TaxBPct / 100)); } else { - o.TaxBViz = o.ChargeAmount * (Tax.TaxBPct / 100); + o.TaxBViz = MoneyUtil.Round(o.ChargeAmount * (Tax.TaxBPct / 100)); } } o.LineTotalViz = o.ChargeAmount + o.TaxAViz + o.TaxBViz; @@ -2598,16 +2598,17 @@ namespace AyaNova.Biz if (pct != 0) { if (cot == ContractOverrideType.CostMarkup) - o.PriceViz = o.CostViz + (o.CostViz * pct); + o.PriceViz = MoneyUtil.Round(o.CostViz + (o.CostViz * pct)); else if (cot == ContractOverrideType.PriceDiscount) - o.PriceViz = o.ListPriceViz - (o.ListPriceViz * pct); + o.PriceViz = MoneyUtil.Round(o.ListPriceViz - (o.ListPriceViz * pct)); } } } //Calculate totals and taxes //NET - o.NetViz = o.PriceViz * o.ServiceRateQuantity; + o.NetViz = MoneyUtil.Round(o.PriceViz * o.ServiceRateQuantity); + //TAX o.TaxAViz = 0; @@ -2616,17 +2617,17 @@ namespace AyaNova.Biz { if (Tax.TaxAPct != 0) { - o.TaxAViz = o.NetViz * (Tax.TaxAPct / 100); + o.TaxAViz = MoneyUtil.Round(o.NetViz * (Tax.TaxAPct / 100)); } if (Tax.TaxBPct != 0) { if (Tax.TaxOnTax) { - o.TaxBViz = (o.NetViz + o.TaxAViz) * (Tax.TaxBPct / 100); + o.TaxBViz = MoneyUtil.Round((o.NetViz + o.TaxAViz) * (Tax.TaxBPct / 100)); } else { - o.TaxBViz = o.NetViz * (Tax.TaxBPct / 100); + o.TaxBViz = MoneyUtil.Round(o.NetViz * (Tax.TaxBPct / 100)); } } } @@ -2868,7 +2869,7 @@ namespace AyaNova.Biz if (changeOfUnit || changeOfReturned) { var u = await ct.LoanUnit.FirstOrDefaultAsync(x => x.Id == dbObject.LoanUnitId); - if (u != null && (u.WorkOrderItemLoanId==null || u.WorkOrderItemLoanId==putObject.Id)) + if (u != null && (u.WorkOrderItemLoanId == null || u.WorkOrderItemLoanId == putObject.Id)) { if (putObject.ReturnDate != null) { @@ -2972,7 +2973,7 @@ namespace AyaNova.Biz //Calculate totals and taxes //NET - o.NetViz = o.PriceViz * o.Quantity; + o.NetViz = MoneyUtil.Round(o.PriceViz * o.Quantity); //TAX o.TaxAViz = 0; @@ -2981,17 +2982,17 @@ namespace AyaNova.Biz { if (Tax.TaxAPct != 0) { - o.TaxAViz = o.NetViz * (Tax.TaxAPct / 100); + o.TaxAViz = MoneyUtil.Round(o.NetViz * (Tax.TaxAPct / 100)); } if (Tax.TaxBPct != 0) { if (Tax.TaxOnTax) { - o.TaxBViz = (o.NetViz + o.TaxAViz) * (Tax.TaxBPct / 100); + o.TaxBViz = MoneyUtil.Round((o.NetViz + o.TaxAViz) * (Tax.TaxBPct / 100)); } else { - o.TaxBViz = o.NetViz * (Tax.TaxBPct / 100); + o.TaxBViz = MoneyUtil.Round(o.NetViz * (Tax.TaxBPct / 100)); } } } @@ -3370,17 +3371,17 @@ namespace AyaNova.Biz { if (Tax.TaxAPct != 0) { - o.TaxAViz = o.NetViz * (Tax.TaxAPct / 100); + o.TaxAViz = MoneyUtil.Round(o.NetViz * (Tax.TaxAPct / 100)); } if (Tax.TaxBPct != 0) { if (Tax.TaxOnTax) { - o.TaxBViz = (o.NetViz + o.TaxAViz) * (Tax.TaxBPct / 100); + o.TaxBViz = MoneyUtil.Round((o.NetViz + o.TaxAViz) * (Tax.TaxBPct / 100)); } else { - o.TaxBViz = o.NetViz * (Tax.TaxBPct / 100); + o.TaxBViz = MoneyUtil.Round(o.NetViz * (Tax.TaxBPct / 100)); } } } @@ -3896,16 +3897,16 @@ namespace AyaNova.Biz if (pct != 0) { if (cot == ContractOverrideType.CostMarkup) - o.PriceViz = o.Cost + (o.Cost * pct); + o.PriceViz = MoneyUtil.Round(o.Cost + (o.Cost * pct)); else if (cot == ContractOverrideType.PriceDiscount) - o.PriceViz = o.ListPrice - (o.ListPrice * pct); + o.PriceViz = MoneyUtil.Round(o.ListPrice - (o.ListPrice * pct)); } } } //Calculate totals and taxes //NET - o.NetViz = o.PriceViz * o.Quantity; + o.NetViz = MoneyUtil.Round(o.PriceViz * o.Quantity); //TAX o.TaxAViz = 0; @@ -3914,17 +3915,17 @@ namespace AyaNova.Biz { if (Tax.TaxAPct != 0) { - o.TaxAViz = o.NetViz * (Tax.TaxAPct / 100); + o.TaxAViz = MoneyUtil.Round(o.NetViz * (Tax.TaxAPct / 100)); } if (Tax.TaxBPct != 0) { if (Tax.TaxOnTax) { - o.TaxBViz = (o.NetViz + o.TaxAViz) * (Tax.TaxBPct / 100); + o.TaxBViz = MoneyUtil.Round((o.NetViz + o.TaxAViz) * (Tax.TaxBPct / 100)); } else { - o.TaxBViz = o.NetViz * (Tax.TaxBPct / 100); + o.TaxBViz = MoneyUtil.Round(o.NetViz * (Tax.TaxBPct / 100)); } } } @@ -5355,16 +5356,16 @@ namespace AyaNova.Biz if (pct != 0) { if (cot == ContractOverrideType.CostMarkup) - o.PriceViz = o.CostViz + (o.CostViz * pct); + o.PriceViz = MoneyUtil.Round(o.CostViz + (o.CostViz * pct)); else if (cot == ContractOverrideType.PriceDiscount) - o.PriceViz = o.ListPriceViz - (o.ListPriceViz * pct); + o.PriceViz = MoneyUtil.Round(o.ListPriceViz - (o.ListPriceViz * pct)); } } } //Calculate totals and taxes //NET - o.NetViz = o.PriceViz * o.TravelRateQuantity; + o.NetViz = MoneyUtil.Round(o.PriceViz * o.TravelRateQuantity); //TAX o.TaxAViz = 0; @@ -5373,17 +5374,17 @@ namespace AyaNova.Biz { if (Tax.TaxAPct != 0) { - o.TaxAViz = o.NetViz * (Tax.TaxAPct / 100); + o.TaxAViz = MoneyUtil.Round(o.NetViz * (Tax.TaxAPct / 100)); } if (Tax.TaxBPct != 0) { if (Tax.TaxOnTax) { - o.TaxBViz = (o.NetViz + o.TaxAViz) * (Tax.TaxBPct / 100); + o.TaxBViz = MoneyUtil.Round((o.NetViz + o.TaxAViz) * (Tax.TaxBPct / 100)); } else { - o.TaxBViz = o.NetViz * (Tax.TaxBPct / 100); + o.TaxBViz = MoneyUtil.Round(o.NetViz * (Tax.TaxBPct / 100)); } } } diff --git a/server/AyaNova/util/MoneyUtil.cs b/server/AyaNova/util/MoneyUtil.cs new file mode 100644 index 00000000..7bfa3643 --- /dev/null +++ b/server/AyaNova/util/MoneyUtil.cs @@ -0,0 +1,21 @@ +using System; + +namespace AyaNova.Util +{ + internal static class MoneyUtil + { + + /// + /// Rounding for monetary values + /// + /// + /// + /// + public static decimal Round(decimal d) + { + return Decimal.Round(d, 2, MidpointRounding.AwayFromZero); + } + + }//eoc + +}//eons \ No newline at end of file