//metodo insertar public string Insertar(DVenta Venta, List <DDetalle_venta> Detalle) { string respuesta = ""; SqlConnection SqlCon = new SqlConnection(); try { //codigo SqlCon.ConnectionString = Conexion.conexion; SqlCon.Open(); //transaccion SqlTransaction SqlTra = SqlCon.BeginTransaction(); //comando SqlCommand SqlCmd = new SqlCommand(); SqlCmd.Connection = SqlCon; SqlCmd.Transaction = SqlTra; SqlCmd.CommandText = "spinsertar_venta"; SqlCmd.CommandType = CommandType.StoredProcedure; //parametros SqlParameter ParIdVenta = new SqlParameter(); ParIdVenta.ParameterName = "@idventa"; ParIdVenta.SqlDbType = SqlDbType.Int; ParIdVenta.Direction = ParameterDirection.Output; SqlCmd.Parameters.Add(ParIdVenta); SqlParameter ParFecha = new SqlParameter(); ParFecha.ParameterName = "@fecha_venta"; ParFecha.SqlDbType = SqlDbType.Date; ParFecha.Value = Venta.Fechaventa; SqlCmd.Parameters.Add(ParFecha); SqlParameter ParTipoComp = new SqlParameter(); ParTipoComp.ParameterName = "@tipo_comprobante"; ParTipoComp.SqlDbType = SqlDbType.VarChar; ParTipoComp.Size = 50; ParTipoComp.Value = Venta.Tipocomprobante; SqlCmd.Parameters.Add(ParTipoComp); SqlParameter ParNumComp = new SqlParameter(); ParNumComp.ParameterName = "@num_comprobante"; ParNumComp.SqlDbType = SqlDbType.VarChar; ParNumComp.Size = 50; ParNumComp.Value = Venta.Numcomprobante; SqlCmd.Parameters.Add(ParNumComp); SqlParameter ParNumFactura = new SqlParameter(); ParNumFactura.ParameterName = "@num_factura"; ParNumFactura.SqlDbType = SqlDbType.VarChar; ParNumFactura.Size = 8; ParNumFactura.Value = Venta.Numfactura; SqlCmd.Parameters.Add(ParNumFactura); SqlParameter ParPorcISV = new SqlParameter(); ParPorcISV.ParameterName = "@porc_isv"; ParPorcISV.SqlDbType = SqlDbType.VarChar; ParPorcISV.Size = 7; ParPorcISV.Value = Venta.PorcIsv; SqlCmd.Parameters.Add(ParPorcISV); SqlParameter ParSubtotal = new SqlParameter(); ParSubtotal.ParameterName = "@subtotal"; ParSubtotal.SqlDbType = SqlDbType.Money; ParSubtotal.Value = Venta.Subtotal; SqlCmd.Parameters.Add(ParSubtotal); SqlParameter ParIsv = new SqlParameter(); ParIsv.ParameterName = "@isv"; ParIsv.SqlDbType = SqlDbType.Money; ParIsv.Value = Venta.Isv; SqlCmd.Parameters.Add(ParIsv); SqlParameter ParTotal = new SqlParameter(); ParTotal.ParameterName = "@total"; ParTotal.SqlDbType = SqlDbType.Money; ParTotal.Value = Venta.Total; SqlCmd.Parameters.Add(ParTotal); SqlParameter ParIdCliente = new SqlParameter(); ParIdCliente.ParameterName = "@idcliente"; ParIdCliente.SqlDbType = SqlDbType.Int; ParIdCliente.Value = Venta.Idcliente; SqlCmd.Parameters.Add(ParIdCliente); SqlParameter ParIdEmpleado = new SqlParameter(); ParIdEmpleado.ParameterName = "@idempleado"; ParIdEmpleado.SqlDbType = SqlDbType.Int; ParIdEmpleado.Value = Venta.Idempleado; SqlCmd.Parameters.Add(ParIdEmpleado); //Ejecutamos el comando respuesta = SqlCmd.ExecuteNonQuery() == 1 ? "OK" : "No se Ingresó el Registro."; if (respuesta.Equals("OK")) { this.Idventa = Convert.ToInt32(SqlCmd.Parameters["@idventa"].Value); foreach (DDetalle_venta det in Detalle) { det.Idventa = this.Idventa; det.Insertar(det, ref SqlCon, ref SqlTra); if (!respuesta.Equals("OK")) { break; } else { //actualizar stock respuesta = DisminuirStock(det.Iddetalle_ingreso, det.Cantidad); if (!respuesta.Equals("OK")) { break; } } } } if (respuesta.Equals("OK")) { SqlTra.Commit(); } else { SqlTra.Rollback(); } } catch (Exception ex) { respuesta = ex.Message; } return(respuesta); }