factura_3_capas
TRANSCRIPT
LENGUAJE DE PROGRAMACION
WWW.ROLANDOSTUDIOS.COM Página 1
ACTIVIDAD DE APRENDIZAJEFACTURACION 3 CAPAS
LENGUAJE DE PROGRAMACION
WWW.ROLANDOSTUDIOS.COM Página 2
PROCEDIMIENTOS ALMACENADOSBASE DE DATOS, TABLAS Y REGISTROS EN SQL SERVER 2005
(BD_CAPAS_FACTURACION)
-- creando la base de datoscreate database faccapasgo
-- creando tablascreate table clientes (cod_cli nvarchar(5) not null,nom_cli nvarchar(20),dir_cli nvarchar(60) ,tel_cli nvarchar(10) ,otro_cli nvarchar(10) ,fecha_ing smalldatetime)go
create table producto (cod_prod nvarchar(5) not null,descrip nvarchar(30),precio float(8),precio_cos float(8),stock smallint,stock_min smallint,fecha_ing smalldatetime,fgEli bit not null,txtmtvEli nvarchar(20))go
create table facturas (num_fact nvarchar (6) not null,cod_emp nvarchar (5),cod_cli nvarchar (5),sub_total float (8),
LENGUAJE DE PROGRAMACION
WWW.ROLANDOSTUDIOS.COM Página 3
igv float (8),total float (8),fecha smalldatetime,fgEli bit not null,txtmtvEli nvarchar(20),)go
create table detalle (num_fact nvarchar (6),cod_prod nvarchar (5),precio float (8),precio_cos float (8),cant smallint)go
-- valores
insert into clientes (cod_cli, nom_cli,dir_cli,tel_cli,fecha_ing)values ('C0001','Cesar Uribe Anaya','Av. Peru 1523','4562318','12/01/2009')
insert into clientes (cod_cli, nom_cli,dir_cli,tel_cli,fecha_ing)values ('C0002','Luis Alberto','Av. Antunez de Mayolo 521','5632414','02/02/2009')
insert into clientes (cod_cli, nom_cli,dir_cli,tel_cli,fecha_ing)values ('C0003','Flabio Roman','Jr. Cuzco 569','1546512','03/02/2009')
insert into clientes (cod_cli, nom_cli,dir_cli,tel_cli,fecha_ing)values ('C0004','Renzo Silva','Av. Universitaria 6454','4563289','05/05/2009')
insert into clientes (cod_cli, nom_cli,dir_cli,tel_cli,fecha_ing)values ('C0005','Jorge Mamani','Av. Carlos Izaguirre 351','4532894','12/06/2009')
insert into clientes (cod_cli, nom_cli,dir_cli,tel_cli,fecha_ing)values ('C0006','Claudio Rocca','Av. Las casuarinas 125','5632481','10/02/2010')
LENGUAJE DE PROGRAMACION
WWW.ROLANDOSTUDIOS.COM Página 4
insert into producto (cod_prod, descrip,precio,precio_cos,stock,stock_min,fecha_ing,FgEli)values ('P0001','Monitor LCD 20 Samsung',520,480,20,6,'12/02/2009','false')
insert into producto (cod_prod, descrip,precio,precio_cos,stock,stock_min,fecha_ing,FgEli)values ('P0002','Mouse Netscroll Genius',15,5,50,12,'12/02/2009','false')
insert into producto (cod_prod, descrip,precio,precio_cos,stock,stock_min,fecha_ing,FgEli)values ('P0003','Case Halion 550 watts',90,60,15,5,'12/02/2009','false')
insert into producto (cod_prod, descrip,precio,precio_cos,stock,stock_min,fecha_ing,FgEli)values ('P0004','Proc C2D E7500 2.93',470,400,20,5,'12/02/2009','false')
insert into producto (cod_prod, descrip,precio,precio_cos,stock,stock_min,fecha_ing,FgEli)values ('P0005','Memoria DDR 1333 1 GB',180,160,25,12,'12/02/2009','false')
LENGUAJE DE PROGRAMACION
WWW.ROLANDOSTUDIOS.COM Página 5
PROCEDIMIENTOS ALMACENADOSPARA EL MANTENIMIENTO DE LA FACTURA
(SP_CAPAS_FACTURACION)
Create Procedure Sp_BuscarCliente @cod_cli Char(5)AsSelect * From Clientes where cod_cli=@cod_cli GO
Create Procedure Sp_BuscarProducto @cod_prod Char(5)AsSelect * From Producto where cod_prod=@cod_prod GO
Create Procedure Sp_FiltradoCliente @cod_cli Char(5)Asif Len(@cod_cli)=0 Select cod_cli as Codigo,nom_cli as Nombres From Clientes ElseBeginSelect cod_cli as Codigo,nom_cli as Nombres From Clientes Where nom_cli Like rtrim(@cod_cli)+'%'EndGO
Create Procedure Sp_FiltrarProducto @cod_prod Char(5)Asif Len(@cod_prod)=0 Select cod_prod as Codigo,descrip as Descripcion From Producto ElseBegin
LENGUAJE DE PROGRAMACION
WWW.ROLANDOSTUDIOS.COM Página 6
Select cod_prod as Codigo,descrip as Descripcion From Producto Where descrip Like rtrim(@cod_prod)+'%'EndGO Create Procedure Sp_ListFacturas AsSelect * From Facturas GO
Create Procedure Sp_GrabarFactura @Num_Fact char(6),@Cod_cli char(5),@Sub_Total decimal(8,2),@Igv decimal(8,2),@total decimal(8,2),@fecha smalldatetime,@FgEli BitAsInsert Into Facturas (Num_fact,Cod_Cli,sub_total,Igv,total,fecha,FgEli)Values(@Num_fact,@Cod_Cli,@sub_total,@igv,@total,@fecha,@FgEli)GO
Create Procedure Sp_GrabarDetalle @Num_fact char(6),@cod_prod char(5),@precio decimal(8,2),@precio_cos decimal(8,2),@cant intAsInsert Into Detalle values(@Num_fact,@cod_prod,@precio,@precio_cos,@cant)GO
Create Procedure Sp_LIstClientes AsSelect * From Clientes GO
LENGUAJE DE PROGRAMACION
WWW.ROLANDOSTUDIOS.COM Página 7
Create Procedure Sp_FilterPedidos @cod_cli char(5)AsSelect num_fact From Facturas,Clientes where Facturas.cod_cli=Clientes.cod_cli And Clientes.cod_cli=@cod_cli go
Create Procedure Sp_MostrarDetalle @num_fact char(6)AsSelect Descrip as Descripcion,Detalle.Precio,Detalle.Precio_cos as [Precio Costo],Cant as Cantidad,Total=Detalle.Precio * Cant From Detalle,Producto where Detalle.cod_prod=Producto.Cod_prod and num_fact=@num_fact GO
LENGUAJE DE PROGRAMACION
WWW.ROLANDOSTUDIOS.COM Página 8
CREANDO LAS CAPAS EN VISUAL STUDIO 2005
Layerdata
Imports System.Data.SqlClientImports System.Data
Public Class gDatos
'Trabajaremos con Regiones para odernar nuestro código. #Region "Conexion Base de Datos" Protected Cn As New SqlConnection("Server=Equipo01\SQLEXPRESS;Database=faccapas;Integrated Security=True;")#End Region
#Region "Poner Parametros" Shared mColComandos As New System.Collections.Hashtable()
Protected Function Comando(ByVal ProcedimientoAlmacenado As String) As System.Data.IDbCommand Dim mComando As System.Data.SqlClient.SqlCommand If mColComandos.Contains(ProcedimientoAlmacenado) Then mComando = CType(mColComandos.Item(ProcedimientoAlmacenado), _ System.Data.SqlClient.SqlCommand) Else Cn.Open() mComando = New System.Data.SqlClient.SqlCommand(ProcedimientoAlmacenado, Cn) Dim mContructor As New System.Data.SqlClient.SqlCommandBuilder() mComando.Connection = Cn mComando.CommandType = CommandType.StoredProcedure 'mContructor.DeriveParameters(mComando) SqlCommandBuilder.DeriveParameters(mComando) Cn.Close() mColComandos.Add(ProcedimientoAlmacenado, mComando) End If Return mComando
LENGUAJE DE PROGRAMACION
WWW.ROLANDOSTUDIOS.COM Página 9
End Function
Protected Sub CargarParametros(ByVal Comando As System.Data.IDbCommand, ByVal Args() As Object) Dim I As Integer With Comando For I = 0 To Args.GetUpperBound(0) Try CType(.Parameters(I + 1), System.Data.SqlClient.SqlParameter).Value = Args(I) Catch Qex As Exception Throw (Qex) End Try Next End With End Sub#End Region
#Region "Devolver Parametros" Protected Function CrearDataAdapter(ByVal ProcedimientoAlmacenado As String, ByVal ParamArray Args() As Object) As System.Data.IDataAdapter Dim mCom As System.Data.SqlClient.SqlCommand = Comando(ProcedimientoAlmacenado) If Not Args Is Nothing Then CargarParametros(mCom, Args) End If Return New System.Data.SqlClient.SqlDataAdapter(mCom) End Function
'En este caso trabajaremos con funciones sobrecargadas con la finalidad de poder llamar a la �misma function pero con diferentes parametros. Public Overloads Function TraerDataset(ByVal ProcedimientoAlmacenado As String) As System.Data.DataSet Dim mDataset As New System.Data.DataSet() CrearDataAdapter(ProcedimientoAlmacenado).Fill(mDataset) Return mDataset End Function
'Funcion Sobrecargada
LENGUAJE DE PROGRAMACION
WWW.ROLANDOSTUDIOS.COM Página 10
Public Overloads Function TraerDataset(ByVal ProcedimientoAlmacenado As String, ByVal ParamArray Argumentos() AsSystem.Object) As System.Data.DataSet Dim mDataset As New System.Data.DataSet() CrearDataAdapter(ProcedimientoAlmacenado, Argumentos).Fill(mDataset) Return mDataset End Function#End Region
#Region "Acciones" Public Function Ejecutar(ByVal ProcedimientoAlmacenado As String, ByVal ParamArray Argumentos() AsSystem.Object) As Integer Dim mCom As System.Data.SqlClient.SqlCommand = Comando(ProcedimientoAlmacenado) Dim Resp As Integer Cn.Open() mCom.Connection = Cn mCom.CommandType = CommandType.StoredProcedure CargarParametros(mCom, Argumentos) Resp = mCom.ExecuteNonQuery Cn.Close() Return Resp End Function#End Region
End Class
LENGUAJE DE PROGRAMACION
WWW.ROLANDOSTUDIOS.COM Página 11
LAYERBUSINESS
Imports LayerDataPublic Class clsProd Dim objdata As New gDatos Public Function ListarClientes(ByVal Procedure As String, ByVal ParamArray Argumentos() As System.Object) AsDataSet ListarClientes = objdata.TraerDataset(Procedure, Argumentos) End Function
Public Function ListarProductos(ByVal Procedure As String, ByVal ParamArray Argumentos() As System.Object) AsDataSet ListarProductos = objdata.TraerDataset(Procedure, Argumentos) End Function
Public Function ListarFacturas(ByVal Procedure As String, ByVal ParamArray Argumentos() As System.Object) AsDataSet ListarFacturas = objdata.TraerDataset(Procedure, Argumentos) End Function
Public Function AgregarFactura(ByVal Procedure As String, ByVal ParamArray Argumentos() As System.Object) AsInteger AgregarFactura = objdata.Ejecutar(Procedure, Argumentos) End Function
Public Function AgregarDetalle(ByVal Procedure As String, ByVal ParamArray Argumentos() As System.Object) AsInteger AgregarDetalle = objdata.Ejecutar(Procedure, Argumentos) End Function
Public Function MostraDetalle(ByVal Procedure As String, ByVal ParamArray Argumentos() As System.Object) AsDataSet MostraDetalle = objdata.TraerDataset(Procedure, Argumentos)
LENGUAJE DE PROGRAMACION
WWW.ROLANDOSTUDIOS.COM Página 12
End Function
End Class
NOTA:Seleccionar como proyecto inicial layerclientY agregar referencias:LayerdataLayerbusiness
LENGUAJE DE PROGRAMACION
WWW.ROLANDOSTUDIOS.COM Página 13
LAYERCLIENT
Imports Vb = Microsoft.VisualBasicImports System.Data ' Importamos las referencias System.DataImports System.Data.SqlClient
Public Class Form1 Inherits System.Windows.Forms.Form Dim Objfactura As New LayerBusiness.clsProd() ' Hacemos referencia al proyecto Business Dim Tbl As DataTable Dim TblDet As New DataTable("Detalle") ' Creamos una Tabla Dinamica Dim TblProd As DataTable Dim tblcliente As DataTable Dim XCodProd As String Dim XPrecio_Cos As Single Dim XCodCli As String Dim sqlcommand Dim Rw As DataRow Private oDataAdapter As SqlDataAdapter Private oDataAdapter1 As SqlDataAdapter Private odataset As DataSet Private oConexion As SqlConnection Private dv As New DataView Private dv1 As New DataView
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' este agregue oConexion = New SqlConnection() oConexion.ConnectionString = "Server=Equipo01\SQLEXPRESS;" & _ "Database=faccapas;Integrated Security=True;" '----------------------------------------------- Label2.Text = DateTime.Now.ToShortDateString Me.Panelclientes.Visible = False Me.PanelProductos.Visible = False 'Creamos una tabla temporal, para mantener los datos de los productos seleccionados. Dim Ds As New DataSet()
LENGUAJE DE PROGRAMACION
WWW.ROLANDOSTUDIOS.COM Página 14
TblDet = Ds.Tables.Add With TblDet.Columns .Add("Codigo", Type.GetType("System.String")) .Add("Producto", Type.GetType("System.String")) .Add("Precio", Type.GetType("System.Single")) .Add("Cantidad", Type.GetType("System.Int32")) .Add("Total", Type.GetType("System.Single")) End With 'Agregamos una Clave Principal a la Tabla Dinamica 'para que no se repìtan los registros With Ds.Tables(0) .PrimaryKey = New DataColumn() {.Columns("Codigo")} End With DataGrid1.DataSource = TblDet FormatearGrid() ClearControl() Me.txtfactura.Enabled = False '------------------------------------ 'llenar clientes oDataAdapter = New SqlDataAdapter() Dim oCmdConsulta As New SqlCommand("SELECT * FROM clientes", oConexion) oDataAdapter.SelectCommand = oCmdConsulta odataset = New DataSet() Me.llenarcliente() '---------------------------------------- 'llenar productos oDataAdapter1 = New SqlDataAdapter() Dim oCmdConsulta1 As New SqlCommand("SELECT * FROM producto", oConexion) oDataAdapter1.SelectCommand = oCmdConsulta1 odataset = New DataSet() Me.llenarproducto() '---------------------------------------- Me.aparienciatexbox() End Sub
Sub aparienciatexbox() Me.btnbuscliente.Enabled = False Me.Btnbusprod.Enabled = False
LENGUAJE DE PROGRAMACION
WWW.ROLANDOSTUDIOS.COM Página 15
Me.btnadicionar.Enabled = False Me.btneliminar.Enabled = False Me.btncancelar.Enabled = False Me.btngrabar.Enabled = False Me.txtfactura.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle Me.txtcliente.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle Me.txtdireccion.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle Me.txttel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle Me.txtfechaingreso.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle Me.txtprod.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle Me.txtprecio.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle Me.txtcant.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle Me.txtsubtotal.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle Me.txtigv.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle Me.txttotal.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.txtcliente.Enabled = False Me.txtdireccion.Enabled = False Me.txttel.Enabled = False Me.txtfechaingreso.Enabled = False Me.txtprod.Enabled = False Me.txtprecio.Enabled = False Me.txtcant.Enabled = False Me.txtsubtotal.Enabled = False Me.txtigv.Enabled = False Me.txttotal.Enabled = False
End Sub
_______________________________________________
Sub ClearControl() Dim Obj As Object For Each Obj In Me.Controls If TypeOf Obj Is TextBox Then Obj.text = ""
LENGUAJE DE PROGRAMACION
WWW.ROLANDOSTUDIOS.COM Página 16
If TypeOf Obj Is GroupBox Then Dim objtext As Object For Each objtext In Obj.controls If TypeOf objtext Is TextBox Then objtext.text = "" End If Next End If End If Next End Sub
Sub FormatearGrid() 'doy formato al datagrid1 DataGrid1.Columns.Item(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopRight DataGrid1.Columns.Item(3).DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopRight DataGrid1.Columns.Item(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopRight
DataGrid1.Columns(0).Width = CInt(DataGrid1.Width * 0.1) DataGrid1.Columns(1).Width = CInt(DataGrid1.Width * 0.48) DataGrid1.Columns(2).Width = CInt(DataGrid1.Width * 0.1) DataGrid1.Columns(3).Width = CInt(DataGrid1.Width * 0.1) Me.DataGrid1.AllowUserToAddRows = False End Sub
Private Sub BtnNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnNuevo.Click Me.BtnNuevo.Enabled = False Me.btnbuscliente.Enabled = True
Me.txtcliente.Clear() Me.txttel.Clear() Me.txtdireccion.Clear() Me.txtfechaingreso.Clear()
Dim TblFac As DataTable ClearControl() 'Limpiar los Controles TblFac = ObjFactura.ListarFacturas("Sp_ListFacturas").Tables(0) Me.txtfactura.Text = Vb.Right("00000" + Trim(Str(TblFac.Rows.Count + 1)), 6)
LENGUAJE DE PROGRAMACION
WWW.ROLANDOSTUDIOS.COM Página 17
TblFac.Dispose() TblDet.Clear() 'Limpia la Tabla Detalle
End Sub
Private Sub btnbuscliente_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handlesbtnbuscliente.Click Me.Panelclientes.Visible = True End Sub
Private Sub Btnbusprod_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesBtnbusprod.Click Me.PanelProductos.Visible = True End Sub
Private Sub llenarcliente() odataset.Clear() oConexion.Open() oDataAdapter.Fill(odataset, "clientes") oConexion.Close() Me.DataGrid2.DataSource = odataset Me.DataGrid2.DataMember = "clientes" End Sub
Private Sub llenarproducto() odataset.Clear() oConexion.Open() oDataAdapter1.Fill(odataset, "producto") oConexion.Close() Me.DataGrid3.DataSource = odataset Me.DataGrid3.DataMember = "producto" End Sub
Private Sub txtprod1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handlestxtprod1.KeyPress 'If e.KeyChar = Convert.ToChar(Keys.Return) Then ' TblProd = ObjFactura.ListarProductos("Sp_FiltrarProducto", txtprod1.Text).Tables(0)
LENGUAJE DE PROGRAMACION
WWW.ROLANDOSTUDIOS.COM Página 18
' DataGrid3.DataSource = TblProd ' e.Handled = True 'End If End Sub
Private Sub txtcliente1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtcliente1.KeyPress ' If e.KeyChar = Convert.ToChar(Keys.Return) Then ' Tbl = Objfactura.ListarClientes("Sp_FiltradoCliente", txtcliente1.Text.Trim).Tables(0) ' DataGrid2.DataSource = Tbl ' ' e.Handled = True 'Elimina el Pitido del teclado ' End If End Sub
Private Sub txtcliente1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handlestxtcliente1.TextChanged Dim da As New SqlDataAdapter("SELECT * FROM clientes", oConexion) Dim ds1 As New DataSet da.Fill(ds1) dv.Table = ds1.Tables(0) DataGrid2.DataSource = dv dv.RowFilter = String.Format("nom_cli Like '%{0}%'", txtcliente1.Text) End Sub
Private Sub DataGrid3_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) HandlesDataGrid3.DoubleClick Me.PanelProductos.Visible = False Me.txtcant.Enabled = True Me.txtcant.Select()
Dim TblP As DataTable XCodProd = DataGrid3.Item(0, DataGrid3.CurrentRow.Index).Value TblP = Objfactura.ListarProductos("Sp_BuscarProducto", XCodProd).Tables(0) XCodProd = TblP.Rows(0)(0) Me.txtprod.Text = TblP.Rows(0)(1) Me.txtprecio.Text = TblP.Rows(0)(2) XPrecio_Cos = TblP.Rows(0)(3) TblP.Dispose()
LENGUAJE DE PROGRAMACION
WWW.ROLANDOSTUDIOS.COM Página 19
End Sub
Private Sub DataGrid2_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) HandlesDataGrid2.DoubleClick Me.Panelclientes.Visible = False Me.Btnbusprod.Enabled = True
Dim TblC As DataTable Dim XCodcli As String = DataGrid2.Item(0, DataGrid2.CurrentRow.Index).Value TblC = Objfactura.ListarClientes("Sp_BuscarCliente", XCodcli).Tables(0) Me.txtcliente.Text = TblC.Rows(0)(1) Me.txttel.Text = TblC.Rows(0)(3) Me.txtdireccion.Text = TblC.Rows(0)(2) Me.txtfechaingreso.Text = TblC.Rows(0)(5) TblC.Dispose() End Sub
Private Sub txtprod1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handlestxtprod1.TextChanged Dim da As New SqlDataAdapter("SELECT * FROM producto", oConexion) Dim ds2 As New DataSet da.Fill(ds2) dv1.Table = ds2.Tables(0) DataGrid3.DataSource = dv1 dv1.RowFilter = String.Format("descrip Like '%{0}%'", txtprod1.Text) End Sub
Private Sub btnadicionar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handlesbtnadicionar.Click Rw = TblDet.NewRow() Rw(0) = XCodProd Rw(1) = Me.txtprod.Text Rw(2) = CDbl(Me.txtprecio.Text) Rw(3) = CInt(Me.txtcant.Text) Rw(4) = CDbl(Rw(2)) * CDbl(Rw(3)) 'Rw(4) = Format((CDbl(Rw(2)) * CDbl(Rw(3))), "###0.00") 'quiero en la celda con dos decimales Try TblDet.Rows.Add(Rw)
LENGUAJE DE PROGRAMACION
WWW.ROLANDOSTUDIOS.COM Página 20
TblDet.AcceptChanges() Me.TotalValores()
'activo y desactivo 'Me.btnadicionar.Enabled = False Me.btneliminar.Enabled = True Me.btncancelar.Enabled = True ' limipio los datos del producto 'para ingresar otro Me.txtprod.Clear() Me.txtprecio.Clear() Me.txtcant.Clear() Me.txtcant.Enabled = False Me.Btnbusprod.Select()
Catch Ex As Exception MsgBox(Ex.Message) 'Actualizar codigo MsgBox("Se Procedera a Actualizar el Producto" & Space(2) & Me.txtprod.Text) Rw = TblDet.Rows.Find(XCodProd) Rw.BeginEdit() Rw(3) = CInt(Me.txtcant.Text) Rw(4) = CDbl(Rw(2)) * CDbl(Rw(3)) Rw.EndEdit() TblDet.AcceptChanges() Me.TotalValores() End Try
Me.btnadicionar.Enabled = False Me.btngrabar.Enabled = True
End Sub
Sub TotalValores() Dim Xtotal As Single Xtotal = IIf(TblDet.Compute("Sum(Total)", Nothing) Is DBNull.Value, 0, TblDet.Compute("Sum(Total)", Nothing)) Me.txtsubtotal.Text = Format(Xtotal, "###0.00")
LENGUAJE DE PROGRAMACION
WWW.ROLANDOSTUDIOS.COM Página 21
Me.txtigv.Text = Format(Xtotal * 0.18, "###0.00") Me.txttotal.Text = Format(Xtotal - (Xtotal * 0.18), "##0.00") End Sub
Private Sub btngrabar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btngrabar.Click
Me.btngrabar.Enabled = False Me.btnadicionar.Enabled = False Me.btneliminar.Enabled = False Me.btncancelar.Enabled = False Me.BtnNuevo.Enabled = True
' Grabando la cabecera de la Facturación Dim XG As Integer XG = Objfactura.AgregarFactura("Sp_GrabarFactura", _ Me.txtfactura.Text, Me.DataGrid2.SelectedCells(0).Value.ToString, CDbl(Me.txtsubtotal.Text), _ CDbl(Me.txtigv.Text), CDbl(Me.txttotal.Text), CDate(Label2.Text), 0) ' Me.txtfactura.Text, Xcodcli, CDbl(Me.txtsubtotal.Text), _
If XG = 1 Then MsgBox("Factura Registrada") End If 'Grabando Detalle de la Factura Dim XD As Integer Dim I As Integer For I = 0 To TblDet.Rows.Count - 1 XD = Objfactura.AgregarDetalle("Sp_GrabarDetalle", Me.txtfactura.Text, _ TblDet.Rows(I)(0), TblDet.Rows(I)(2), 0, TblDet.Rows(I)(3)) Next If XD = 1 Then MsgBox("Detalle Registrado de la Factura Nro" & Space(1) & Me.txtfactura.Text) End If
End Sub
Private Sub btneliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handlesbtneliminar.Click 'Se Procedera a la Busqueda del Producto para Eliminar
LENGUAJE DE PROGRAMACION
WWW.ROLANDOSTUDIOS.COM Página 22
If MsgBox("Desea Eliminar el Producto" & Space(2) & Me.txtprod.Text, 4 + 32, "ELIMINANDO PRODUCTO DETALLE") = MsgBoxResult.Yes Then Rw = TblDet.Rows.Find(XCodProd) Rw.Delete() TblDet.AcceptChanges() Me.TotalValores() Else MsgBox("Descartando Eliminacion") 'Deselecciona la Fila seleccionada 'DataGrid1.UnSelect(DataGrid1.CurrentRowIndex) End If
End Sub
Private Sub btncancelar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handlesbtncancelar.Click If MsgBox("Desea Cancelar los Productos Ingresados", 4 + 32, "Cancelando Productos") = MsgBoxResult.Yes Then TblDet.Clear() Me.TotalValores() Else
MsgBox("Descartando Elimacion de Registros") End If End Sub
Private Sub txtcliente_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtcliente.Click btnbuscliente.Select() End Sub
Private Sub txtdireccion_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtdireccion.Click btnbuscliente.Select() End Sub
Private Sub txtcant_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handlestxtcant.KeyPress If e.KeyChar = Convert.ToChar(Keys.Enter) Then Me.btnadicionar.Enabled = True Me.btnadicionar.Select()
LENGUAJE DE PROGRAMACION
WWW.ROLANDOSTUDIOS.COM Página 23
End If End Sub
Private Sub txtcant_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handlestxtcant.TextChanged Me.btnadicionar.Enabled = True End Sub
Private Sub btnsalir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnsalir.Click If MsgBox("Desea Salir de la Facturacion", 4 + 32, "FACTURACION") = MsgBoxResult.Yes Then Me.Dispose() End Else Exit Sub End If
End Sub
End Class
WWW.ROLANDOSTUDIOS.COMCOMUNICA
ACA LES DEJO EL APORTE, DE LA PROPUESTA DE FACTURACION DE ZONA PERU, HE CAMBIADO ALGUNAS LINEAS DE CODIGO PARA QUE SEA FUNCIONAL, ESPERO QUE AL DEJAR ESTE APORTE SEA MEJORADO Y PERFECCIONADO POR
OTROS USUARIOS Y PUEDA CONTRIBUIR A COMPARTIR Y DIFUNDIR EL CONOCIMIENTO.
CREDITOS PARA EL USER DE WFZONE:ZONAPERU(EXCELENTE EL APORTE +10 GRACIAS)AGRADECIMIENTOS A LA GENTE DEL FORO:GRACIAS A [Dark]Poetix
ATENTAMENTE .WWW.ROLANDOSTUDIOS.COM