Você está na página 1de 9

create procedure [dbo].

[pa_parametros_buscar_x_tipo]
@numero varchar(10) out,
@tipo char(1)
as
BEGIN
select numero
from Parametros where tipodoc=@tipo
set @numero=(select numero from Parametros where tipodoc=@tipo)
END

Create procedure pa_clientes_BuscarporCodigo


@codigo varchar(4)
as
select * from Clientes where Codigo=@codigo

create procedure [dbo].[pa_productos_buscar_x_codigo]


@codproducto int
as
select codproducto,desproducto,preproducto,canproducto
from Productos where estado='1' and codproducto=@codproducto

create procedure pa_DetalleDocumento_guardar


@iddocumento int,
@codproducto int,
@preproducto decimal(18,2),
@cantidad int
as
insert into DetalleDocumento (iddocumento,codproducto,preproducto ,cantidad)
values (@iddocumento ,@codproducto,@preproducto,@cantidad )

create procedure [dbo].[pa_Documento_guardar]


@iddocumento int OUTPUT,
@fecdocumento smalldatetime,
@tipdocumento char(1),
@nrodocumento varchar(11),
@codcliente char(4)
as
insert into Documento (fecdocumento,tipdocumento,nrodocumento,codcliente)
values (@fecdocumento,@tipdocumento,@nrodocumento,@codcliente)

SET @iddocumento = @@Identity

CAPA ENTIDAD
public class Documento
{
private int _idDocumento;
private DateTime _fecDocumento;
private String _tipDocumento;
private String _nroDocumento;
private String _codcliente;

public int IdDocumento


{
get { return _idDocumento; }
set { _idDocumento = value; }
}

public DateTime FecDocumento


{
get { return _fecDocumento; }
set { _fecDocumento = value; }
}
public String TipDocumento
{
get { return _tipDocumento; }
set { _tipDocumento = value; }
}

public String NroDocumento


{
get { return _nroDocumento; }
set { _nroDocumento = value; }
}

public String Codcliente


{
get { return _codcliente; }
set { _codcliente = value; }
}
public Documento() {
}
public Documento(DateTime vfecdocumento,String vtipdocumento,String
vnrodocumento,String vcodcliente )
{
_fecDocumento=vfecdocumento;
_tipDocumento=vtipdocumento;
_nroDocumento=vnrodocumento ;
_codcliente=vcodcliente;
}
}
public class DetalleDocumento
{
private int _idDocumento;
private int _idproducto;
private Double _precioventa;
private int _cantidadventa;
public int iddocumento
{
get { return _idDocumento; }
set { _idDocumento = value; }
}
public Double precioventa
{
get { return _precioventa; }
set { _precioventa = value; }
}
public int cantidadventa
{
get { return _cantidadventa; }
set { _cantidadventa = value; }
}
public int IdProducto
{
get
{
return _idproducto;
}

set
{
_idproducto = value;
}
}
public DetalleDocumento()
{
}
public DetalleDocumento(int viddocumento, int vidproducto, double vprecioventa,
int vcantidadventa)
{
_idDocumento = viddocumento;
_idproducto = vidproducto;
_precioventa = vprecioventa;
_cantidadventa = vcantidadventa;
}

}
CAPA DE DATOS

public class DocumentoDA


{
private static readonly DocumentoDA _instancia = new DocumentoDA();
public static DocumentoDA Instancia
{
get
{
return _instancia;
}
}
public int Agregar(Documento oDocumento)
{
try
{
int iddocumento=0;
SqlConnection cn = new
SqlConnection(Conexion.Instancia.cadenaconexion());
cn.Open();
SqlCommand sqlcmd = new SqlCommand("pa_Documento_guardar", cn);
sqlcmd.CommandType = CommandType.StoredProcedure;
sqlcmd.Parameters.Add("@iddocumento", SqlDbType.Int);
sqlcmd.Parameters["@iddocumento"].Direction = ParameterDirection.Output;
sqlcmd.Parameters.Add("@fecdocumento", SqlDbType.SmallDateTime).Value =
oDocumento.FecDocumento;
sqlcmd.Parameters.Add("@tipdocumento", SqlDbType.Char,1).Value =
oDocumento.TipDocumento;
sqlcmd.Parameters.Add("@nrodocumento", SqlDbType.VarChar,11 ).Value =
oDocumento.NroDocumento;
sqlcmd.Parameters.Add("@codcliente", SqlDbType.Char,4 ).Value =
oDocumento.Codcliente;
sqlcmd.ExecuteNonQuery();
iddocumento =
Int32.Parse(sqlcmd.Parameters["@iddocumento"].Value.ToString());

cn.Close();
cn.Dispose();
return iddocumento;
}
catch (Exception ex)
{
throw new Exception("El error se produjo en registrar nuevo Documento" + ex);
}
}
}

