Diseño Sistema de Ventas C# - Visual Studio 2013 y Sql Server 2014 (26-41) Tabla Ingreso Almacén
Buen día amigos, En este artículo implementaremos los procedimientos almacenados en sql server 2014 para poder dar mantenimiento a nuestra tabla ingreso junto con sus detalles de ingresos a almacén, iniciaremos también con la implementación de la clase DDetalle_Ingreso en la capa datos donde estarán las variables (atributos) y las propiedades ó métodos setter y getter (para encapsular las variables), Implementaremos el método para poder insertar los detalles de un ingreso a almacén específico teniendo en cuenta las transacciones.
Pueden descargar el paquete del proyecto desarrollado en el curso, la base de datos, los procedimientos almacenados y el sistema completo hasta el Video 41 desde:
Puedes descargar la versión completa del proyecto con todas las funcionalidades terminadas desde:
Pueden seguir el curso completo y aprender a desarrollar un Sistema de Ventas en Csharp.Net utilizando como IDE de desarrollo Visual Studio 2013 y como gestor de Base de datos SQL Server 2014 desde:
No se olviden siempre de Visitar mi canal www.youtube.com/jcarlosad7 para ver los nuevos cursos.
Procedimientos almacenados tabla Ingreso y Detalle_Ingreso
--Agregamos la columna estado a la tabla ingreso
alter table ingreso
add estado varchar(7) not null
go
--Procedimientos almacenados
--Procedimiento Mostrar Ingreso
create proc
spmostrar_ingreso
as
SELECT top 100 i.idingreso,
(t.apellidos +' '+ t.nombre) as Trabajador,
p.razon_social as proveedor,
i.fecha, i.tipo_comprobante,
i.serie, i.correlativo,
i.estado, sum(d.precio_compra*
d.stock_inicial) as Total
FROM
detalle_ingreso d INNER JOIN ingreso i
ON
d.idingreso = i.idingreso
INNER
JOIN proveedor p
ON i.idproveedor = p.idproveedor
INNER JOIN trabajador t
ON i.idtrabajador = t.idtrabajador
group by
i.idingreso,
t.apellidos +' '+ t.nombre,
p.razon_social,
i.fecha, i.tipo_comprobante,
i.serie, i.correlativo,
i.estado
order
by i.idingreso desc
go
-- Procedimiento Buscar ingreso por fecha
create proc
spbuscar_ingreso_fecha
@textobuscar
varchar(50),
@textobuscar2
varchar(50)
as
SELECT i.idingreso,
(t.apellidos +' '+ t.nombre) as Trabajador,
p.razon_social as proveedor,
i.fecha, i.tipo_comprobante,
i.serie, i.correlativo,
i.estado, sum(d.precio_compra*
d.stock_inicial) as Total
FROM
detalle_ingreso d INNER JOIN ingreso i
ON
d.idingreso = i.idingreso
INNER
JOIN proveedor p
ON i.idproveedor = p.idproveedor
INNER JOIN trabajador t
ON i.idtrabajador = t.idtrabajador
group by
i.idingreso,
t.apellidos +' '+ t.nombre,
p.razon_social,
i.fecha, i.tipo_comprobante,
i.serie, i.correlativo,
i.estado
having
i.fecha>=@textobuscar
and i.fecha<=@textobuscar2
go
-- Procedimiento Insertar ingreso
create proc
spinsertar_ingreso
@idingreso int=null output,
@idtrabajador int,
@idproveedor int,
@fecha date,
@tipo_comprobante varchar(20),
@serie varchar(4),
@correlativo varchar(7),
@igv decimal(4,2),
@estado varchar(7)
as
insert into ingreso(idtrabajador,idproveedor,fecha,tipo_comprobante,serie,correlativo,igv,estado)
values
(@idtrabajador,@idproveedor,@fecha,@tipo_comprobante,@serie,@correlativo,@igv,@estado)
--Obteniendo el codigo autogenerado
del ingreso
SET
@idingreso = @@IDENTITY
go
--Procedimiento anular Ingreso
create
proc spanular_ingreso
@idingreso
int
as
update ingreso set
estado='ANULADO'
where idingreso=@idingreso
go
--Procedimiento Insertar detalles de
los ingresos
create
proc spinsertar_detalle_ingreso
@iddetalle_ingreso
int output,
@idingreso
int,
@idarticulo int,
@precio_compra
money,
@precio_venta
money,
@stock_inicial
int,
@stock_actual
int,
@fecha_produccion
date,
@fecha_vencimiento
date
as
insert into
detalle_ingreso (idingreso,idarticulo,precio_compra,
precio_venta,stock_inicial,stock_actual,
fecha_produccion,fecha_vencimiento)
values
(@idingreso,@idarticulo,@precio_compra,
@precio_venta,@stock_inicial,@stock_actual,
@fecha_produccion,@fecha_vencimiento)
Go
//mostrar detalle de los ingresos
create
proc spmostrar_detalle_ingreso
@textobuscar
int
as
select d.idarticulo,a.nombre as Articulo,d.precio_compra,
d.precio_venta,d.stock_inicial,d.stock_actual,d.fecha_produccion,
d.fecha_vencimiento,(d.stock_inicial*d.precio_compra) as Subtotal
from
detalle_ingreso d inner join articulo a
on
d.idarticulo=a.idarticulo
where
d.idingreso=@textobuscar
go
Capa Datos - Clase DDetalle_Ingreso
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data; using System.Data.SqlClient; namespace CapaDatos { public class DDetalle_Ingreso { //Variables private int _Iddetalle_ingreso; private int _Idingreso; private int _Idarticulo; private decimal _Precio_Compra; private decimal _precio_Venta; private int _Stock_Inicial; private int _Stock_Actual; private DateTime _Fecha_Produccion; private DateTime _Fecha_Vencimiento; //Propiedades public int Iddetalle_ingreso { get { return _Iddetalle_ingreso; } set { _Iddetalle_ingreso = value; } } public int Idingreso { get { return _Idingreso; } set { _Idingreso = value; } } public int Idarticulo { get { return _Idarticulo; } set { _Idarticulo = value; } } public decimal Precio_Compra { get { return _Precio_Compra; } set { _Precio_Compra = value; } } public decimal Precio_Venta { get { return _precio_Venta; } set { _precio_Venta = value; } } public int Stock_Inicial { get { return _Stock_Inicial; } set { _Stock_Inicial = value; } } public int Stock_Actual { get { return _Stock_Actual; } set { _Stock_Actual = value; } } public DateTime Fecha_Produccion { get { return _Fecha_Produccion; } set { _Fecha_Produccion = value; } } public DateTime Fecha_Vencimiento { get { return _Fecha_Vencimiento; } set { _Fecha_Vencimiento = value; } } //Constructores public DDetalle_Ingreso() { } public DDetalle_Ingreso(int iddetalle_ingreso,int idingreso,int idarticulo, decimal precio_compra, decimal precio_venta,int stock_inicial, int stock_actual,DateTime fecha_produccion,DateTime fecha_vencimiento) { this.Iddetalle_ingreso=iddetalle_ingreso; this.Idingreso = idingreso; this.Idarticulo = idarticulo; this.Precio_Compra = precio_compra; this.Precio_Venta = precio_venta; this.Stock_Inicial = stock_inicial; this.Stock_Actual = stock_actual; this.Fecha_Produccion = fecha_produccion; this.Fecha_Vencimiento = fecha_vencimiento; } //Método Insertar public string Insertar(DDetalle_Ingreso Detalle_Ingreso, ref SqlConnection SqlCon, ref SqlTransaction SqlTra) { string rpta = ""; try { SqlCommand SqlCmd = new SqlCommand(); SqlCmd.Connection = SqlCon; SqlCmd.Transaction = SqlTra; SqlCmd.CommandText = "spinsertar_detalle_ingreso"; SqlCmd.CommandType = CommandType.StoredProcedure; SqlParameter ParIddetalle_ingreso = new SqlParameter(); ParIddetalle_ingreso.ParameterName = "@iddetalle_ingreso"; ParIddetalle_ingreso.SqlDbType = SqlDbType.Int; ParIddetalle_ingreso.Direction = ParameterDirection.Output; SqlCmd.Parameters.Add(ParIddetalle_ingreso); SqlParameter ParIdingreso= new SqlParameter(); ParIdingreso.ParameterName = "@idingreso"; ParIdingreso.SqlDbType = SqlDbType.Int; ParIdingreso.Value = Detalle_Ingreso.Idingreso; SqlCmd.Parameters.Add(ParIdingreso); SqlParameter ParIdarticulo = new SqlParameter(); ParIdarticulo.ParameterName = "@idarticulo"; ParIdarticulo.SqlDbType = SqlDbType.Int; ParIdarticulo.Value = Detalle_Ingreso.Idarticulo; SqlCmd.Parameters.Add(ParIdarticulo); SqlParameter ParPrecio_Compra = new SqlParameter(); ParPrecio_Compra.ParameterName = "@precio_compra"; ParPrecio_Compra.SqlDbType = SqlDbType.Decimal; ParPrecio_Compra.Precision = 4; ParPrecio_Compra.Scale = 2; ParPrecio_Compra.Value = Detalle_Ingreso.Precio_Compra; SqlCmd.Parameters.Add(ParPrecio_Compra); SqlParameter ParPrecio_Venta = new SqlParameter(); ParPrecio_Venta.ParameterName = "@precio_venta"; ParPrecio_Venta.SqlDbType = SqlDbType.Decimal; ParPrecio_Venta.Precision = 4; ParPrecio_Venta.Scale = 2; ParPrecio_Venta.Value = Detalle_Ingreso.Precio_Venta; SqlCmd.Parameters.Add(ParPrecio_Venta); SqlParameter ParStock_Inicial = new SqlParameter(); ParStock_Inicial.ParameterName = "@stock_inicial"; ParStock_Inicial.SqlDbType = SqlDbType.Int; ParStock_Inicial.Value = Detalle_Ingreso.Stock_Inicial; SqlCmd.Parameters.Add(ParStock_Inicial); SqlParameter ParStock_Actual = new SqlParameter(); ParStock_Actual.ParameterName = "@stock_actual"; ParStock_Actual.SqlDbType = SqlDbType.Int; ParStock_Actual.Value = Detalle_Ingreso.Stock_Actual; SqlCmd.Parameters.Add(ParStock_Actual); SqlParameter ParFecha_Produccion = new SqlParameter(); ParFecha_Produccion.ParameterName = "@fecha_produccion"; ParFecha_Produccion.SqlDbType = SqlDbType.DateTime; ParFecha_Produccion.Value = Detalle_Ingreso.Fecha_Produccion; SqlCmd.Parameters.Add(ParFecha_Produccion); SqlParameter ParFecha_Vencimiento = new SqlParameter(); ParFecha_Vencimiento.ParameterName = "@fecha_vencimiento"; ParFecha_Vencimiento.SqlDbType = SqlDbType.DateTime; ParFecha_Vencimiento.Value = Detalle_Ingreso.Fecha_Vencimiento; SqlCmd.Parameters.Add(ParFecha_Vencimiento); //Ejecutamos nuestro comando rpta = SqlCmd.ExecuteNonQuery() == 1 ? "OK" : "NO se Ingreso el Registro"; } catch (Exception ex) { rpta = ex.Message; } return rpta; } } }
Video 26: Sistema de Ventas C# - Visual Studio 2013 - Sql Server 2014 (26-34) Ingresos Almacén
Saludos Imperio, un abrazo a la distancia!
Diseño Sistema de Ventas C# - Visual Studio 2013 y Sql Server 2014 (26-41) Tabla Ingreso Almacén
Reviewed by IncanatoIt-ad
on
18:20
Rating:
ps me estoy volviendo loco, tengo un problema al querer buscar entre fechas y ya revise toda la parte del codigo que tiene que ver con el metodo de busqueda entre fechas, desde el procedimiento almacenado, Desde la capa DIngreso, desde la capa NIngreso, hasta el frmIngreso y todo esta igual para el metodo de BusquedaFecha
ResponderEliminar