You are on page 1of 9

'cdigo de la forma PRODSEXCEL (utilizado en el Ambiente de Desarrollo)

Sub Form_load

Me.Caption = "Importando desde Excel(tm)"


Archivo.File = Ambiente.Path & "\articulos.xls"

End Sub

Sub Button_Click()

Select Case ControlEvento.Tag


Case "Aceptar"

AplicaInventario
DescargaForma

Case "Cancelar"

DescargaForma

Case "cmdButton2"

ShellRun Parent.hWnd, "Open", Archivo.File

End Select

End Sub

Sub AplicaInventario

Set excelConnection = CreateObject("ADODB.Connection")


excelConnection.ConnectionString = "driver={Microsoft Excel Driver (*.xls)};
DBQ=" & Controles("Archivo").File
excelConnection.Open

ImportaInventario excelConnection

End Sub

Sub ImportaInventario( excelConnection )


Dim rstProductos
Dim bolAfectaInventario
Dim rstArticulo
Dim rstClaveAdd
Dim Articulos
Dim Ajuste
Dim rstImpuesto

Ambiente.Connection.Execute "UPDATE prods SET etiquetas = 0"

bolAfectaInventario = True

'-------------------------------------------------------------------------------
-------------------------------------
'2011_11_22 Jose Felix jofelchez@gmail.com
'Agregamos las Lineas a la Importacin

Set rstExcel = CreaRecordSet( "SELECT linea FROM [ARTICULOS$] group by linea",


(excelConnection ) )
Set Query = NewQuery()
Set Query.Connection = Ambiente.Connection
While Not rstExcel.EOF

