Publicado el Dejar un comentario

Ejemplo Verificador de Precios personalizado


El siguiente bloque de código permite realizar la consulta al catálogo de productos, verl las características y agregar el artículo al punto de venta.
Este código se implementa en el ambiente de desarrollo, creas un formulario; en la pestaña diseño solo agregas las etiquetas y textbox.

'jofelchez@gmail.com Jose Felix WhatsApp 7222816462
'Ejemplo de verificador de precios
Option Explicit
Dim mcp,mcl,mcm
Dim mca
Dim mcc
dim Busqueda,cCondicion
dim ApruebaEliminar
dim rstArticulo,rstClavesadd
dim rstArt
dim nPartida,n

Sub Form_Load()
'Lista.visible = false
'Grid.RowMode = True
Grid.MultiSelect = True

Me.Caption = "Verificador de Artículos"

lblArticulo.font.size = 14
lblDescripcion.font.size = 14
lblPrecio.font.size = 14
lblUnidad.font.size = 14
lblPresentacion.font.size = 14
lblCantPres.font.size = 14
'txtArticulo.ForeColor = vbGreen

LimpiarVentana
end sub

Sub Text_KeyDown()

Dim rstProds

if ControlEvento.Tag = "txtArticulo" Then
If KeyCode = 40 Then
Set Busqueda = CreateObject ("MyBBusquedaArticulos.BusquedaArticulos")
Set Busqueda.Ambiente = Ambiente
Set Busqueda.Control = txtArticulo
Busqueda.MuestraForma
Set Busqueda = Nothing
txtArticulo.SetFocus
Exit Sub
End if

End If

If KeyCode = 27 Then
DescargaForma
End If

End Sub

Function FDecimal(dValor)
FDecimal = Replace(dValor, ",", ".")
End Function

Sub Text_LostFocus()

If ControlEvento.Tag = "txtArticulo" Then
LimpiarVentana
call VerificarArticulo(txtArticulo)

End If

End Sub

sub VerificarArticulo(Articulo)

Dim s, s_adicional
dim Presentacion, Cant_Presentacion
Presentacion = ""
Cant_Presentacion = ""

cCondicion = ""
if txtArticulo <> "" then
cCondicion = cCondicion & " and prods.articulo = '" & txtArticulo & "' "
end if
s_adicional = ""

s = ""
s = s & "SELECT "
s = s & "prods.articulo As 'Articulo', "
s = s & "prods.descrip As 'Descripción', "
s = s & "impuestos.impuesto As 'Impuesto', "
'If Ambiente.rstEstacion("conimpuesto") <> 0 Then
' s = s & " precio1 * (1 + ( impuestos.valor / 100 )) As 'Precio 1', "
' s = s & " precio2 * (1 + ( impuestos.valor / 100 )) As 'Precio 2', "
' s = s & " precio3 * (1 + ( impuestos.valor / 100 )) As 'Precio 3', "
' s = s & "prods.costo_u * (1 + ( impuestos.valor / 100 )) As 'Costo Ultimo', "
'else
' s = s & " precio1 As 'Precio 1', "
' s = s & " precio2 As 'Precio 2', "
' s = s & " precio3 As 'Precio 3', "
' s = s & "prods.costo_u As 'Costo Ultimo', "
'end if
s = s & " precio1 * (1 + ( impuestos.valor / 100 )) As 'Precio 1', "
s = s & " precio2 * (1 + ( impuestos.valor / 100 )) As 'Precio 2', "
s = s & " precio3 * (1 + ( impuestos.valor / 100 )) As 'Precio 3', "
s = s & "prods.costo_u * (1 + ( impuestos.valor / 100 )) As 'Costo Ultimo', "

s = s & "prods.existencia As 'Existencia', "
s = s & "prods.linea As 'Línea', "
s = s & "prods.marca As 'Marca', "
s = s & "Fabricante As 'Fabricante', "
s = s & "Unidad As 'Unidad', "
s = s & "Invent As 'Control Inventario', "
s = s & "ParaVenta As 'Para venta', "
s = s & "Bloqueado As 'Bloqueado', "
s = s & "Bloqueado As 'Granel' "
s = s & "FROM prods INNER JOIN impuestos ON impuestos.impuesto = prods.impuesto "
s = s & "WHERE prods.articulo <> 'SYS' "

