private void button2_Click(object sender, EventArgs e) { this.button_pay.Enabled = false; if (Math.Round(Convert.ToDecimal(cash_sum.Text.Replace(".", ",")), 2) + Math.Round(Convert.ToDecimal(get_non_cash_sum(0)), 2) + Math.Round(Convert.ToDecimal(sertificates_sum.Text), 2) + Math.Round(Convert.ToDecimal(pay_bonus_many.Text.Replace(".", ",")), 2) - Math.Round(Convert.ToDecimal(pay_sum.Text.Replace(".", ",")), 2) < 0) { MessageBox.Show("Проверьте сумму внесенной оплаты"); MessageBox.Show("Наличные" + Math.Round(Convert.ToDecimal(cash_sum.Text.Replace(".", ",")), 2).ToString()); MessageBox.Show("Карта " + Math.Round(Convert.ToDecimal(get_non_cash_sum(0)), 2).ToString()); MessageBox.Show("Сертификаты " + Math.Round(Convert.ToDecimal(sertificates_sum.Text), 2).ToString()); MessageBox.Show("Бонусы " + Math.Round(Convert.ToDecimal(pay_bonus_many.Text.Replace(".", ",")), 2).ToString()); MessageBox.Show("Общая сумма " + Math.Round(Convert.ToDecimal(pay_sum.Text.Replace(".", ",")), 2)); return; } if (Convert.ToDecimal(remainder.Text.Trim()) > 0) { if (cc.check_type.SelectedIndex != 0) { MessageBox.Show(" Сумма возврата должна быть равно сумме оплаты "); return; } } if (Convert.ToInt32(pay_bonus_many.Text) != 0)//При оплате бонусами бонусы не начисляются { bonus_on_document.Text = "0"; } if (Convert.ToDecimal(pay_bonus_many.Text) > 0) { if (Convert.ToDecimal(non_cash_sum.Text) + Convert.ToDecimal(sertificates_sum.Text) + Convert.ToDecimal(pay_bonus_many.Text) > Convert.ToDecimal(pay_sum.Text)) { MessageBox.Show("Сумма сертификатов + сумма по карте оплаты + сумма по бонусам превышает сумму чека "); return; } } else { if (Convert.ToDecimal(non_cash_sum.Text) + Convert.ToDecimal(sertificates_sum.Text) > Convert.ToDecimal(pay_sum.Text)) { MessageBox.Show(" Сумма сертификатов + сумма по карте оплаты превышает сумму чека "); return; } } cc.listView_sertificates.Items.Clear(); foreach (ListViewItem lvi in listView_sertificates.Items) { cc.listView_sertificates.Items.Add((ListViewItem)lvi.Clone()); } MainStaticClass.write_event_in_log("Окно оплаты перед записью и закрытием документа ", "Документ чек", cc.numdoc.ToString()); //Необходимо проверка на сумму документа где сумма всех форм оплаты равно сумме документа //Получаем общу сумму по оплате decimal _cash_summ_ = Convert.ToDecimal(cash_sum.Text) - Convert.ToDecimal(remainder.Text); decimal _non_cash_summ_ = Convert.ToDecimal(get_non_cash_sum(1)); decimal _sertificates_sum_ = Convert.ToDecimal(sertificates_sum.Text); //decimal _pay_bonus_many_ = Convert.ToDecimal((int)(Convert.ToInt32(pay_bonus_many.Text)/100)); decimal _pay_bonus_many_ = Convert.ToDecimal(pay_bonus_many.Text); decimal sum_of_the_document = cc.calculation_of_the_sum_of_the_document(); if (_non_cash_summ_ == 0) { sum_of_the_document = (int)sum_of_the_document; } if (Math.Round(sum_of_the_document, 2) != Math.Round((_cash_summ_ + _non_cash_summ_ + _sertificates_sum_ + _pay_bonus_many_), 2)) { MessageBox.Show(" Повторно внесите суммы оплаты, обнаружено несхождение в окне оплаты "); MessageBox.Show("Сумма документа = " + sum_of_the_document.ToString() + " а сумма оплат = " + (_cash_summ_ + _non_cash_summ_ + _sertificates_sum_ + _pay_bonus_many_).ToString()); MessageBox.Show("Сумма наличные = " + _cash_summ_.ToString()); MessageBox.Show("Сумма карта оплаты = " + _non_cash_summ_.ToString()); MessageBox.Show("Сумма сертификатов = " + _sertificates_sum_.ToString()); MessageBox.Show("Сумма бонусов = " + _pay_bonus_many_.ToString()); return; } //здесь перед записью еще проверка процессингового центра if (cc.client.Tag != null) { if (cc.check_bonus_is_on()) { if (!continue_sales()) { return; } } } //Если это возврат то необходимо проверить сумму по каждой форме оплаты if (cc.check_type.SelectedIndex == 1) { if (!MainStaticClass.validate_cash_sum_non_cash_sum_on_return(cc.id_sale, _cash_summ_, _non_cash_summ_)) { return; } } it_is_paid(); }