private bool canAddMealOut() { if (rbIn.Checked) { return(false); } DateTime excDate = dtpStartDate.Value; int excAmount = int.Parse(tbAmount.Text); int indS = -1, indE = -1; for (int i = 0; i < dataGridView1.Rows.Count; i++) { sMeal meal = (dataGridView1.Rows[i].Tag as sMeal); if (meal.Type == sMeal.MoveType.In) { if (meal.StartDate <= excDate) { indS = i; } if (indS != -1 && indE == -1 && meal.StartDate > excDate) { indE = i - 1; } } } if (indS == -1) { //если перед первым завозом return(true); } int start = dataGridView1.Rows.Count - 1; if (indE != -1) { start = indE; } int remain = -excAmount; for (int i = start; i >= indS; i--) { sMeal meal = (dataGridView1.Rows[i].Tag as sMeal); if (meal.Type == sMeal.MoveType.In) { remain += meal.Amount; break; } else { remain -= meal.Amount; } } return(!(remain < 0)); }
protected static void updateMeal(MySqlConnection sql) { MySqlCommand cmd = new MySqlCommand("", sql); List <sMeal> meals = getMealPeriods(sql); sMeal lastIncome = null; foreach (sMeal m in meals) { if (m.Type.ToString().ToLower() == "in") { if (lastIncome != null) { lastIncome.endDate = m.StartDate; } lastIncome = m; lastIncome.totalAmount += m.Amount; } else if (lastIncome != null) { lastIncome.totalAmount -= m.Amount; } } foreach (sMeal m in meals) { if (m.Type.ToString().ToLower() == "in" && m.endDate != DateTime.MaxValue && m.totalAmount > 0) { int rabDays = getRabDays(m.StartDate, m.endDate, sql); float rate = rabDays > 0 ? (float)m.totalAmount / rabDays : 0; cmd.CommandText = String.Format("UPDATE meal SET m_rate = {0} WHERE m_id = {1:d}", rate.ToString("0.0000").Replace(',', '.'), m.Id); cmd.ExecuteNonQuery(); } } }