miércoles, 22 de enero de 2014

DESKTOP APPLICATION - 3º Parte - Sistema de ventas c# - Base de datos SQL

1. Entorno

  • Visual Studio 2008
  • SQL Server 2008

2. Introducción


Ya vimos que en la 2º Parte  del tutorial creamos la Capa de Dato de nuestro sistema, la cual es la encargada de comunicarse con la base de datos. Ahora nos tocaría desarrollar la Capa de Negocios que es la capa en la cual se implementa la lógica del negocio de la empresa como obtener descuentos, aumentos, etc.

3. Desarrollo


3.1. Creando el proyecto

Ahora debemos de agregar a nuestro proyecto un proyecto del tipo biblioteca de clases que se llamara "CapaNegocios"















3.2. Agregando al referencia con la Capa de Datos

Debemos de establecer la comunicacion entre la Capa de Negocios y la Capa de Datos. Para eso hacemos clic derecho en nuestro proyecto que se llama "CapaNegocios" y nos vamos a la opcion de "Agregar Referencia"























Y de ahí seleccionamos que se comunique con el proyecto que se llama "CapaDatos"



















3.3. Clase NegProducto

La clase "NegProducto" se encarga de comunicarse con la clase "Producto" de la capa de datos

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
//Para que se comunique con la Capa de Datos
using CapaDatos;
//Desarollado por Adrián Sánchez
namespace CapaNegocios
{
  public class NegProducto
  {
    //Metodo que llama al metodo Insertar de la Capa de Datos 
    //de la clase Producto
    public static string Insertar(string Nombre, decimal Precio)
    {
      Producto pro = new Producto();
      pro.nombre = Nombre;
      pro.precio = Precio;
      return pro.Insertar(pro);
    }
    //Metodo que llama al metodo Actualizar de la Capa de Datos 
    //de la clase Producto
    public static string Actualizar(int CodigoProducto, string Nombre, decimal Precio)
    {
      Producto pro = new Producto();
      pro.codigoProducto = CodigoProducto;
      pro.nombre = Nombre;
      pro.precio = Precio;
      return pro.Actualizar(pro);
    }
    //Metodo que se encarga de llamar al metodo ObtenerProducto
    //de la clase Producto
    public static DataTable ObtenerProducto()
    {
      return new Producto().ObtenerProducto();
    }
  }
}


3.4. Clase NegDetalleVenta

La clase "NegDetalleVenta" se encarga de establecer los descuentos de los detalles de venta. Si el subtotal supera los 50 soles, dolares, euros, etc se le aplica un descuento del 5% del detalle de la venta. Y eso se aplica en la Capa de Negocios debido a que pertenece a la lógica de la empresa.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//Desarollado por Adrián Sánchez
namespace CapaNegocios
{
  public class NegDetalleVenta
  {
    //Metodo utilizado para obtener el descuento del detalle de la venta
    //si la venta supera los 50 soles, dolares, euros, etc
    //se le hace un descuento del 5% del detalle de la venta
    public static decimal ObtenerDescuento(decimal cantidad, decimal pu)
    {
      if ((cantidad * pu) > 50)
      {
        decimal porcentaje = Convert.ToDecimal(0.05);
        decimal descuento = ((cantidad * pu) * porcentaje);
        return descuento;
      }
      else
      {
        return 0;
      }
    }
  }
}

3.5. Clase NegVenta

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
//Para que se comunique con la Capa de Datos
using CapaDatos;
//Desarollado por Adrián Sánchez

namespace CapaNegocios
{
  public class NegVenta
  {
    //Metodo que llama al metodo Insertar de la Capa de Datos 
    //de la clase Venta
    public static string Insertar(string cliente, DataTable dtDetalles)
    {
      Venta venta = new Venta();
      venta.cliente = cliente;
      List<DetalleVenta> detalles=new List<DetalleVenta>();
      foreach (DataRow row in dtDetalles.Rows)
      {
        DetalleVenta detalle = new DetalleVenta();
        detalle.codigoProducto = Convert.ToInt32(row["codigoProducto"].ToString());
        detalle.cantidad = Convert.ToDecimal(row["cantidad"].ToString());
        detalle.descuento = NegDetalleVenta.ObtenerDescuento(detalle.cantidad, Convert.ToDecimal(row["PU"].ToString()));
        detalles.Add(detalle);
      }
      return venta.Insertar(venta, detalles);
    }
    //Metodo que se encarga de llamar al metodo ObtenerProducto
    //de la clase Venta
    public static DataTable ObtenerVenta()
    {
      return new Venta().ObtenerVenta();
    }
    //Metodo que se encarga de llamar al metodo ObtenerProducto 
    //por codigo de la clase Venta
    public static DataTable ObtenerVenta(int codigoVenta)
    {
      return new Venta().ObtenerVenta(codigoVenta);
    }
  }
}

4. Resumen


Al final deberíamos tener las siguientes clases

No hay comentarios.:

Publicar un comentario