public void UpdateRowAmountPercent(CalculationModel model, CalculationItemModel calRow, decimal value, bool skipBaseGroupRows = false) { //decimal iBaseAmount = model.MasterAmount; decimal iBaseAmount = model.CalculationViewItems.Where(item => item.Group == calRow.Group && item.IsSummary).LastOrDefault().Total; //x*100 + 0.01*100 = 9900 //x is value //100 is fix number (from 100 percent) //0.01 is x as percentage (eg 1/100) //9900 is base amount //101x = 9900 //x = 9900 / 101 = 98.0198 if (value > 0) { //must set value first calRow.AmountPercent = value; //get summary from all item by particular group decimal iSummaryAllItems = model.CalculationViewItems.FindAll(item => item.Group == calRow.Group && !item.IsSummary).Sum(item => item.AmountPercent); //calculation decimal iCalculation = (iBaseAmount * 100) / (100 + iSummaryAllItems) * (value / 100); calRow.AmountFix = iCalculation; calRow.Total = iCalculation; } }
public void UpdateRowAmountFix(CalculationModel model, CalculationItemModel calRow, decimal value, bool skipBaseGroupRows = false) { //decimal iBaseAmount = model.MasterAmount; decimal iBaseAmount = model.CalculationViewItems.Where(item => item.Group == calRow.Group && item.IsSummary).LastOrDefault().Total; //if (!skipBaseGroupRows) //{ // //get summary from group's total row // iBaseAmount = GetCalculationBaseSummaryGroups(model, calRow); //} //calculate //must set value first calRow.AmountFix = value; if (iBaseAmount > 0) { //get summary from all item by particular group decimal iSummaryAllItems = model.CalculationViewItems.FindAll(item => item.Group == calRow.Group && !item.IsSummary).Sum(item => item.AmountFix); //(x / (99 - x) * 100) = y //x is value //99 is base amount //y is resut (amount percent0 calRow.AmountPercent = (value / (iBaseAmount - iSummaryAllItems)) * 100; //calRow.AmountPercent = (value / (iBaseAmount - value)) * 100; } calRow.Total = calRow.AmountFix; }
void UpdateRowAmountPercentSpecial(CalculationModel model, CalculationItemModel calRow, decimal value) { //decimal iBaseAmount = model.MasterAmount; decimal iBaseAmount = model.CalculationViewItems.Where(item => item.Group == calRow.Group && item.IsSummary).LastOrDefault().Total; calRow.AmountPercent = value; calRow.AmountFix = (value / 100) * iBaseAmount; calRow.Total = calRow.AmountFix; }
public void UpdateMarginRowAmountVariable(CalculationModel model, int rowID, decimal value) { //get margin item by tag CalculationItemModel oModel = model.CalculationMarginViewItems[rowID]; if (oModel != null) { oModel.VariableTotal = value; } }
public void UpdateCalculationRowCurrency(CalculationModel model, int rowID, string currency) { //only BEK and GA can change currency CalculationItemModel oCalRow = model.CalculationViewItems[rowID]; if (oCalRow != null) { //CHF or custom one oCalRow.Currency.Currency = currency; } }
public string GetCalculationRowUnitValue(CalculationModel model, int rowID) { CalculationItemModel oCalRow = model.CalculationViewItems[rowID]; if (oCalRow != null && oCalRow.Convert != null) { return(oCalRow.Convert.Unit); } return(""); }
public string GetCalculationRowCurrencyValue(CalculationModel model, int rowID) { CalculationItemModel oCalRow = model.CalculationViewItems[rowID]; if (oCalRow != null) { return(oCalRow.Currency.Currency); } return(""); }
public void UpdateMarginRowEditedField(CalculationModel model, int rowID, string field) { //P percent, F fix, V variable total, T total //get margin item by tag CalculationItemModel oModel = model.CalculationMarginViewItems[rowID]; if (oModel != null) { oModel.EditedField = field; } }
decimal GetCalculationBaseSummaryGroups(CalculationModel model, CalculationItemModel calRow) { decimal iSumCalRow = 0; var oCalculationRows = model.CalculationViewItems.FindAll(item => item.IsSummary && item.Group == calRow.Group); if (oCalculationRows != null) { iSumCalRow = (from row in oCalculationRows select row.Total).Sum(); } return(iSumCalRow); }
void SetPredefineProfitAmount() { //set predefined profit amount for each scale int iScaleCount = _Model.CalculationNotes.Count(item => item.ID > 0); if (iScaleCount > 1) { if (_Model.GeneralSetting.PriceScale.MinProfit > 0 && _Model.GeneralSetting.PriceScale.MaxProfit > 0) { //everage amount excluded first item decimal iEverageAmount = (_Model.GeneralSetting.PriceScale.MaxProfit - _Model.GeneralSetting.PriceScale.MinProfit) / (iScaleCount - 1); //scale item start from ID 1 for (int i = 0; i < iScaleCount; i++) { decimal iProfitAmount = 0; if (i == 0) { // set first predefined iProfitAmount = _Model.GeneralSetting.PriceScale.MaxProfit; } else if (i == (iScaleCount - 1)) { // set last predefined iProfitAmount = _Model.GeneralSetting.PriceScale.MinProfit; } else { // set rest predefined //iProfitAmount = iEverageAmount * ((_Model.CalculationNotes.Count - 1) - i); iProfitAmount = _Model.GeneralSetting.PriceScale.MaxProfit - (iEverageAmount * i); } //update amount to calculation model //if percent or fix predefined CalculationItemModel oCalRow = _Model.CalculationNotes[i + 1].CalculationItems[0]; if (_Model.GeneralSetting.PriceScale.MarkUp == "P") { oCalRow.EditedField = "P"; _Calculation.UpdateRowAmountPercent(_Model, oCalRow, iProfitAmount, skipBaseGroupRows: true); } else { oCalRow.EditedField = "F"; _Calculation.UpdateRowAmountFix(_Model, oCalRow, iProfitAmount, skipBaseGroupRows: true); } } } } }
void UpdateRowAmountPercentSpecial(CalculationModel model, CalculationItemModel calRow, decimal value) { //decimal iBaseAmount = model.MasterAmount; decimal iBaseAmount = model.CalculationViewItems[0].AmountFix; if (model.CalculationViewItems[0].Currency.Currency != "CHF") { iBaseAmount = model.CalculationViewItems[0].Total; } if (calRow.BaseCalculationGroupRows != null) { iBaseAmount = GetCalculationBaseSummaryGroups(model, calRow.BaseCalculationGroupRows); } //formular for SKT, PV, RBT(maximum input is 99.99 % // if edit one cell only (SKT or PV or RBT) // [90 % +10 % from input = 100 %] [10 % from input] // 108.131 from (VK(bar)) // (((100 / 90) * 108.131) * (10 / 100)) = 12.0145555556 //if edit multiple cell (SKT, PV) // get multiple summary percent first // if SKT = 4, PV = 6 so sum is 10 // so if SKT = 1 // [90 % +10 % from input = 100 %] [10 % from input] // 108.131 from (VK(bar)) // (((100 / 90) * 108.131) * (10 / 100)) = 12.0145555556 // SKT = 12.0145555556 * (4/10) = 4.80582222224 (40%) // PV = 12.0145555556 * (6/10) = 7.20873333336 (60%) decimal iDiffer = 100 - value; calRow.AmountPercent = value; calRow.AmountFix = (((100 / iDiffer) * iBaseAmount) * (value / 100)); if (calRow.Tag == "SKT" || calRow.Tag == "PV") { decimal iSummaryPercent = value; var oCalculationRows = model.CalculationViewItems.FindAll(item => !item.IsSummary && item.Group == calRow.Group); iSummaryPercent = oCalculationRows.Sum(item => item.AmountPercent); if (iSummaryPercent > 0 && iSummaryPercent < 100) { iDiffer = 100 - iSummaryPercent; calRow.AmountFix = (((100 / iDiffer) * iBaseAmount) * (iSummaryPercent / 100)) * (value / iSummaryPercent); } } calRow.Total = calRow.AmountFix; }
public decimal GetMarginSummarize(CalculationModel model) { decimal iSummary = 0; CalculationItemModel oVK = model.CalculationMarginViewItems.Find(item => item.Tag == "VK"); CalculationItemModel oVKbrutto = model.CalculationMarginViewItems.Find(item => item.Tag == "VK(brutto)"); if (oVK != null && (oVKbrutto != null && oVKbrutto.VariableTotal > 0)) { iSummary = (oVK.VariableTotal / oVKbrutto.VariableTotal) * 100; } return(iSummary); }
public void UpdateCalculationRowUnit(CalculationModel model, int rowID, string unit) { CalculationItemModel oCalRow = model.CalculationViewItems[rowID]; if (oCalRow != null && oCalRow.Convert != null) { //// if not edit cell, set F (fix) as default when click convert button //if (String.IsNullOrWhiteSpace(oCalRow.Convert.ConvertAmountField)) //{ // oCalRow.Convert.ConvertAmountField = "F"; //} oCalRow.Convert.Unit = unit; } }
public void UpdateCalculationRowAmount(CalculationModel model, int rowID, decimal value, bool isPercent, bool specialCalculation, bool isCellEdit) { CalculationItemModel oCalRow = model.CalculationViewItems[rowID]; //if edited value on grid's cell if (isCellEdit) { //set edited column if (oCalRow != null) { oCalRow.EditedField = isPercent ? "P" : "F"; } } UpdateCalculationRowAmount(model, oCalRow, value, isPercent, specialCalculation); }
void UpdateRowAmountFixSpecial(CalculationModel model, CalculationItemModel calRow, decimal value) { //decimal iBaseAmount = model.MasterAmount; decimal iBaseAmount = model.CalculationViewItems.Where(item => item.Group == calRow.Group && item.IsSummary).LastOrDefault().Total; calRow.AmountFix = value; if (iBaseAmount > 0) { //if special //(x / (99) * 100) = y //x is value //99 is base amount //y is resut (amount percent0 calRow.AmountPercent = (value / (iBaseAmount)) * 100; } calRow.Total = calRow.AmountFix; }
public string GetCalculationRowCurrencyFieldEditable(CalculationModel model, int rowID) { //set editable currency field CalculationItemModel oCalRow = model.CalculationViewItems[rowID]; //if (oCalRow != null && oCalRow.Currency != null) //{ // //return editable currency field // return oCalRow.Currency.CurrencyBaseAmountField; //} if (oCalRow != null && oCalRow.EditedField != null) { //return editable currency field return(oCalRow.EditedField == "F" ? "F" : ""); } return(""); }
void UpdateCalculationRowAmount(CalculationModel model, CalculationItemModel calRow, decimal value, bool isPercent, bool specialCalculation) { if (calRow != null) { //if not master amount row //master row's group is 0 if (calRow.Group != 0) { if (isPercent) { if (specialCalculation) { UpdateRowAmountPercentSpecial(model, calRow, value); } else { UpdateRowAmountPercent(model, calRow, value); } } else { UpdateRowAmountFix(model, calRow, value); } } else { //set row's total amount //master row calRow.Total = value; //if currency needed //if master amount if (calRow.Currency != null && calRow.Currency.Currency != "CHF" && calRow.EditedField == "F") { if (model.GeneralSetting.Currency.Rate > 0) { calRow.Total = (value * model.GeneralSetting.Currency.Rate); } } } } }
void UpdateGroupAmount(CalculationModel model, int group, int groupID) { CalculationItemModel oGroup = model.CalculationMarginViewItems.Find(item => item.Group == group && item.ItemOrder == groupID && item.IsSummary); if (oGroup != null) { oGroup.VariableTotal = 0; oGroup.AmountFix = 0; //set Verwaltungs- und Vertriebskosten if (oGroup.Tag == "VVK") { oGroup.Total = 0; } //update items in group list first foreach (int i in oGroup.SummaryGroups) { //get items per group var oModels = model.CalculationMarginViewItems.FindAll(item => item.Group == i && !item.IsSummary); //update group's amout fix oGroup.AmountFix += (from item in oModels select item.AmountFix).Sum(); //update group's variable total oGroup.VariableTotal += (from item in oModels select item.VariableTotal).Sum(); if (oGroup.Tag == "VVK") { oGroup.Total += (from item in oModels select item.Total).Sum(); } } //set Deckungsbeitrag if (oGroup.Tag == "VK") { oGroup.VariableTotal = oGroup.AmountFix; } } }
void UpdateCalculationRowAmount(CalculationModel model, CalculationItemModel calRow, decimal value, bool isPercent, bool specialCalculation) { if (calRow != null) { //if not master amount row //master row's is VK(brutto) if (calRow.Tag != "VK(brutto)") { if (isPercent) { if (specialCalculation) { UpdateRowAmountPercentSpecial(model, calRow, value); } else { UpdateRowAmountPercent(model, calRow, value); } } else { if (specialCalculation) { UpdateRowAmountFixSpecial(model, calRow, value); } else { UpdateRowAmountFix(model, calRow, value); } } } else { //set row's total amount //master row calRow.Total = value; } } }
public void UpdateRowAmountFix(CalculationModel model, CalculationItemModel calRow, decimal value, bool skipBaseGroupRows = false) { //decimal iBaseAmount = model.MasterAmount; decimal iBaseAmount = model.CalculationViewItems[0].AmountFix; if (model.CalculationViewItems[0].Currency.Currency != "CHF") { iBaseAmount = model.CalculationViewItems[0].Total; } if (!skipBaseGroupRows) { //get summary from above rows in gridview if (calRow.BaseCalculationGroupRows != null) { iBaseAmount = GetCalculationBaseSummaryGroups(model, calRow.BaseCalculationGroupRows); } } //calculate calRow.AmountFix = value; if (iBaseAmount > 0) { calRow.AmountPercent = (value / iBaseAmount) * 100; } calRow.Total = calRow.AmountFix; //if currency needed //calRow.Currency.CurrencyBaseAmountField == "F" if (calRow.EditedField == "F") { //calRow.Currency.OriginalAmount = calRow.AmountPercent; if (model.GeneralSetting.Currency.Rate > 0) { if (calRow.Currency.Currency != "CHF") { //calRow.AmountPercent = calRow.AmountPercent * model.GeneralSetting.Currency.Rate; calRow.AmountPercent = calRow.AmountPercent * model.GeneralSetting.Currency.Rate; calRow.Total = iBaseAmount * (calRow.AmountPercent / 100); } } } //if convert needed //if edit F convert P if (calRow.Convert != null) { if (calRow.EditedField == "F") { if (calRow.Convert.Unit == "VE" && model.GeneralSetting.Convert.UnitNumber > 0) { calRow.AmountPercent = calRow.AmountPercent / model.GeneralSetting.Convert.UnitNumber; calRow.Total = (calRow.AmountPercent / 100) * iBaseAmount; } //if (calRow.Convert.Unit == "EE") //{ // calRow.Convert.OriginalAmount = calRow.AmountPercent; //} //else if (calRow.Convert.Unit == "VE" && model.GeneralSetting.Convert.UnitNumber > 0) //{ // calRow.AmountPercent = calRow.AmountPercent / model.GeneralSetting.Convert.UnitNumber; // calRow.Total = (calRow.AmountPercent / 100) * iBaseAmount; //} } } }
public void UpdateRowAmountPercent(CalculationModel model, CalculationItemModel calRow, decimal value, bool skipBaseGroupRows = false) { //decimal iBaseAmount = model.MasterAmount; decimal iBaseAmount = model.CalculationViewItems[0].AmountFix; if (model.CalculationViewItems[0].Currency.Currency != "CHF") { iBaseAmount = model.CalculationViewItems[0].Total; } if (!skipBaseGroupRows) { //get summary from above rows in gridview if (calRow.BaseCalculationGroupRows != null) { iBaseAmount = GetCalculationBaseSummaryGroups(model, calRow.BaseCalculationGroupRows); } } //original row's fix-amount decimal iOriginalFixAmount = calRow.AmountFix; calRow.AmountPercent = value; calRow.AmountFix = iBaseAmount * (calRow.AmountPercent / 100); calRow.Total = calRow.AmountFix; ////if currency needed ////calRow.Currency.CurrencyBaseAmountField == "F" //if (calRow.Currency != null && calRow.EditedField == "F") //{ // //calRow.Currency.OriginalAmount = calRow.AmountPercent; // if (model.GeneralSetting.Currency.Rate > 0) // { // if (calRow.Currency.Currency != "CHF") // { // //calRow.AmountPercent = calRow.AmountPercent * model.GeneralSetting.Currency.Rate; // calRow.AmountPercent = ((iOriginalFixAmount / iBaseAmount) * 100) * model.GeneralSetting.Currency.Rate; // calRow.AmountFix = iOriginalFixAmount; // calRow.Total = iBaseAmount * (calRow.AmountPercent / 100); // } // else // { // calRow.AmountPercent = (iOriginalFixAmount / iBaseAmount) * 100; // calRow.AmountFix = iOriginalFixAmount; // calRow.Total = calRow.AmountFix; // } // } //} //if convert needed //!String.IsNullOrWhiteSpace(calRow.Convert.ConvertAmountField) //if edit P convert F if (calRow.Convert != null) { if (calRow.EditedField == "P") { if (calRow.Convert.Unit == "VE" && model.GeneralSetting.Convert.UnitNumber > 0) { calRow.AmountFix = calRow.AmountFix / model.GeneralSetting.Convert.UnitNumber; calRow.Total = calRow.AmountFix; } } //if (calRow.EditedField == "F") //{ // if (calRow.Convert.Unit == "VE" && model.GeneralSetting.Convert.UnitNumber > 0) // { // calRow.AmountFix = calRow.AmountFix / model.GeneralSetting.Convert.UnitNumber; // calRow.Total = calRow.AmountFix; // } //} //else if (String.IsNullOrWhiteSpace(calRow.EditedField) || calRow.EditedField == "P") //{ // //if currency with unit // if (calRow.Currency != null && calRow.EditedField == "F") // { // if (calRow.Convert.Unit == "VE" && model.GeneralSetting.Convert.UnitNumber > 0) // { // calRow.Convert.OriginalAmount = calRow.AmountPercent; // calRow.AmountPercent = calRow.AmountPercent / model.GeneralSetting.Convert.UnitNumber; // calRow.Total = iBaseAmount * (calRow.AmountPercent / 100); // } // } // else // { // calRow.Convert.OriginalAmount = calRow.Convert.OriginalAmount > 0 ? calRow.Convert.OriginalAmount : value; // //only unit // //calling from summary-all functionals // if (calRow.Convert.Unit == "EE") // { // //calRow.Convert.OriginalAmount = calRow.AmountPercent; // calRow.AmountPercent = calRow.Convert.OriginalAmount; // calRow.AmountFix = iBaseAmount * (calRow.AmountPercent / 100); // calRow.Total = calRow.AmountFix; // } // else if (calRow.Convert.Unit == "VE" && model.GeneralSetting.Convert.UnitNumber > 0) // { // calRow.AmountPercent = calRow.Convert.OriginalAmount; // calRow.AmountFix = iBaseAmount * (calRow.AmountPercent / 100); // calRow.AmountPercent = calRow.AmountPercent / model.GeneralSetting.Convert.UnitNumber; // calRow.Total = (iBaseAmount * (calRow.AmountPercent / 100)); // } // } //} } }
void UpdateGroupAmount(CalculationModel model, int group, int groupID, bool updateGroupOnly) { CalculationItemModel oGroup = model.CalculationViewItems.Find(item => item.Group == group && item.ItemOrder == groupID && item.IsSummary); if (oGroup != null) { oGroup.Total = 0; //update items in group list first foreach (int i in oGroup.SummaryGroups) { //get items per group var oModels = model.CalculationViewItems.FindAll(item => item.Group == i && !item.IsSummary); if (!updateGroupOnly) { foreach (CalculationItemModel item in oModels) { bool isSpecial = false; if (item.Group == 0) { //if (item.Currency.Currency != "CHF") //{ // //if use custom currency // UpdateCalculationRowAmount(model, item.Order, item.Total, false, isSpecial, false); //} //else //{ // UpdateCalculationRowAmount(model, item.Order, item.AmountFix, false, isSpecial, false); //} UpdateCalculationRowAmount(model, item.ItemOrder, item.AmountFix, false, isSpecial, false); } else { //if special row if (item.Tag == "SKT" || item.Tag == "PV" || item.Tag == "RBT") { isSpecial = true; } if (item.EditedField == "P" || String.IsNullOrWhiteSpace(item.EditedField)) { UpdateCalculationRowAmount(model, item.ItemOrder, item.AmountPercent, true, isSpecial, false); } else { ////if currency //if (model.GeneralSetting.Currency.Mode == "E" && item.Currency != null) //{ // //allow change currency if edited amount fix only // //able to change currency amount percent only // UpdateCalculationRowAmount(model, item.ItemOrder, item.AmountPercent, true, isSpecial, false); //} //else //{ // UpdateCalculationRowAmount(model, item.ItemOrder, item.AmountFix, false, isSpecial, false); //} UpdateCalculationRowAmount(model, item.ItemOrder, item.AmountFix, false, isSpecial, false); } ////if use scale //if (model.ScaleCalculationItems.Count > 1 && item.Tag == "GA") //{ // if (model.GeneralSetting.PriceScale.MarkUp == "F") // { // UpdateCalculationRowAmount(model, item.Order, item.AmountFix, false, isSpecial, false); // } // else // { // UpdateCalculationRowAmount(model, item.Order, item.AmountPercent, true, isSpecial, false); // } //} //else //{ // //if not use scale // UpdateCalculationRowAmount(model, item.Order, item.AmountPercent, true, isSpecial, false); //} } //if special field if (isSpecial) { //if convert needed for group if (item.Convert != null && item.Convert.Unit == "VE") { if (model.GeneralSetting.Convert.UnitNumber > 0) { item.Total = item.Total / model.GeneralSetting.Convert.UnitNumber; } } } } } //update group's total only oGroup.Total += (from item in oModels select item.Total).Sum(); } //if convert needed for group if (oGroup.Convert != null && oGroup.Convert.Unit == "VE") { if (//_Model.GeneralSetting.Convert.VEUnitNumber > 0 && //_Model.GeneralSetting.Convert.EEUnitNumber > 0 && model.GeneralSetting.Convert.UnitNumber > 0) { oGroup.Total = oGroup.Total / model.GeneralSetting.Convert.UnitNumber; } } } }
void UpdateGroupAmount(CalculationModel model, CalculationItemModel groupRow, bool updateGroupOnly) { //CalculationItemModel oGroup = model.CalculationViewItems.Find(item => item.Group == group && item.Order == groupID && item.IsSummary); if (groupRow != null && groupRow.CostCalculatonGroup != null) { //get calculation items from group below (as see in gridview) //get items per group decimal iItemSummary = 0; if (groupRow.CostCalculatonGroup.BaseCalculationGroupRows.Count > 0) { var oModels = model.CalculationViewItems.FindAll( item => !item.IsSummary && groupRow.CostCalculatonGroup.BaseCalculationGroupRows.Contains(item.Group)); foreach (CalculationItemModel item in oModels) { bool isSpecial = false; if (item.Group == 0) { UpdateCalculationRowAmount(model, item.ItemOrder, item.AmountFix, false, isSpecial, false); } else { //if special row if (item.Tag == "SKT" || item.Tag == "PV" || item.Tag == "RBT") { isSpecial = true; } if (item.EditedField == "P" || String.IsNullOrWhiteSpace(item.EditedField)) { UpdateCalculationRowAmount(model, item.ItemOrder, item.AmountPercent, true, isSpecial, false); } else { UpdateCalculationRowAmount(model, item.ItemOrder, item.AmountFix, false, isSpecial, false); } } } //update group's total iItemSummary = (from row in oModels select row.Total).Sum(); } decimal iItemGroupSummary = 0; if (groupRow.CostCalculatonGroup.SummaryGroups.Count > 0) { iItemGroupSummary = (from row in model.CalculationViewItems where row.IsSummary && groupRow.CostCalculatonGroup.SummaryGroups.Contains(row.Group) select row.Total).Sum(); //update group's total only groupRow.Total = iItemGroupSummary - iItemSummary; } else { //if no summary group like VVK //update group's total only groupRow.Total = iItemSummary; } } }
public void UpdateBaseAmountAll(CalculationModel model) { if (model.CalculationMarginViewItems == null) { return; } //if margin not enabled if (!model.GeneralSetting.Options.Contains("M")) { return; } //get margin item by tag var oModels = model.CalculationMarginViewItems.FindAll(item => !item.IsSummary); foreach (CalculationItemModel oMargin in oModels) { CalculationItemModel oBasic = model.CalculationViewItems.Where(o => o.Tag == oMargin.Tag).FirstOrDefault(); if (oBasic != null) { oMargin.Total = oBasic.Total; } else { //if BEN tag oMargin.Total = model.CalculationViewItems.Where(o => o.Tag.StartsWith("BEN")).Sum(o => o.Total); } //set variable total if (oMargin.Tag == "BEK" || oMargin.Tag == "VK(bar)" || oMargin.Tag == "VK(brutto)") { //if base amount row oMargin.VariableTotal = oMargin.Total; } else { if (oMargin.EditedField == "P") { //calculate amount fix oMargin.AmountFix = oMargin.Total * (oMargin.AmountPercent / 100); //calculate variable total oMargin.VariableTotal = oMargin.Total - oMargin.AmountFix; } else if (oMargin.EditedField == "F") { //calculate amount fix oMargin.AmountPercent = (oMargin.AmountFix / oMargin.Total) * 100; //calculate variable total oMargin.VariableTotal = oMargin.Total - oMargin.AmountFix; } else if (oMargin.EditedField == "V") { //calculate amount fix oMargin.AmountFix = oMargin.Total - oMargin.VariableTotal; //calculate amount percent oMargin.AmountPercent = (oMargin.AmountFix / oMargin.Total) * 100; } else { //calculate amount fix oMargin.AmountFix = oMargin.Total * (oMargin.AmountPercent / 100); //calculate variable total oMargin.VariableTotal = oMargin.Total - oMargin.AmountFix; } } } //update group amount var oGroups = model.CalculationMarginViewItems.FindAll(item => item.IsSummary); foreach (CalculationItemModel item in oGroups) { UpdateGroupAmount(model, item.Group, item.ItemOrder); } }