factura_3_capas

23
LENGUAJE DE PROGRAMACION WWW.ROLANDOSTUDIOS.COM Página 1 ACTIVIDAD DE APRENDIZAJE FACTURACION 3 CAPAS

Upload: ricardo-peruano

Post on 11-Apr-2015

28 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: FACTURA_3_CAPAS

LENGUAJE DE PROGRAMACION

WWW.ROLANDOSTUDIOS.COM Página 1

ACTIVIDAD DE APRENDIZAJEFACTURACION 3 CAPAS

Page 2: FACTURA_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),

Page 3: FACTURA_3_CAPAS

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')

Page 4: FACTURA_3_CAPAS

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')

Page 5: FACTURA_3_CAPAS

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

Page 6: FACTURA_3_CAPAS

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

Page 7: FACTURA_3_CAPAS

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

Page 8: FACTURA_3_CAPAS

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

Page 9: FACTURA_3_CAPAS

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

Page 10: FACTURA_3_CAPAS

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

Page 11: FACTURA_3_CAPAS

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)

Page 12: FACTURA_3_CAPAS

LENGUAJE DE PROGRAMACION

WWW.ROLANDOSTUDIOS.COM Página 12

End Function

End Class

NOTA:Seleccionar como proyecto inicial layerclientY agregar referencias:LayerdataLayerbusiness

Page 13: FACTURA_3_CAPAS

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()

Page 14: FACTURA_3_CAPAS

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

Page 15: FACTURA_3_CAPAS

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 = ""

Page 16: FACTURA_3_CAPAS

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)

Page 17: FACTURA_3_CAPAS

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)

Page 18: FACTURA_3_CAPAS

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()

Page 19: FACTURA_3_CAPAS

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)

Page 20: FACTURA_3_CAPAS

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")

Page 21: FACTURA_3_CAPAS

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

Page 22: FACTURA_3_CAPAS

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()

Page 23: FACTURA_3_CAPAS

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