CONTACTO ***** jofelchez@gmail.com *****




Soporte Remoto, helpmybusinesspos.info , TeamViewer, Hamachi, Descarga My Business pos 2012 Gratis, crack activar, keygen activador , FACTURACIÓN ELECTRÓNICA, my business pos 2012, MyCBB, Codigo de Barras BiDimensional, configurar facturas, Migración de la Versión 2006 a la Versión 2011, Delta, Configurar 2011, Manuales de Instalación, Errores, Modificar, Respaldos, Nuevo IVA, Red MyBusiness, Problema, Ambiente path, Migración, Impresora, Descarga 2011, Reportes, Presentaciones, Win7, SQL, Manager, Ticket, Etiquetas, Generador, Corte X Z, Restaurar, Zebra, Logo, recomendaciones, Remisiones, Barras, Inventario, hamachi, Delta y LINUX, code39, como cambiar el iva en my business pos, my business pos blogspot, como instalar my busuness delta, TPV, MyMoney, Concentrador POS, Zebra, Datamax, Mobile Business, Commander, Restaurante, MyBusiness POS 2012, Kardex

miércoles, 11 de enero de 2012

Importando productos desde excel

'código 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 Importación


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$]", (excelConnection ) )
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("Código del producto")) ) Then
If Not clEmpty( "" & (rstProductos("Descripción")) ) Then

Articulos.recalculoDeInventario rstProductos("Código del producto"), Ambiente, False
Set rstArticulo = CreaRecordSet( "SELECT articulo, existencia FROM prods WHERE articulo = '" & rstProductos("Código del producto") & "'", Ambiente.Connection )

Query.Reset

If rstArticulo.EOF Then
Query.strState = "INSERT"
Else
Query.strState = "UPDATE"
Query.Condition = "articulo = '" & rstProductos("Código del producto") & "'"
End If

Query.AddField "prods","articulo", rstProductos("Código del producto")
Query.AddField "prods","descrip",rstProductos("Descripción")
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 ultimo") )
Query.AddField "prods","etiquetas", Val2( rstProductos("Existencia") )
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(rstProductos("Impuesto"))) = 1 Then
Set rstImpuesto = CreaRecordSet( "SELECT * FROM impuestos WHERE valor = " & _
FDec( rstProductos("Impuesto") ), Ambiente.Connection )
Else
Set rstImpuesto = CreaRecordSet( "SELECT * FROM impuestos WHERE 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( rstArticulo("Existencia") )
AfectandoInventario rstProductos("Código del producto"), Ajuste
Articulos.recalculoDeInventario rstProductos("Código del producto"), Ambiente, False

If Ajuste <> 0 Then
If Ajuste > 0 Then
nEntrada = CreaEntrada( nEntrada, rstProductos("Código del producto"), Ajuste, FDec( rstProductos("Costo ultimo") ), rstProductos("Descripción") )
Else
nSalida = CreaSalida( nSalida, rstProductos("Código del producto"), Ajuste, FDec( rstProductos("Precio de venta") ), rstProductos("Descripción") )
End If
Else
Query.Reset
Query.SQL = "UPDATE prods SET costo_u = " & FDec( rstProductos("Costo ultimo") ) & _
" WHERE articulo = '" & rstProductos("Código del producto") & "'"
Query.Execute
End If

End If

If Not clEmpty( "" & rstProductos("Código de barras") ) Then

Set rstClaveAdd = CreaRecordSet( "SELECT clave FROM clavesadd WHERE clave = '" & rstProductos("Código de barras") & "'", Ambiente.Connection )

Query.Reset

If rstClaveAdd.EOF Then
Query.strState = "INSERT"
Else
Query.strState = "UPDATE"
Query.Condition = "clave = '" & rstProductos("Código de barras") & "'"
End If

Query.AddField "clavesadd","Clave", rstProductos("Código de barras")
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("Código 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("Descripción")

rstProductos.MoveNext
Wend

MyMessage "Catálogo 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 prods 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 articulo = '" & 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.Connection )
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 automática 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.Connection )
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

