Top Ad unit 728 × 90

Recientes

recent

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;

        }


    }
}



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 Juan Carlos Arcila Díaz on 18:20 Rating: 5

1 comentario:

  1. 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

All Rights Reserved by www.IncanatoIT.com - Desarrollando Software © 2014 - 2015
Powered By Blogger, Designed by Sweetheme

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

IncanatoIt.com. Con la tecnología de Blogger.