public class DetalleDocumentoDA


{
private static readonly DetalleDocumentoDA _instancia = new DetalleDocumentoDA();
public static DetalleDocumentoDA Instancia
{
get
{
return _instancia;
}
}
public Boolean Agregar(DetalleDocumento oDetalle)
{
try
{
SqlConnection cn = new
SqlConnection(Conexion.Instancia.cadenaconexion());
cn.Open();
SqlCommand sqlcmd = new SqlCommand("pa_DetalleDocumento_guardar", cn);
sqlcmd.CommandType = CommandType.StoredProcedure;
sqlcmd.Parameters.Add("@iddocumento", SqlDbType.Int).Value =
oDetalle.iddocumento;
sqlcmd.Parameters.Add("@codproducto", SqlDbType.Int).Value =
oDetalle.IdProducto ;
sqlcmd.Parameters.Add("@preproducto", SqlDbType.Char, 1).Value =
oDetalle.precioventa;
sqlcmd.Parameters.Add("@cantidad", SqlDbType.VarChar, 11).Value =
oDetalle.cantidadventa;
sqlcmd.ExecuteNonQuery();
cn.Close();
cn.Dispose();
return true;
}
catch (Exception ex)
{
throw new Exception("El error se produjo en registrar nuevo Producto" + ex);
}
}

CAPA DE NEGOCIO

public class DocumentoCN


{
private static readonly DocumentoCN _instancia = new DocumentoCN();
public static DocumentoCN Instancia
{
get
{
return _instancia;
}
}
public int Agregar(Documento oDocumento)
{
return DocumentoDA.Instancia.Agregar(oDocumento);
}
}

public class DetalleDocumentoCN


{
private static readonly DetalleDocumentoCN _instancia = new DetalleDocumentoCN();
public static DetalleDocumentoCN Instancia
{
get
{
return _instancia;
}
}
public Boolean Agregar(DetalleDocumento oDetalle)
{
return DetalleDocumentoDA.Instancia.Agregar(oDetalle);
}
}

Programar en el Evento LOAD de la pagina

protected void Page_Load(object sender, EventArgs e)


{
if (!IsPostBack)
{
ProductoCN oProdCN=new ProductoCN();
CboProducto.DataSource = oProdCN.Listartodos();
CboProducto.DataTextField = "desproducto";
CboProducto.DataValueField = "codproducto";
CboProducto.DataBind();
CboCliente.DataSource = ClienteCN.Instancia.ListarTodosNombreCompletos();
CboCliente.DataTextField = "NombresCompletos";
CboCliente.DataValueField = "codigo";
CboCliente.DataBind();
DateTime Hoy = DateTime.Today;
TxtFecha.Text = Hoy.ToString("dd-MM-yyyy");

}
}
En el combo de productos:

protected void CboProducto_SelectedIndexChanged(object sender, EventArgs e)


{
DataSet ds;
ds=ProductoCN.Instancia.BuscarporCodigo(int.Parse(
CboProducto.SelectedValue));
TxtPrecio.Text = ds.Tables[0].Rows[0][2].ToString();

En el combo de tipo:

protected void CboTipo_SelectedIndexChanged(object sender, EventArgs e)


{
ParametrosCN oParCN = new ParametrosCN();
Txtnrodocumento.Text = oParCN.BuscarporTipo(Cbotipo.SelectedValue);
}

En el botón agregar carrito:

protected void BtnAgregar_Click(object sender, EventArgs e)


{
String cod,des;
int can;
decimal pre;
cod = CboProducto.SelectedValue;
can = int.Parse(TxtCantidad.Text);
des = CboProducto.SelectedItem.Text;
pre = Decimal.Parse(TxtPrecio.Text);
AgregarIdprod(cod, des, pre, can);

}
public CANASTADS Producto()
{
CANASTADS obj = (CANASTADS)Session["Canasta"];
if (obj == null)
{
obj = new CANASTADS();
Session["Canasta"] = obj;
}
return obj;
}
public void AgregarIdprod(string cod, string des, decimal pre, int can)
{
CANASTADS obj = this.Producto();
// Verificar que no exista en canasta
bool existe;
existe = false;
string codl;
foreach (var objDR in obj.Canasta.Rows)
{
codl = (((CANASTADS.CanastaRow)(objDR)).codproducto).ToString().Trim();
if (cod.Trim().Equals(codl.Trim()))
existe = true;
}
if (existe == false)
{
CANASTADS.CanastaRow fila = obj.Canasta.NewCanastaRow();
fila.codproducto = cod.Trim();
fila.desproducto = des;
fila.preproducto = pre;
fila.canproducto = can;
fila.importe = pre * can;
obj.Canasta.Rows.Add(fila);
cargarcarrito();
calculatotal();
}
}
public void cargarcarrito()
{
GrdDetalle.DataSource = Session["Canasta"];
GrdDetalle.DataBind();
}

En el combo clientes en el evento:

protected void CboCliente_SelectedIndexChanged(object sender, EventArgs e)


{
DataSet ds;
ds=ClienteCN.Instancia.BuscarporCodigo(CboCliente.SelectedValue);
TxtDireccion.Text = ds.Tables[0].Rows[0][3].ToString();
TxtRucDni.Text = ds.Tables[0].Rows[0][7].ToString();

Procedimiento para calcular total:

void calculatotal()
{
double importe, subtotal=0;
for (int i = 0 ; i<= GrdDetalle.Rows.Count - 1; i++)
{
importe = Double.Parse(GrdDetalle.Rows[i].Cells[5].Text);
subtotal = subtotal + importe;
}
LblSubTotal.Text = subtotal.ToString("0.00");
}

Para registrar el documento de venta:

protected void BtnRegistrar_Click(object sender, EventArgs e)


{
int iddoc;
/* Registro de cabecera */
iddoc = DocumentoCN.Instancia.Agregar(new
Documento(DateTime.Parse(TxtFecha.Text), Cbotipo.SelectedValue, Txtnrodocumento.Text,
CboCliente.SelectedValue));
int codp,canp;
double prep;
for (int i = 0 ; i<= GrdDetalle.Rows.Count - 1; i++) {
codp = int.Parse(GrdDetalle.Rows[i].Cells[1].Text);
prep= Double.Parse(GrdDetalle.Rows[i].Cells[3].Text);
canp=int.Parse (GrdDetalle.Rows[i].Cells[4].Text);
DetalleDocumentoCN.Instancia.Agregar(new DetalleDocumento(iddoc, codp, prep, canp));
}
BorrarCanasta();
}

void BorrarCanasta() {
/*Borrar Canasta */
DataSet DS;
DS = (DataSet)Session["Canasta"];
DS.Tables[0].Clear();
cargarcarrito();
}

Para borrar un product en el GridView


protected void GrdDetalle_RowCommand(object sender, GridViewCommandEventArgs e)
{
DataSet DS;
DS = (DataSet)Session["Canasta"];
String cod,codb;
if (e.CommandName == "Quitar")
{
cod = e.CommandArgument.ToString();
for (int i = 0; i <= DS.Tables[0].Rows.Count - 1; i++)
{
codb = DS.Tables[0].Rows[i][0].ToString();
if (codb==cod)
{
DS.Tables[0].Rows[i].Delete();
DS.Tables[0].AcceptChanges();
}
}
cargarcarrito();
}
}

Você também pode gostar