private void metroButtonAgregarPago_Click(object sender, EventArgs e) { try { //Declaro las variable que voy a usar Double totalmediospago = 0; double totalcomprobante = 0; int idpago = 0; //Declaro los Controladores ComprobanteManager y Pagos Manager ComprobantesManager c = new ComprobantesManager(); PagosManager p = new PagosManager(); //Verifico si no estan vacios los DatagridGastospendientes y Medios de Pago if (metroGridComprobantes.Rows.Count == 0 || metroGridMedioPAgo.Rows.Count == 0) { MessageBox.Show("Error, Inserte los Medios de Pago y los comprobantes a aplicarle el pago", "Sistema de Gestion de Compras", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { //Calculo el Total de Comprobantes foreach (DataGridViewRow row1 in metroGridComprobantes.Rows) { DataGridViewCheckBoxCell ck = row1.Cells["column7"] as DataGridViewCheckBoxCell; if (Convert.ToBoolean(ck.Value) == true) { totalcomprobante += Math.Round(Convert.ToDouble(row1.Cells["column5"].Value.ToString()), 2); } } //Calculo el Total de Medios de Pago foreach (DataGridViewRow rown1 in metroGridMedioPAgo.Rows) { totalmediospago += Convert.ToDouble(rown1.Cells["ImportePago"].Value.ToString().Replace(".", ",")); } if (totalcomprobante > totalmediospago) { //mensaje de Warning el o los el total de los comprobantes son mayores que los medios de pago DialogResult dialogResult1 = MessageBox.Show("Precaucion,El total de Comprobantes es mayor que el total de medios de pago ¿Deseas Confirmarla como Pagada?", "Sistema de Gestios de Compras v1.0", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation); if (dialogResult1 == DialogResult.Yes) { //aplico el pago a los comprobantes //INSERTAR EN LA TABLE PAGOS //INSERTO EN LA TABLA PAGOS Y OBTENGO EL ULTIMO IDPAGO INSERTADO if (string.IsNullOrEmpty(metroTextBoxIDRet.Text) == true) { idpago = p.InsertarPagossinRetencion(metroDateTimeFechaPago.Value, totalmediospago, metroTextBoxConcepto.Text); } else { idpago = p.InsertarPagos(metroDateTimeFechaPago.Value, totalmediospago, metroTextBoxConcepto.Text, int.Parse(metroTextBoxIDRet.Text)); } //APLICO LOS PAGOS A CADA COMPROBANTE //INSERTO EN LA TABLA DETALLE DE PAGOS Y ACTUALIZO EL ESTADO DE LOS COMPROBANTES A 1 DialogResult dialogResult = MessageBox.Show("Pago Realizado, Deseas Confirmarla como Pagada", "Sistema de Gestios de Compras v1.0", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation); if (dialogResult == DialogResult.Yes) { //si se aplica la cancelacion del comprobante se actualiza el estado del comprobante foreach (DataGridViewRow row2 in metroGridComprobantes.Rows) { DataGridViewCheckBoxCell ck3 = row2.Cells["Column7"] as DataGridViewCheckBoxCell; if (Convert.ToBoolean(ck3.Value) == true) { int idProveedor = new ProveedorManager().DevolverIdPRoveedorporNombre(metroTextBoxNOMBRE.Text); p.InsertarDetallePago(idpago, c.DevolverIDporNoFactura2(row2.Cells["column3"].Value.ToString(), row2.Cells["column4"].Value.ToString(), idProveedor)); //Actualizar EStado de Comprobante c.ActualizarEstado(c.DevolverIDporNoFactura2(row2.Cells["column3"].Value.ToString(), row2.Cells["column4"].Value.ToString(), idProveedor), 1); } } } //INSERTO EN LA TABLA MEDIOS DE PAGO foreach (DataGridViewRow row3 in metroGridMedioPAgo.Rows) { p.InsertarMediosPago(p.DevolverMedioPago(row3.Cells["MedioPago"].Value.ToString()), Convert.ToDateTime(row3.Cells["FechaVencimiento"].Value), row3.Cells["ChequeTransferencia"].Value.ToString(), p.DevolverBanco(row3.Cells["Banco"].Value.ToString()), Convert.ToDouble(row3.Cells["ImportePago"].Value.ToString().Replace(".", ",")), idpago); } //Declaro la instancia del ReporteViwer y lo llamo ReportesForm reporte = new ReportesForm(); reporte.idpagoprop = idpago; reporte.idpagoprop = idpago; reporte.ShowDialog(); //BORRO TODOS LOS DATOS DEL DATA GRID Y DE LOS TEXTBOXES metroGridMedioPAgo.Rows.Clear(); metroGridComprobantes.DataSource = ""; metroTextBoxConcepto.Clear(); metroTextBoxChque.Clear(); metroTextBoxiMPORTE.Clear(); } //Si no se cancela el comprobante no se actualiza el estado del comprobante else if (dialogResult1 == DialogResult.No) { MessageBox.Show("Vuelva a Intentarlo", "Sistema de Gestion de Compras", MessageBoxButtons.OK, MessageBoxIcon.Information); } } else { if (totalmediospago >= totalcomprobante) { //INSERTAR EN LA TABLE PAGOS //INSERTO EN LA TABLA PAGOS Y OBTENGO EL ULTIMO IDPAGO INSERTADO if (string.IsNullOrEmpty(metroTextBoxIDRet.Text)) { idpago = p.InsertarPagossinRetencion(metroDateTimeFechaPago.Value, totalmediospago, metroTextBoxConcepto.Text); } else { idpago = p.InsertarPagos(metroDateTimeFechaPago.Value, totalmediospago, metroTextBoxConcepto.Text, int.Parse(metroTextBoxIDRet.Text)); } //APLICO LOS PAGOS A CADA COMPROBANTE //INSERTO EN LA TABLA DETALLE DE PAGOS Y ACTUALIZO EL ESTADO DE LOS COMPROBANTES A 1 DialogResult dialogResult = MessageBox.Show("Pago Realizado, Deseas Confirmarla como Pagada", "Sistema de Gestios de Compras v1.0", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation); if (dialogResult == DialogResult.Yes) { //si se aplica la cancelacion del comprobante se actualiza el estado del comprobante foreach (DataGridViewRow row2 in metroGridComprobantes.Rows) { DataGridViewCheckBoxCell ck3 = row2.Cells["column7"] as DataGridViewCheckBoxCell; if (Convert.ToBoolean(ck3.Value) == true) { p.InsertarDetallePago(idpago, c.DevolverIDporNoFactura(row2.Cells["column3"].Value.ToString(), row2.Cells["column4"].Value.ToString(), int.Parse(row2.Cells["IdProveedor"].Value.ToString()))); //Actualizar EStado de Comprobante c.ActualizarEstado(c.DevolverIDporNoFactura(row2.Cells["column3"].Value.ToString(), row2.Cells["column4"].Value.ToString(), int.Parse(row2.Cells["IdProveedor"].Value.ToString())), 1); } } } //Si no se cancela el comprobante no se actualiza el estado del comprobante else if (dialogResult == DialogResult.No) { foreach (DataGridViewRow row2 in metroGridComprobantes.Rows) { DataGridViewCheckBoxCell ck3 = row2.Cells["Column7"] as DataGridViewCheckBoxCell; if (Convert.ToBoolean(ck3.Value) == true) { p.InsertarDetallePago(idpago, c.DevolverIDporNoFactura(row2.Cells["column3"].Value.ToString(), row2.Cells["column4"].Value.ToString(), int.Parse(row2.Cells["IdProveedor"].Value.ToString()))); //Actualizar EStado de Comprobante //c.ActualizarEstado(c.DevolverIDporNoFactura(row2.Cells["Column2"].Value.ToString(), row2.Cells["Column3"].Value.ToString()), 1); } } } //INSERTO EN LA TABLA MEDIOS DE PAGO foreach (DataGridViewRow row3 in metroGridMedioPAgo.Rows) { p.InsertarMediosPago(p.DevolverMedioPago(row3.Cells["MedioPago"].Value.ToString()), Convert.ToDateTime(row3.Cells["FechaVencimiento"].Value), row3.Cells["ChequeTransferencia"].Value.ToString(), p.DevolverBanco(row3.Cells["Banco"].Value.ToString()), Convert.ToDouble(row3.Cells["ImportePago"].Value.ToString().Replace(".", ",")), idpago); } //Declaro la instancia del ReporteViwer y lo llamo ReportesForm reporte = new ReportesForm(); reporte.idpagoprop = idpago; reporte.idpagoprop = idpago; reporte.ShowDialog(); //BORRO TODOS LOS DATOS DEL DATA GRID Y DE LOS TEXTBOXES metroGridMedioPAgo.Rows.Clear(); metroGridComprobantes.DataSource = ""; metroTextBoxConcepto.Clear(); metroTextBoxChque.Clear(); metroTextBoxiMPORTE.Clear(); } } } } catch (Exception) { throw; } }