s_adicional = s & cCondicion
s_adicional = s_adicional & " ORDER BY 'Descripción' "

'mymessage "" & s_adicional
'SetSessionValue Ambiente, "SQLPRODUCTOS", s
Set rstArticulo = CreaRecordSet( "" & s_adicional , Ambiente.Connection )
'Set rstArticulo = CreaRecordSet( "SELECT * FROM tickettext where NombreTicket = ", Ambiente.Connection )

If rstArticulo.EOF Then
Set rstClavesadd = CreaRecordSet( "SELECT * FROM clavesadd WHERE clave = '" & txtArticulo & "'", Ambiente.Connection )

If Not rstClavesadd.EOF Then
'mymessage "si hay presentacion " & rstClavesadd("articulo")
'Set rstProd = CreaRecordSet( "SELECT * FROM prods WHERE articulo = '" & rstClavesadd("articulo") & "'", Ambiente.Connection )
Set rstArticulo = CreaRecordSet( "SELECT * FROM (" & s & ") a WHERE Articulo = '" & rstClavesadd("articulo") & "'", Ambiente.Connection )
Presentacion = rstClavesadd("clave") & " - " & rstClavesadd("dato1")
Cant_Presentacion = Val2(rstClavesadd("Cantidad"))
End If

End If

If Not rstArticulo.EOF then 'clEmpty(rstArticulo("Artículo")) Then
txtArticulo = rstArticulo("Articulo")
lblArticulo = "Artículo: " & rstArticulo("Articulo")
lblDescripcion = "Descripción: " & rstArticulo("Descripción")
lblPrecio = "Precio: " & formato(rstArticulo("Precio 1"),"##,##0.00" )
lblUnidad = "Unidad: " & rstArticulo("Unidad")
if Presentacion <> "" then
lblPresentacion = "Presentación: " & Presentacion
lblCantPres = "Cantidad presentación: " & Cant_Presentacion
end if
End If

end sub

Sub NuevaPartida(rstArticulo, nPrecio)
on error resume next
Set rstVenta = Rst("SELECT venta FROM ventas WHERE venta = " & ParentObject.Venta, Ambiente.Connection)
'mymessage "" & rstArticulo & nPrecio
If rstVenta.EOF Then
SalvaVenta False
End If

Query.Reset
Query.strState = "INSERT"
Query.AddField "partvta", "clave", ""
Query.AddField "partvta", "prcantidad", 1
Query.AddField "partvta", "venta", ParentObject.Venta
Query.AddField "partvta", "articulo", rstArticulo("Articulo")
Query.AddField "partvta", "cantidad", 1
Query.AddField "partvta", "precio", nPrecio / ParentObject.tipoDeCambio
Query.AddField "partvta", "preciobase", rstArticulo("precio1") / ParentObject.tipoDeCambio
Query.AddField "partvta", "descuento", 0
Query.AddField "partvta", "impuesto", rstArticulo("valor")
Query.AddField "partvta", "observ", Trim(rstArticulo("Descrip"))
Query.AddField "partvta", "partida", 0
Query.AddField "partvta", "usuario", ParentObject.Ambiente.uId
Query.AddField "partvta", "usufecha", Date
Query.AddField "partvta", "usuhora", Formato(Time, "HH:mm:ss")
Query.AddField "partvta", "almacen", 1
Query.AddField "partvta", "lista", 1
Query.AddField "partvta", "caja", ParentObject.Ambiente.Estacion
Query.AddField "partvta", "estado", "PE"
Query.AddField "partvta", "devconf", 0
Query.AddField "partvta", "iespecial", rstArticulo("iEspecial")
Query.AddField "partvta", "kit", rstArticulo("kit")
Query.AddField "partvta", "costo_u", rstArticulo("costo_u")
Query.AddField "partvta", "costo", rstArticulo("costo")
Query.AddField "partvta", "donativo", rstArticulo("Donativo") / ParentObject.tipoDeCambio
Query.AddField "partvta", "invent", 1
Query.Exec

nPartida = LastInsertedId(ParentObject.Ambiente.Connection)

ParentObject.fg2.Redraw = False

