Пример #1
0
        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));
        }
Пример #2
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();
                }
            }
        }