PRÁCTICA 1 - DIURNO: Actividad de Aprendizaje 01 Ing. David Gil Taller de Programación Web | 2 Desarrolle una aplicación para la Gestión de Venta según las siguientes especificaciones: 1) La información de Clientes y Productos se encuentra almacena en arreglos. 2) La razón social del cliente y la descripción de los productos se cargan dinámicamente en los controles respectivos. 3) Al seleccionar un cliente o producto de la lista se deben mostrar los demás datos que le corresponden. 4) El correo electrónico del cliente se ingresa por teclado y se valida que no admita vacíos y que tenga el formato correcto. 5) La cantidad solicitada no admite vacíos, solo enteros y no debe exceder el stock disponible. 6) Las compras al crédito están permitidas sólo para clientes sujetos a crédito. 7) Existen recargos adicionales por Entrega a domicilio (S/. 25) y Embalaje (S/. 5) 8) El Total General es igual a la cantidad solicitada por precio unitario más adicional. 9) El descuento es el 2% del Total General solo para compras al contado. 10) El IGV es el 18% del Total General. 11) El Total a Pagar = Total General - Descuento + IGV. DESARROLLO Diseño de la Interfaz de Usuario: Módulo 3: Gestión de Aplicaciones para Internet y Producción Multimedia Ing. David Gil Taller de Programación Web | 3 Principales Controles Utilizados: Control DropDownList Propiedad Valor (ID) ddlCliente AutoPostBack True (ID) ddlProducto AutoPostBack True (ID) rblPago AutoPostBack True CheckBoxList (ID) cblAdicional TextBox (ID) txtEmail TextBox (ID) txtCredito Enabled False (ID) txtUnidad Enabled False (ID) txtPrecio Enabled False (ID) txtStock Enabled False TextBox (ID) txtCantidad TextBox (ID) txtTotG Enabled False (ID) txtDes Enabled False (ID) txtIgv Enabled False (ID) txtStock Enabled txtTotP Label (ID) lblMensaje RequiredFieldValidator (ID) RequiredFieldValidator1 ControlToValidate txtEmail ErrorMessage Debe ingresar correo electrónico del cliente DropDownList RadioButtonList TextBox TextBox TextBox TextBox TextBox TextBox Módulo 3: Gestión de Aplicaciones para Internet y Producción Multimedia Ing. David Gil Taller de Programación Web | 4 RegularExpressionValidator RequiredFieldValidator CompareValidator Button (ID) RegularExpressionValidator1 ControlToValidate txtEmail ErrorMessage Verifique el formato del correo (ID) RequiredFieldValidator2 ControlToValidate txtCantidad ErrorMessage Debe ingresar una cantidad (ID) CompareValidator1 ControlToCompare txtStock ControlToValidate txtCantidad ErrorMessage La cantidad no debe exceder el stock disponible Operator LessThanEqual Type Integer (ID) btoReportar Code-Behind: using using using using using using System; System.Collections.Generic; System.Linq; System.Web; System.Web.UI; System.Web.UI.WebControls; public partial class Ventas : System.Web.UI.Page { string[,] Clientes = { { "Dirome", "Si" }, { "Dino", "No" }, { "Dinabusa", "Si" }, { "Sonrisas SAC", "No" }, { "Perfumerias Unidas", "Si" } }; string[,] Productos = { { "Laptop HP 530", "Unidad" }, { "Disco duro externo Sony 1 TB", "Unidad" }, { "Monitor Samsung 17 LCD", "Unidad" }, { "Blue Ray Sony", "Caja x 50" }, { "Laptop Sony", "Unidad" } }; double[] Precio = { 2500, 500, 800, 20.50, 3500.60 }; int[] Stock = { 20, 10, 5, 15, 5 }; protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { for (int i = 0 ; i<5; i++) ddlCliente.Items.Add(Clientes[i,0]); for (int j = 0; j < 5; j++) ddlProducto.Items.Add(Productos[j, 0]); } } protected void ddlCliente_SelectedIndexChanged(object sender, EventArgs e) { Módulo 3: Gestión de Aplicaciones para Internet y Producción Multimedia Ing. David Gil Taller de Programación Web | 5 txtCredito.Text = Clientes[ddlCliente.SelectedIndex, 1]; } protected void ddlProducto_SelectedIndexChanged(object sender, EventArgs e) { txtUnidad.Text = Productos[ddlProducto.SelectedIndex, 1]; txtPrecio.Text = Precio[ddlProducto.SelectedIndex].ToString(); txtStock.Text = Stock[ddlProducto.SelectedIndex].ToString(); } protected void rblPago_SelectedIndexChanged(object sender, EventArgs e) { foreach (ListItem li in rblPago.Items) { if (li.Selected && li.Value == "Credito" && txtCredito.Text == "No") { lblMensaje.Text = "Este cliente no es sujeto de crédito"; li.Selected = false; } else lblMensaje.Text = ""; } } protected void btoReportar_Click(object sender, EventArgs e) { double totgen, totpag, descuento=0, igv=0; int adicional=0, a1=0, a2=0; foreach (ListItem li in cblAdicional.Items) { if (li.Selected) { if (li.Value == "Domicilio") a1 = 25; else a2 = 5; } } adicional = a1 + a2; totgen = Convert.ToDouble(txtPrecio.Text) * Convert.ToInt16(txtCantidad.Text)+adicional; txtTotG.Text = totgen.ToString(); foreach (ListItem opcion in rblPago.Items) { if (opcion.Selected && opcion.Value == "Contado") descuento = totgen * 0.02; } txtDes.Text = descuento.ToString(); igv = totgen * 0.18; txtIgv.Text = igv.ToString(); totpag = totgen + igv - descuento; txtTotP.Text = totpag.ToString(); } } Módulo 3: Gestión de Aplicaciones para Internet y Producción Multimedia Ing. David Gil Taller de Programación Web | 6 Código a escribir en el archivo Global.asax: void Application_Start(object sender, EventArgs e) { // Código que se ejecuta al iniciarse la aplicación ScriptManager.ScriptResourceMapping.AddDefinition("jquery", new ScriptResourceDefinition { Path = "~/Scripts/jquery-1.10.2.min.js", DebugPath = "~/Scripts/jquery-1.10.2.js", CdnPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery1.10.2.min.js", CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery1.10.2.js" }); } Despliegue en el browser: Módulo 3: Gestión de Aplicaciones para Internet y Producción Multimedia Ing. David Gil