private async void BtnSave_Click(object sender, EventArgs e) { try { var(result, usuario, direccion, venta, agendamiento) = await this.Comprobaciones(); if (result) { MensajeEspera.ShowWait("Guardando..."); List <string> errores = new List <string>(); string rpta = ""; if (this.IsEditar) { rpta = NUsuarios.EditarUsuario(usuario.Id_usuario, usuario); } else { rpta = NUsuarios.InsertarUsuario(out int id_usuario, usuario); direccion.Id_usuario = id_usuario; venta.Id_cliente = id_usuario; usuario.Id_usuario = id_usuario; } if (rpta.Equals("OK")) { if (this.IsEditar) { rpta = NDireccion_clientes.EditarDireccion(direccion.Id_direccion, direccion); } else { rpta = NDireccion_clientes.InsertarDireccion(out int id_direccion, direccion); venta.Id_direccion = id_direccion; } if (rpta.Equals("OK")) { if (this.IsEditar) { rpta = NVentas.EditarVenta(venta.Id_venta, venta); } else { rpta = NVentas.InsertarVenta(out int id_venta, venta); venta.Id_venta = id_venta; } if (rpta.Equals("OK")) { if (this.rdActual.Checked && !this.IsEditar && this.chkDescontar.Checked) { foreach (Articulos art in this.ArticulosSelected) { Detalle_articulos_venta detalle = new Detalle_articulos_venta { Articulo = art, Id_articulo = art.Id_articulo, Venta = venta, Id_venta = venta.Id_venta, Cantidad_articulo = (int)art.Cantidad_articulo, Valor_articulo = art.Valor_articulo, Estado_detalle = "ACTIVO", }; var(rptaDetalle, id_detalle) = await NDetalle_articulos_venta.InsertarDetalle(detalle); if (!rptaDetalle.Equals("OK")) { errores.Add(rptaDetalle); } } } MainController main = MainController.GetInstance(); if (!this.IsEditar) { rpta = NUsuariosVentas.InsertarUsuarioVenta(new Usuarios_ventas { Id_usuario = main.Usuario.Id_usuario, Id_venta = venta.Id_venta, }); if (rpta.Equals("OK")) { agendamiento.Id_venta = venta.Id_venta; rpta = NAgendamiento_cobros.InsertarAgendamiento(out int id_agendamiento, agendamiento); if (rpta.Equals("OK")) { MensajeEspera.CloseForm(); Mensajes.MensajeInformacion("Se guardó correctamente el cliente, " + "número cliente: " + usuario.Id_usuario + " Número venta: " + venta.Id_venta, "Entendido"); this.Close(); } else { throw new Exception(rpta); } } else { throw new Exception(rpta); } } else { //Obtener el último agendamiento var(rptaAg, dt) = await NAgendamiento_cobros.BuscarAgendamientos("ID VENTA", venta.Id_venta.ToString()); if (dt != null) { agendamiento = new Agendamiento_cobros(dt.Rows[0]); agendamiento.Valor_cobro = venta.Valor_cuota; agendamiento.Fecha_cobro = this.dateUltimoPago.Value; rptaAg = await NAgendamiento_cobros.EditarAgendamiento(agendamiento.Id_agendamiento, agendamiento); if (rptaAg != "OK") { Mensajes.MensajeInformacion("Se actualizó el cliente pero no su último pago," + "número cliente: " + usuario.Id_usuario + " Número venta: " + venta.Id_venta, "Entendido"); this.OnRefresh?.Invoke(sender, e); this.Close(); } else { Mensajes.MensajeInformacion("Se actualizó correctamente el cliente, " + "número cliente: " + usuario.Id_usuario + " Número venta: " + venta.Id_venta, "Entendido"); this.OnRefresh?.Invoke(sender, e); this.Close(); } } else { Mensajes.MensajeInformacion("Se actualizó correctamente el cliente pero no se encontraron sus agendamientos, número asignado: " + usuario.Id_usuario, "Entendido"); this.OnRefresh?.Invoke(sender, e); this.Close(); } } } } else { throw new Exception(rpta); } } else { throw new Exception(rpta); } } MensajeEspera.CloseForm(); } catch (Exception ex) { MensajeEspera.CloseForm(); Mensajes.MensajeErrorCompleto(this.Name, "BtnSave_Click", "Hubo un error al guardar el cliente", ex.Message); } }
public async Task <(string rpta, int id_detalle)> InsertarDetalle(Detalle_articulos_venta detalle) { int id_detalle = 0; int contador = 0; string rpta = ""; string consulta = "INSERT INTO Detalle_articulos_venta (Id_articulo, Id_venta, Cantidad_articulo, Valor_articulo, Estado_detalle) " + "VALUES(@Id_articulo, @Id_venta, @Cantidad_articulo, @Valor_articulo, @Estado_detalle) " + "SET @Id_detalle_venta = SCOPE_IDENTITY() "; SqlConnection SqlCon = new SqlConnection(); SqlCon.InfoMessage += new SqlInfoMessageEventHandler(SqlCon_InfoMessage); SqlCon.FireInfoMessageEventOnUserErrors = true; try { SqlCon.ConnectionString = DConexion.Cn; await SqlCon.OpenAsync(); SqlTransaction tran = SqlCon.BeginTransaction(); SqlCommand SqlCmd = new SqlCommand { Connection = SqlCon, CommandText = consulta, CommandType = CommandType.Text, Transaction = tran, }; SqlParameter Id_detalle_venta = new SqlParameter { ParameterName = "@Id_detalle_venta", SqlDbType = SqlDbType.Int, Direction = ParameterDirection.Output }; SqlCmd.Parameters.Add(Id_detalle_venta); SqlParameter Id_articulo = new SqlParameter { ParameterName = "@Id_articulo", SqlDbType = SqlDbType.Int, Value = detalle.Id_articulo, }; SqlCmd.Parameters.Add(Id_articulo); contador += 1; SqlParameter Id_venta = new SqlParameter { ParameterName = "@Id_venta", SqlDbType = SqlDbType.Int, Value = detalle.Id_venta, }; SqlCmd.Parameters.Add(Id_venta); contador += 1; SqlParameter Cantidad_articulo = new SqlParameter { ParameterName = "@Cantidad_articulo", SqlDbType = SqlDbType.Int, Value = detalle.Cantidad_articulo, }; SqlCmd.Parameters.Add(Cantidad_articulo); contador += 1; SqlParameter Valor_articulo = new SqlParameter { ParameterName = "@Valor_articulo", SqlDbType = SqlDbType.Decimal, Value = detalle.Cantidad_articulo, }; SqlCmd.Parameters.Add(Valor_articulo); contador += 1; SqlParameter Estado_detalle = new SqlParameter { ParameterName = "@Estado_detalle", SqlDbType = SqlDbType.VarChar, Size = 50, Value = detalle.Estado_detalle.Trim().ToUpper() }; SqlCmd.Parameters.Add(Estado_detalle); contador += 1; //Ejecutamos nuestro comando rpta = await SqlCmd.ExecuteNonQueryAsync() >= 1 ? "OK" : "NO SE INGRESÓ"; if (!rpta.Equals("OK")) { tran.Rollback(); if (this.Mensaje_respuesta != null) { rpta = this.Mensaje_respuesta; } } else { tran.Commit(); id_detalle = Convert.ToInt32(SqlCmd.Parameters["@Id_detalle_venta"].Value); } tran.Dispose(); } //Mostramos posible error que tengamos catch (SqlException ex) { rpta = ex.Message; } catch (Exception ex) { rpta = ex.Message; } finally { //Si la cadena SqlCon esta abierta la cerramos if (SqlCon.State == ConnectionState.Open) { SqlCon.Close(); } } return(rpta, id_detalle); }
public static async Task <(string rpta, int id_detalle)> InsertarDetalle(Detalle_articulos_venta detalle) { DDetalle_articulos_venta DDetalle_articulos_venta = new DDetalle_articulos_venta(); return(await DDetalle_articulos_venta.InsertarDetalle(detalle)); }
private async void BtnClientes_Click(object sender, EventArgs e) { MensajeEspera.ShowWait("Cargando reporte..."); MainController main = MainController.GetInstance(); int id_cobro = main.Id_cobro; DataTable dtClientes = new DataTable("Clientes"); dtClientes.Columns.Add("Id_cliente", typeof(int)); dtClientes.Columns.Add("Nombre_cliente", typeof(string)); dtClientes.Columns.Add("Celular_cliente", typeof(string)); dtClientes.Columns.Add("Referencia_articulo", typeof(string)); dtClientes.Columns.Add("Saldo_restante", typeof(string)); dtClientes.Columns.Add("Venta_total", typeof(string)); dtClientes.Columns.Add("Fecha_venta", typeof(string)); dtClientes.Columns.Add("Fecha_ultimo_pago", typeof(string)); int id_cliente = 0; string nombre_cliente = string.Empty; string celular_cliente = string.Empty; string referencia_articulo = string.Empty; decimal saldo_restante = 0; decimal total_venta = 0; DateTime fecha_venta = DateTime.Now; decimal suma_ventas = 0; decimal suma_saldos = 0; DateTime fecha_ultimo_pago = DateTime.Now; var(rpta, dtVentas) = await NVentas.BuscarVentas("ID COBRO ACTIVO", id_cobro.ToString()); if (dtVentas != null) { foreach (DataRow row in dtVentas.Rows) { Ventas venta = new Ventas(row); id_cliente = venta.Id_cliente; nombre_cliente = venta.Cliente.NombreCompleto; celular_cliente = venta.Cliente.Celular; total_venta = venta.Total_venta; fecha_venta = venta.Fecha_venta; suma_ventas += venta.Total_venta; if (!venta.Tipo_venta.Equals("MIGRACION")) { var(dtDetalleArticulos, rptaBusqueda) = await NArticulos.BuscarArticulos("ID VENTA", venta.Id_venta.ToString()); if (dtDetalleArticulos != null) { StringBuilder referencias = new StringBuilder(); referencias.Append(dtDetalleArticulos.Rows.Count + " referencias: "); foreach (DataRow rowArt in dtDetalleArticulos.Rows) { Detalle_articulos_venta detalle = new Detalle_articulos_venta(rowArt); referencias.Append("(" + detalle.Articulo.Id_articulo + ") "); referencias.Append(detalle.Articulo.Referencia_articulo + " - "); } referencia_articulo = referencias.ToString(); } } //Buscar los agendamientos de cada venta para ver su saldo restante var(rpta1, dtAgendamientos) = await NAgendamiento_cobros.BuscarAgendamientos("ID VENTA", venta.Id_venta.ToString()); if (dtAgendamientos != null) { Agendamiento_cobros ag = new Agendamiento_cobros(dtAgendamientos.Rows[0]); saldo_restante = ag.Saldo_restante; suma_saldos += ag.Saldo_restante; fecha_ultimo_pago = ag.Fecha_cobro; } DataRow newRow = dtClientes.NewRow(); newRow["Id_cliente"] = id_cliente; newRow["Nombre_cliente"] = nombre_cliente; newRow["Celular_cliente"] = celular_cliente; newRow["Referencia_articulo"] = referencia_articulo; newRow["Saldo_restante"] = saldo_restante.ToString("C"); newRow["Venta_total"] = total_venta.ToString("C"); newRow["Fecha_venta"] = fecha_venta.ToString("dd-MM-yyyy"); newRow["Fecha_ultimo_pago"] = fecha_ultimo_pago.ToString("dd-MM-yyyy"); dtClientes.Rows.Add(newRow); } if (dtClientes.Rows.Count > 0) { MensajeEspera.CloseForm(); //Enviar informe FrmReporteClientes frmReporteClientes = new FrmReporteClientes { WindowState = FormWindowState.Maximized, dtClientes = dtClientes, Total_saldos = suma_saldos.ToString("C"), Total_ventas = suma_ventas.ToString("C"), }; frmReporteClientes.Show(); } else { Mensajes.MensajeInformacion("No se encontraron clientes", "Entendido"); } } else { Mensajes.MensajeInformacion("No se encontraron clientes", "Entendido"); } MensajeEspera.CloseForm(); }