For n = ParentObject.UltimaPartida To ParentObject.fg2.Rows - ParentObject.fg2.FixedRows
If clEmpty(fg2.TextMatrix(n, 0)) Then
ParentObject.fg2.TextMatrix(n, 10) = 1
ParentObject.fg2.TextMatrix(n, 0) = rstArticulo("Articulo")
ParentObject.fg2.TextMatrix(n, 1) = 1
ParentObject.fg2.TextMatrix(n, 2) = nPrecio / ParentObject.tipoDeCambio
ParentObject.fg2.TextMatrix(n, 3) = Formato(0, formatoDeDinero)
ParentObject.fg2.TextMatrix(n, 5) = Formato(rstArticulo("Valor"), Ambiente.FDinero)
ParentObject.fg2.TextMatrix(n, 6) = Trim(rstArticulo("Descrip"))
ParentObject.fg2.TextMatrix(n, 14) = Formato(rstArticulo("iEspecial"), Ambiente.FDinero)
ParentObject.fg2.Row = n
ParentObject.fg2.Col = 6
ParentObject.fg2.CellFontBold = True
ParentObject.fg2.Col = 1
ParentObject.fg2.TextMatrix(n, 7) = nPartida
ParentObject.fg2.TextMatrix(n, 8) = 1
ParentObject.fg2.TextMatrix(n, 9) = 1
ParentObject.fg2.TextMatrix(n, 12) = Val2(rstArticulo("costo_u"))
ParentObject.fg2.TextMatrix(n, 17) = Val2(rstArticulo("Donativo")) / ParentObject.tipoDeCambio

ParentObject.UltimaPartida = n
AjustaPartida (n)

Exit For

End If
Next

ParentObject.CantidadDeArticulos = 0
ParentObject.Peso = 0

CalculaImportes
ParentObject.fg2.Redraw = True

ParentObject.Peso = 0
End Sub

Sub Button_click()

Select Case ControlEvento.Tag
Case "cmdAgregarPartida"
'Agregamos la recarga al punto de venta a través de NuevaPartida
Set rstArt = Rst("SELECT prods.*, impuestos.valor FROM prods, impuestos WHERE prods.impuesto = impuestos.impuesto " & _
" and prods.articulo = '" & txtArticulo & "' ", Ambiente.Connection)
If not rstArt.EOF Then
'SalvaVenta False
NuevaPartida rstArt, Val2(rstArt("precio1"))
End If

End Select
txtArticulo.SetFocus
End Sub

Sub LimpiarVentana()
lblArticulo = "Artículo: "
lblDescripcion = "Descripción: "
lblPrecio = "Precio: "
lblUnidad = "Unidad: "
'if Presentacion <> "" then
lblPresentacion = " "
lblCantPres = " "
'end if
end sub

Publicado el Dejar un comentario

Ejemplo de consulta WSDL

El siguiente ejemplo funciona para consumir servicios web SOAP.



'jofelchez@gmail.com
'whatsapp 7222816462
'Alta de catálogo de productos desde halpmybusinesspos.info
Public imagen
Public info
Public codigoEncontrado

Sub Form_Load()
Dim wf

Me.Caption = “ALTA ULTRARAPIDA”

cmdCancelar.Cancel = True

txtSKU.TabIndex = 0
txtDescripcion.TabIndex = 1
txtImpuesto.TabIndex = 2
txtPrecio.TabIndex = 3
cmdAceptar.TabIndex = 4
cmdCancelar.TabIndex = 5

codigoEncontrado = False
txtImpuesto = 0
txtSKU.Text = “” & GetSessionValue( Ambiente, “SKU_BUSCADO” )

End Sub

Sub procesaCadena( c )
Dim n, s, i

c = Mid( c, 4 )

Do While True
n = clAt( “:–:”, c )

If n = 0 Then
Exit Do
Else
i = i + 1

If i = 1 Then
txtSKU = Mid( c, 1, n – 1 )
End If

If i = 2 Then
txtDescripcion = Mid( c, 1, n – 1 )
End If