18 comentarios:

  1. Que tal la verdad soy nuevo en esto.. y apenas estoy checando su producto.. pero he tenido algunos problemas para exportar productos desde excel me manda este error Button_Click PRODSEXCEL El nombre de columna 'ensambladoenlinea' no es válido. ---> 0 -2147217900 En línea: 97

    ResponderEliminar
  2. MISAEL GARCIA VAZQUEZ7 de abril de 2013, 20:37

    Esto soluciona el error en la versión 2012?

    ResponderEliminar
  3. que tal a mi me pasa lo mismo que a jose antonio alguien lo resolvio???? Button_Click PRODSEXCEL El nombre de columna ‘ensambladoenlinea’ no es válido. —> 0 -2147217900 En línea: 97

    ResponderEliminar
  4. Me pasa lo mismo... Button_Click PRODSEXCEL No se encontró el elemento en la colección que corresponde al nombre o el ordinal solicitado. ---> 0 3265 En línea: 83

    ResponderEliminar
  5. tengo este problema al momento de importar el archivo de "artículos" previamente modificado, al cual le agregue código, descripción y linea: If ClAt("0", Trim(rstProductos("Impuesto"))) > 0 AND Len(Trim(rstProductos("Impuesto"))) = 1 Then

    ResponderEliminar
  6. Buenas tardes. Por favor intente colocar en la columna IMPUESTO el valor 0 o SYS encaso de que sus productos no lleven iva o coloque IVA si es que se desglosará el impuesto adicional.

    Saludos
    José Félix

    ResponderEliminar
  7. Podrian ayudarme cuando intento importar articulos desde excel me aparece " Button_Click PRODSEXCEL No se encontró el elemento en la colección que corresponde con el nombre o el ordinal pedido. ---> 0 3265 En línea: 89" ayuda por favor

    ResponderEliminar
  8. Buenas tardes. Le puedo ofrecer un parche que le soluciona el error , en 700 pesos a la cuenta que aparece en la parte superior izquierda

    Saludos
    José Félix

    ResponderEliminar
  9. El error ” Button_Click PRODSEXCEL No se encontró el elemento en la colección que corresponde con el nombre o el ordinal pedido. —> 0 3265 En línea: 89″, lo pueden corregir agregando la columna "Linea", y llenándola con el valor SYS, también las demás columnas deben estar llenos de acuerdo al tipo de celda que les corresponde. Por ejemplo, en "Impuesto" poner IVA (ya lo habían comentado anteriormente, José Félix). Espero les sirva a alguien, sin fines de lucro.

    ResponderEliminar
  10. Amigos:
    El error ” Button_Click PRODSEXCEL No se encontró el elemento en la colección que corresponde con el nombre o el ordinal pedido. —> 0 3265 En línea: 89″, lo pueden corregir agregando la columna "Linea", y llenándola con el valor SYS, también las demás columnas deben estar llenos de acuerdo al tipo de celda que les corresponde. Por ejemplo, en "Impuesto" poner IVA (ya lo habían comentado anteriormente, José Félix). Espero les sirva a alguien, sin fines de lucro.

    ResponderEliminar
  11. Muchas gracias CPC por este recordatorio, se convierte en aportación para los nuevos visitantes que tengan la misma duda.
    Saludos
    José Félix

    ResponderEliminar
  12. Muchas Gracias @CPC me sirvio bastante tu aporte, esta recibiendo ese error al Exportar. PEro ya quedo solucionado

    Gracias

    ResponderEliminar
  13. estoy tratando de importarlos articculos y este mensaje es el que me sale

    Button_Click PRODSEXCEL No se encontró el elemento en la colección que corresponde al nombre o el ordinal solicitado. ---> 0 3265 En línea: 87

    me pueden orientar porfavor

    ResponderEliminar
  14. Buen día

    Por favor apóyeme con un pomo de 700 y le envío un parche para que pueda importar sin problemas.
    Saludos
    José Félix

    ResponderEliminar
  15. hola este error lo solucione agregando la columna Línea poniendo "SYS" en las celdas y agregando también la columna Unidad poniendo en las celdas "pzas" con esto me dejo importar mi inventario espero les sirva

    ResponderEliminar
  16. Muchas gracias por su colaboración, señor Martínez. Estoy seguro que será de utilidad para los demás compañeros.

    Saludos
    José Félix

    ResponderEliminar
  17. Exelente aporte me sirvio de mucho gracias

    ResponderEliminar
  18. mercado.javier@gmail.com5 de abril de 2017, 16:41

    Muchas gracias. Me sirvió mucho.

    ResponderEliminar

Por favor, también escribe tu e-mail para contactarte
LA ASESORIA TIENE UN COSTO, para que lo consideres antes de Exigir Respuesta.