Set rstLinea = CreaRecordSet( "SELECT * FROM lineas WHERE Linea


= '" & rstExcel("Linea") & "'", Ambiente.Connection )

Query.Reset

If rstLinea.EOF Then
Query.strState = "INSERT"
Else
Query.strState = "UPDATE"
Query.Condition = "linea = '" & rstExcel("linea") & "'"
End If

Query.AddField "lineas","linea", rstExcel("Linea")


Query.AddField "lineas","descrip",rstExcel("Linea")
Query.AddField "lineas","Usuario", Ambiente.Uid
Query.AddField "lineas","usuFecha", Date
Query.AddField "lineas","usuHora",Formato( Time, "hh:mm:ss" )
Query.AddField "lineas","Numero", 0

Query.CreateQuery
Query.Execute

Query.Reset

rstExcel.MoveNext
Wend

'-------------------------------------------------------------------------------
-------------------------------------

Set rstProductos = CreaRecordSet( "SELECT * FROM [ARTICULOS$]", (excelConnec


tion ) )
Set Query = NewQuery()
Set Query.Connection = Ambiente.Connection

Set Articulos = CreateObject( "MyBArticulos.Articulos" )


Set Articulos.Ambiente = Ambiente

nEntrada = 0
nSalida = 0

While Not rstProductos.EOF

If Not clEmpty( "" & (rstProductos("Cdigo del producto")) ) Then


If Not clEmpty( "" & (rstProductos("Descripcin")) ) Then

Articulos.recalculoDeInventario rstProductos("Cdigo del producto"


), Ambiente, False
Set rstArticulo = CreaRecordSet( "SELECT articulo, existencia FR
OM prods WHERE articulo = '" & rstProductos("Cdigo del producto") & "'", Ambiente
.Connection )

Query.Reset

If rstArticulo.EOF Then
Query.strState = "INSERT"
Else
Query.strState = "UPDATE"
Query.Condition = "articulo = '" & rstProductos("Cdigo del pro
ducto") & "'"
End If

Query.AddField "prods","articulo", rstProductos("Cdigo del produc


to")
Query.AddField "prods","descrip",rstProductos("Descripcin")
Query.AddField "prods","linea", rstProductos("Linea")
Query.AddField "prods","marca", "SYS"
Query.AddField "prods","fabricante", "SYS"
Query.AddField "prods","precio1", FDec( rstProductos("Precio de
venta") )
Query.AddField "prods","costo_u", FDec( rstProductos("Costo ulti
mo") )
Query.AddField "prods","etiquetas", Val2( rstProductos("Existenc
ia") )
Query.AddField "prods","Unidad", rstProductos("Unidad")
Query.AddField "prods","precio2", FDec( rstProductos("Precio2")
)
Query.AddField "prods","precio3", FDec( rstProductos("Precio3")
)
Query.AddField "prods","precio4", FDec( rstProductos("Precio4")
)
Query.AddField "prods","precio5", FDec( rstProductos("Precio5")
)

If Val2(rstProductos("Impuesto")) > 0 Then


Set rstImpuesto = CreaRecordSet( "SELECT * FROM impuestos WHERE
valor = " & _
FDec( rstProductos("Impuesto") ), Ambiente.Connection )
Else
If ClAt("0", Trim(rstProductos("Impuesto"))) > 0 AND Len(Trim(rstProduct
os("Impuesto"))) = 1 Then
Set rstImpuesto = CreaRecordSet( "SELECT * FROM impuestos WHER
E valor = " & _
FDec( rstProductos("Impuesto") ), Ambiente.Connection )
Else
Set rstImpuesto = CreaRecordSet( "SELECT * FROM impuestos W
HERE impuesto = '" & _
rstProductos("Impuesto") & "'", Ambiente.Connection )
End If
End If

If rstImpuesto.EOF Then
cImpuesto = "SYS"
Else
cImpuesto = rstImpuesto( "impuesto" )
End If

Query.AddField "prods","impuesto", cImpuesto


Query.AddField "prods","paraventa", 1
Query.AddField "prods","invent", 1
Query.CreateQuery
Query.Execute

Query.Reset

If Not IsNull( rstProductos("Existencia") ) Then

Ajuste = FDec( rstProductos("Existencia") )' - Val2( rstArtic


ulo("Existencia") )
AfectandoInventario rstProductos("Cdigo del producto"), Ajuste
Articulos.recalculoDeInventario rstProductos("Cdigo del produc
to"), Ambiente, False

If Ajuste <> 0 Then


If Ajuste > 0 Then
nEntrada = CreaEntrada( nEntrada, rstProductos("Cdigo d
el producto"), Ajuste, FDec( rstProductos("Costo ultimo") ), rstProductos("Desc
ripcin") )
Else
nSalida = CreaSalida( nSalida, rstProductos("Cdigo del
producto"), Ajuste, FDec( rstProductos("Precio de venta") ), rstProductos("Desc
ripcin") )
End If
Else
Query.Reset
Query.SQL = "UPDATE prods SET costo_u = " & FDec( rstProductos("Costo ultimo"
) ) & _
" WHERE articulo = '" & rstProductos("Cdigo del producto") & "'"
Query.Execute
End If

End If

If Not clEmpty( "" & rstProductos("Cdigo de barras") ) Then

Set rstClaveAdd = CreaRecordSet( "SELECT clave FROM clavesadd


WHERE clave = '" & rstProductos("Cdigo de barras") & "'", Ambiente.Connection )

Query.Reset

If rstClaveAdd.EOF Then
Query.strState = "INSERT"
Else
Query.strState = "UPDATE"
Query.Condition = "clave = '" & rstProductos("Cdigo de barr
as") & "'"
End If

Query.AddField "clavesadd","Clave", rstProductos("Cdigo de bar


ras")
Query.AddField "clavesadd","Dato1", ""
Query.AddField "clavesadd","Usuario", Ambiente.Uid
Query.AddField "clavesadd","usuFecha", Date
Query.AddField "clavesadd","usuHora", Formato( Time, "hh:mm:ss" )
Query.AddField "clavesadd","Dato2", ""
Query.AddField "clavesadd","Articulo", rstProductos("Cdigo del
producto")
Query.AddField "clavesadd","Cantidad", 1
Query.AddField "clavesadd","Unidad", ""

If bolAfectaInventario = True Then


Query.AddField "clavesadd","Existencia", 0
End If

Query.AddField "clavesadd","Libre", 0
Query.AddField "clavesadd","Exportado", 0
Query.AddField "clavesadd","Precio", 0
Query.AddField "clavesadd","imagen", ""
Query.AddField "clavesadd","etiquetas", 0
Query.CreateQuery
Query.Execute

End If

End If
End If

Detalle.Caption = "" & rstProductos("Descripcin")

rstProductos.MoveNext
Wend

MyMessage "Catlogo importado"

If Question( "Desea imprimir etiquetas de codigo de barras", 1 ) = True Then

Script.RunProcess "ZEBRA2844", Me, Ambiente

End If

End Sub

Sub AfectandoInventario( strArticulo, Existencia )


Dim rstProd
Dim n
Dim Query
Dim rstInvInicial

Set Query = NewQuery()


Set Query.Connection = Ambiente.Connection

Set rstProd = CreaRecordSet( "SELECT articulo, existencia, costo_u FROM prod


s WHERE articulo = '" & strArticulo & "'", Ambiente.Connection )
n = n + 1

If Existencia = 0 Then
Exit Sub
End If

Set MovInv = CreateObject( "MyBInventario.Inventario" )


Set MovInv.Ambiente = Ambiente

MovInv.FechaMov = Date
MovInv.uId = Me.Ambiente.uId
MovInv.EntradaSalida = "S"
MovInv.cMetodo = Me.Ambiente.costeo
MovInv.EstacionSalida = Trim(Ambiente.Estacion)

While Not rstProd.EOF

n = n + 1

Query.Reset
Query.strState = "INSERT"
Query.AddField "movsinv","MOVIMIENTO", 1

If Existencia > 0 Then


MovInv.EntradaSalida = "E"
MovInv.nMovimiento = 1
MovInv.TipoMovim = "EX+"
MovInv.NoMovim = 1
MovInv.TipoOperacion = "EX+"
MovInv.nCantidad = Existencia
MovInv.AfectaCosto = True
Else
MovInv.EntradaSalida = "S"
MovInv.nMovimiento = 1
MovInv.TipoMovim = "EX-"
MovInv.NoMovim = 1
MovInv.TipoOperacion = "EX-"
MovInv.nCantidad = Existencia * -1
End If

MovInv.nPrecio = rstProd("costo_u")
MovInv.nAlmacen = 1
MovInv.cArticulo = strArticulo
MovInv.AfectaInventario

Set rstInvInicial = CreaRecordSet( "SELECT * FROM invinicial WHERE art


iculo = '" & rstProd("articulo") & "'", _
Ambiente.Connection )

If rstInvInicial.EOF Then
Query.Reset
Query.strState = "INSERT"
Query.AddField "invinicial","fecha", DateSerial( 2000, 01, 01 )
Query.AddField "invinicial","articulo", rstProd("articulo")
Query.AddField "invinicial","existencia", Existencia
Query.AddField "invinicial","costo", rstProd("costo_u")
Query.CreateQuery
Query.Execute
End If

rstProd.MoveNext

Wend

End Sub

Function FDec( Number )

FDec = Replace( "" & Number, ",", "." )

End Function

Function CreaEntrada( Entrada, Articulo, Cantidad, Costo, Descripcion )


Dim Query
Dim rstArticulo

Set Query = NewQuery()


Set Query.Connection = Ambiente.Connection

If Entrada = 0 Then
Query.Reset
Query.strState = "INSERT"

Entrada = TraeSiguiente( "MovEnt", Ambiente.Connection )


Query.AddField "entradas", "entrada", Entrada
Query.AddField "entradas", "ocupado", 1
Query.AddField "entradas", "f_emision", Date
Query.AddField "entradas", "tipo_doc", "EX+"
Query.AddField "entradas", "importe", 0
Query.AddField "entradas", "costo", 0
Query.AddField "entradas", "almacen", 1
Query.AddField "entradas", "estado", "CO"
Query.AddField "entradas", "observ", vbNullString
Query.AddField "entradas", "tipo_cam", 1
Query.AddField "entradas", "moneda", Ambiente.Moneda
Query.AddField "entradas", "datos", vbNullString
Query.AddField "entradas", "usuario", Ambiente.uId
Query.AddField "entradas", "usufecha", Date
On Error Resume Next
Query.AddField "entradas", "usuhora", Libreria.Formato(Time, "hh:mm:ss")
On Error GoTo 0
Query.CreateQuery
Query.Execute
End If

Query.Reset
Query.strState = "INSERT"
Query.AddField "entpart","ENTRADA", Entrada
Query.AddField "entpart","TIPO_DOC", "EX+"
Query.AddField "entpart","NO_REFEREN", Entrada
Query.AddField "entpart","ARTICULO", Articulo
Query.AddField "entpart","CANTIDAD", Cantidad
Query.AddField "entpart","PRECIO", Costo
Query.AddField "entpart","OBSERV", Descripcion
Query.AddField "entpart","PARTIDA", 0
Query.AddField "entpart","ID_ENTRADA", TraeSiguiente( "entpart", Ambiente.Co
nnection )
Query.AddField "entpart","Usuario", Ambiente.Uid
Query.AddField "entpart","UsuFecha", Date
Query.AddField "entpart","UsuHora", Libreria.Formato( Time, "hh:mm:ss" )
Query.AddField "entpart","PRCANTIDAD", 0
Query.AddField "entpart","PRDESCRIP", ""
Query.AddField "entpart","CLAVEADD", ""
Query.CreateQuery
Query.Execute

CreaEntrada = Entrada

End Function

Function CreaSalida( Salida, Articulo, Cantidad, Precio, Descripcion )


Dim Query
Dim rstArticulo

Set Query = NewQuery()


Set Query.Connection = Ambiente.Connection

If Salida = 0 Then
Query.Reset
Query.strState = "INSERT"

Salida = TraeSiguiente( "MovSal", Ambiente.Connection )

Query.AddField "salidas","Salida", Salida


Query.AddField "salidas","ocupado", 1
Query.AddField "salidas","tipo_doc", "EX-"
Query.AddField "salidas","F_EMISION", Date
Query.AddField "salidas","IMPORTE", 0
Query.AddField "salidas","COSTO", 0
Query.AddField "salidas","ALMACEN", 1
Query.AddField "salidas","ESTADO", "CO"
Query.AddField "salidas","OBSERV", "Salida automtica por excel"
Query.AddField "salidas","DATOS", ""
Query.AddField "salidas","USUARIO", Ambiente.Uid
Query.AddField "salidas","USUFECHA", Date
Query.AddField "salidas","USUHORA", Libreria.Formato( Time, "hh:mm:ss" )
Query.AddField "salidas","traspaso", 0
Query.AddField "salidas","almt", 0
Query.AddField "salidas","estraspaso", 0
Query.AddField "salidas","sucursal", ""
Query.AddField "salidas","esparasucursal", 0
Query.AddField "salidas","entsuc", 0
Query.AddField "salidas","folio", TraeSiguiente(Trim(Ambiente.Estacion) &
"salida", Ambiente.Connection)
Query.AddField "salidas","estacion", Ambiente.Estacion
Query.CreateQuery
Query.Execute
End If

Query.Reset
Query.strState = "INSERT"
Query.AddField "salpart","SALIDA", Salida
Query.AddField "salpart","TIPO_DOC", "EX-"
Query.AddField "salpart","NO_REFEREN", Salida
Query.AddField "salpart","ARTICULO", Articulo
Query.AddField "salpart","CANTIDAD", Cantidad * -1
Query.AddField "salpart","PRECIO", Precio
Query.AddField "salpart","OBSERV", Descripcion
Query.AddField "salpart","PARTIDA", 0
Query.AddField "salpart","ID_SALIDA", TraeSiguiente( "salpart", Ambiente.Con
nection )
Query.AddField "salpart","Usuario", Ambiente.Uid
Query.AddField "salpart","UsuFecha", Date
Query.AddField "salpart","UsuHora", Libreria.Formato( Time, "hh:mm:ss" )
Query.AddField "salpart","PRCANTIDAD", 0
Query.AddField "salpart","PRDESCRIP", ""
Query.AddField "salpart","CLAVEADD", ""
Query.AddField "salpart","costo", 0
Query.CreateQuery
Query.Execute

CreaSalida = Salida

End Function

You might also like