If i = 3 Then
txtPrecio = Formato( Val2(Mid( c, 1, n – 1 )), “##,##0.00” )
txtPrecio.SelStart = 0
txtPrecio.SelLength = Len( txtPrecio )
End If

If i = 4 Then
imagen = Mid( c, 1, n – 1 )
End If

If i = 5 Then
info = Mid( c, 1, n – 1 )
End If

If i = 6 Then
txtImpuesto = Formato( Val2(Mid( c, 1, n – 1 )), “##,##0.00” )
End If

c = Mid( c, n + 4 )

End If

Loop

End Sub

Sub Button_click()
Select Case ControlEvento.Tag
Case “cmdAceptar”

Call salvaDatos()

Case “cmdCancelar”
DescargaForma
End Select

End Sub

Sub salvaDatos()
Dim Query, rstImpuesto, codigoImpuesto, wf,longitudDescipcion,informacion
dim rstProds

If clEmpty( txtSKU ) Then
MyMessage “Es necesario que indique el código de barras del producto”
txtSKU.Setfocus
Exit Sub
End If

If Val2( txtPrecio ) <= 0 Then
MyMessage “Es necesario que indique el precio del producto”
txtDescripcion.SetFocus
Exit Sub
End If

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

Set rstImpuesto = CreaRecordSet( “SELECT * FROM impuestos WHERE valor = ” & Val2( txtImpuesto ), Ambiente.Connection )

If rstImpuesto.EOF Then
Query.strState = “INSERT”
Query.AddField “impuestos”,”Impuesto”, “I” & txtimpuesto
Query.AddField “impuestos”,”Descrip”, “I” & txtimpuesto
Query.AddField “impuestos”,”Valor”, txtimpuesto
Query.AddField “impuestos”,”Usuario”, Ambiente.Uid
Query.AddField “impuestos”,”usuFecha”, Date
Query.AddField “impuestos”,”usuHora”, Formato( Time, “hh:mm:ss” )
Query.Exec

codigoImpuesto = “I” & txtimpuesto
Else

codigoImpuesto = rstImpuesto(“impuesto”)

End If

Set rstProds = CreaRecordSet( “SELECT articulo FROM prods WHERE articulo = ‘” & txtSKU & “‘”, Ambiente.Connection )

longitudDescipcion = len(txtDescripcion)
informacion = Lcase(Mid( txtDescripcion, 1, longitudDescipcion – 7))
informacion = replace(informacion,”ñ”,”%C3%B1″) ‘ñ
informacion = replace(informacion,”á”,”a”) ‘a
informacion = replace(informacion,”é”,”e”) ‘e
informacion = replace(informacion,”í”,”i”) ‘i
informacion = replace(informacion,”ó”,”o”) ‘o
informacion = replace(informacion,”ú”,”u”) ‘u

Query.Reset

If rstProds.EOF Then
Query.strState = “INSERT”
Query.AddField “prods”, “linea”, “SYS”
Query.AddField “prods”, “marca”, “SYS”
Query.AddField “prods”, “ubicacion”, “SYS”
Query.AddField “prods”, “fabricante”, “SYS”
Query.AddField “prods”, “imagen”, info

Else
Query.strState = “UPDATE”
Query.Condition = “articulo = ‘” & txtSKU & “‘”

End If

Query.AddField “prods”, “articulo”, txtSKU
Query.AddField “prods”, “descrip”, txtDescripcion
Query.AddField “prods”, “precio1”, Val2(txtPrecio) / (1 + (Val2( txtImpuesto ) / 100))
Query.AddField “prods”, “impuesto”, codigoImpuesto
Query.AddField “prods”, “paraventa”, 1
Query.AddField “prods”, “invent”, 1
Query.AddField “prods”, “url”, “https://mbasic.facebook.com/search/photos/?source=filter&isTrending=0&q=” & informacion
Query.Exec

Set rstProds2 = CreaRecordSet( “SELECT top 1 ARTICULO, prods.DESCRIP, prods.LINEA, prods.MARCA, PRECIO1, UNIDAD, IMPUESTO, INVENT, lineas.descrip as descripLinea, marcas.descrip as descripMarca FROM prods left join lineas on prods.linea = lineas.linea left join marcas on prods.marca= marcas.marca WHERE prods.autor is null or prods.autor <> ‘1’ order by articulo desc “, Ambiente.Connection )
If not rstProds2.EOF Then
consulta “INSERT IGNORE INTO prods (ARTICULO, DESCRIP, LINEA, MARCA, PRECIO1, UNIDAD, IMPUESTO, INVENT, DESCRIPLINEA, DESCRIPMARCA, USUFECHA ) VALUES (‘” & rstProds2(“ARTICULO”) & “‘, ‘” & rstProds2(“DESCRIP”) & “‘ , ‘” & rstProds2(“LINEA”) & “‘ , ‘” & rstProds2(“MARCA”) & “‘ , ‘” & rstProds2(“PRECIO1”) & “‘ , ‘” & rstProds2(“UNIDAD”) & “‘ , ‘” & rstProds2(“IMPUESTO”) & “‘ , ‘” & rstProds2(“INVENT”) & “‘ , ‘” & rstProds2(“DESCRIPLINEA”) & “‘ , ‘” & rstProds2(“DESCRIPMARCA”) & “‘ , now() ) ”
Ambiente.Connection.Execute “update prods set autor = 1 where articulo = ‘” & rstProds2(“ARTICULO”) & “‘ ”

end if

on error resume next
ParentObject.txtFields(3) = “”
ParentObject.LlenaPartida txtSKU.Text

DescargaForma

End Sub

Sub Form_Activate()
On Error Resume Next

If clEmpty( txtDescripcion ) Then
txtDescripcion.SetFocus()
Else
If Not clEmpty( txtImpuesto ) Then
txtPrecio.SetFocus
Else
txtImpuesto.SetFocus
End If
End If

End Sub

Sub consulta(MiArticulo)
Dim NS, NS_SOAP, NS_SOAPENC, NS_XSI, NS_XSD

NS = “urn:miserviciowsdl”

NS_SOAP = “http://schemas.xmlsoap.org/soap/envelope/”
NS_SOAPENC = “http://schemas.xmlsoap.org/soap/encoding”
NS_XSI = “http://www.w3.org/2001/XMLSchema-instance”
NS_XSD = “http://www.w3.org/2001/XMLSchema”

‘ The URL of the Web service.
Dim URL
URL = “https://demo.helpmybusinesspos.info/ws/servicio_2.php?wsdl”

‘ The URL of the operation (function).
Dim Operation_HMBP
Operation_HMBP = “urn:MyServicewsdl#GetData2”

‘ XML DOM objects.
Dim DOM, Envelope, Body, Operation, Param

‘ Creates an XML DOM object.
Set DOM = CreateObject(“MSXML2.DOMDocument.6.0”)

‘ Creates the main elements.
Set Envelope = DOM.createNode(1, “SOAP-ENV:Envelope”, NS_SOAP)
Envelope.setAttribute “xmlns:soapenc”, NS_SOAPENC
Envelope.setAttribute “xmlns:xsi”, NS_XSI
Envelope.setAttribute “xmlns:xsd”, NS_XSD
DOM.appendChild Envelope
Set Body = DOM.createElement(“SOAP-ENV:Body”)
Envelope.appendChild Body

‘ Creates an element for the TIPOSDECAMBIO function.
‘Set Operation = DOM.createNode(1, “ns1:GetData”, NS)
Set Operation = DOM.createNode(1, “ns1:GetData2”, NS)
Body.appendChild Operation

‘ Creates an element for the Celsius parameter (passes a value of 33 °C).
‘Parámetro 1
Set Param = DOM.createNode(1, “ID”, NS)
Param.Text = MiArticulo
Operation.appendChild Param

‘Parámetro 2
‘Set Param2 = DOM.createNode(1, “baseDeDatos”, NS)
‘Param2.Text = MibaseDeDatos
‘Operation.appendChild Param2

‘Parámetro 3
‘Set Param3 = DOM.createNode(1, “cliente”, NS)
‘Param3.Text = MiCliente
‘Operation.appendChild Param3

‘ Releases the objects.
Set Param = Nothing
Set Operation = Nothing
Set Body = Nothing
Set Envelope = Nothing

Set NodeList = DOM.getElementsByTagName(“*”)
For Each Element in NodeList
If Element.tagName = “return” then

‘cortar hasta el primer pipe
nPos = clAt( “|”, “” & Element.Text )
cArticulo = Mid( Element.Text, 1, nPos – 1)
txtSku = trim(cArticulo)

cDescripcion = Mid( Element.Text, nPos + 1)
‘cortar hasta el segundo pipe
nPos = clAt( “|”, “” & cDescripcion )
cDescripcion = Mid( cDescripcion,1, nPos – 1)
txtDescripcion = trim(cDescripcion)

Exit For

End If
Next

‘ Releases the objects.
Set Element = Nothing
Set NodeList = Nothing
Set DOM = Nothing

End Sub

Sub procesaRespuesta( sMensaje)
Dim Query, rstArticulo
Dim NodeList, Element

mymessage “” & sMensaje

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

Set xml = CreateObject(“Msxml2.DOMDocument.3.0”)
xml.loadXML((sMensaje))
Set NodeList = xml.getElementsByTagName(“*”)
For Each Element in NodeList
If Element.tagName = “bm:Obs” then
msgbox “Tipo de cambio : ” & Trim(Element.getAttribute(“OBS_VALUE”) ) & vbCrLf & “Fecha : ” & Trim(Element.getAttribute(“TIME_PERIOD”) )
Exit For
End If
Next
End Sub

Sub Text_LostFocus()

If ControlEvento.Tag = “txtSku” Then
consulta “SELECT articulo, descrip, precio1,linea,marca, impuesto FROM prods WHERE articulo = ‘” & trim(txtSKU) & “‘ or articulo like ‘%” & Cambia(“%”, ” “, txtSKU) & “%’ or descrip like ‘%” & Cambia(“%”, ” “, txtSKU) & “%’ order by articulo ”
Form_Activate
End If

End Sub

 

Publicado el Dejar un comentario

Reconstruir índices en Sql Server

microsoft_sql_server_indice_indexEn este tema se describe cómo volver a generar un índice o todos los índices de una tabla mediante el Explorador de objetos en SQL Server Management Studio. Cuando se vuelve a generar un índice, dicho índice se elimina y se vuelve a crear. De este modo, se elimina la fragmentación, se recupera el espacio de disco mediante la compactación de las páginas según el valor del factor de llenado existente y se vuelven a ordenar las filas del índice en páginas contiguas. Para obtener más información acerca de la fragmentación de índices, vea Reorganizar y volver a generar índices.

Para volver a generar un índice

  1. En el Explorador de objetos, realice la conexión a una instancia de SQL Server Database Engine (Motor de base de datos de SQL Server) y, a continuación, expándala.
  2. Expanda Bases de datos, expanda la base de datos que contiene la tabla con el índice especificado y, a continuación, expanda Tablas.
  3. Expanda la tabla a la que pertenece el índice y, a continuación, expanda Índices.
  4. Haga clic con el botón secundario en el índice que desee volver a generar y, a continuación, haga clic en Volver a generar.
  5. Para iniciar la operación de regeneración, haga clic en Aceptar.

Para volver a generar todos los índices de una tabla

  1. En el Explorador de objetos, realice la conexión a una instancia de SQL Server Database Engine (Motor de base de datos de SQL Server) y, a continuación, expándala.
  2. Expanda Bases de datos, expanda la base de datos que contiene la tabla con los índices especificados y, a continuación, expanda Tablas.
  3. Expanda la tabla a la que pertenecen los índices.
  4. Haga clic con el botón secundario en Índices y, a continuación, haga clic en Volver a generar todo.
  5. Para iniciar la operación de recreación, haga clic en Aceptar.

Fuente:

Publicado el Dejar un comentario

Factura de cierre CFDI 3.3

Las ventas de mostrador se pueden consolidar en una sola factura de cierre y es posible cumplir con los requerimientos del SAT; a la vez, permite al los pequeños negocios ahorrar costos de folios.

La factura de cierre se incluye en nuestro módulo de factura electrónica, el cual conecta MyBusinessPOS + FacturadorElectronico.



Factura Electrónica CFDI 2010

20.28 MB 478 descargas

En este vídeo se muestra cómo implementar la factura de cierre 3.3 para ventas de mostrador.

También contamos con el desarrollo para factura de cierre MyCFDI. Envíanos un whatsapp al 7222816462 y te haremos llegar información para que pueda timbrar a la brevedad.

Publicado el 2 comentarios

Cargar catálogo de productos para abarrotes Excel

Contamos con un catálogo de 2000 productos para abarrotes con sus códigos de barras.
Este catálogo está disponible en Excel para su fácil manejo previo a la carga dentro de tu sistema.
Inicia sesión para adquirir el archivo en Excel y en .paq.




.