Files
Durakelo/B4A/C_Productos.bas
Jose Alberto Guerra Ugalde e72dabb069 -VERSION 5.01.27
- Se corrigio que cuando revisaba si el cliente ya haba cntestado la encuesta, en lugar de revisar HIST_ENCUESTA3, estaba revisando HIST_ENCUESTA y por eso siemrpe manbdaba la encuesta.
- Se agregó que se descarguen las rutas para las encuestas (CAT_ENCUESTA_PREGUNTA/CAT_EP_RUTAS), para que solo muestra las encuestas en las rutas especificadas y se modificó el query que trae los datos (antes se traian las preguntas con un like '%x%' y mosraba la encuesta en rutas que no debia)
2025-01-28 20:20:10 -06:00

1581 lines
66 KiB
QBasic

B4A=true
Group=Default Group
ModulesStructureVersion=1
Type=Class
Version=11.5
@EndOfDesignText@
Sub Class_Globals
Private Root As B4XView 'ignore
Private xui As XUI 'ignore
Dim kh As kms_helperSubs
Dim ruta As String
Dim q_buscar As String
Dim forzarBusqueda As Boolean = False
Dim skmt As SQL
Dim c As Cursor
Dim c2 As Cursor
Dim C3 As Cursor
Dim s As Cursor
Dim lv_catalogos As ListView
Dim lv_promos As ListView
Dim entro As String
Dim gest As Button
Dim lfila As Label
Dim marca As String
Dim tipo As String
Dim subtipo As String
Private BUSCA As EditText
Dim ya_entro As String
Dim TIENE_PROMOS As String
Dim RES As String
Dim S1 As Cursor
Dim bmp As Bitmap
Dim ciclo As String
Private b_qr As Button
Private p_productos As Panel
Dim clv_productos As CustomListView
Private ImageView1 As ImageView
Private Panel3 As Panel
Private p_prods As Panel
Private i_prod As ImageView
Private l_prodX As Label
Private b_prodMas As Button
Private l_pCant As Label
Private et_pCant As EditText
Private b_prodMenos As Button
Dim b_terminar1 As Button
Dim b_continuar As Button
' Private l_total As Label
' Private l_totProds As Label
Dim totalProds As Int = 0
Dim totalCompra As Float = 0
Dim etCantHasFocus As Boolean = False
Dim prodsMap As Map
Private l_Cargando As Label
Private l_info As Label
Private b_buscar As Button
Private p_botonesVenta As Panel
Private lv_tipo As ListView
Private lv_subtipo As ListView
Private p_vistaPreviaTrans As Panel
Private lv_prodsPedido As ListView
Private b_rechazar As Button
Private b_aceptar As Button
Private p_vistaPrevia As Panel
Dim folio As String
Dim result As String
Private l_cant As Label
Private l_total2 As Label
Dim prodsPedidoActual As String
Dim montoPedidoActual As String
Private clv_prods_ll As CustomListView
Dim PCLV As PreoptimizedCLV
Dim listaProds As List
' Type AirportData (Name As String, AirportID As Int, IATA As String, ICAO As String, City As String, Latitude As Float, Longitude As Float, Altitude As String)
Dim pedidoMap As Map
Private p_botMasMen As Panel
Dim reiniciarlistaProds As Boolean= False
' Dim listaRenglones As List
Dim listaTiempos As List
Dim clienteId As String
Dim rutaUsuario As String
Dim hayPedido As Boolean
Dim listaHints As List
Dim query, query2 As String
Private p_rmi As Panel
Private b_rmi_aceptar As Button
Private l_montoDisponible As Label
Private b_rmi_menos As Button
Private l_rmi_cant As Label
Private b_rmi_mas As Button
Private l_rmi_nombre As Label
Private l_rmi_total As Label
Dim rmiMap As Map
Private l_rmi_usado As Label
Dim list_prodsPedido As List
' Private b_rmi As Button
Private l_mDisponible As Label
Dim nuevaCantRMI As Int
Private lv_precio2 As ListView
Private cb_precio2 As B4XComboBox
Private PERFIL As String
Private prodAct As Label
End Sub
'You can add more parameters here.
Public Sub Initialize As Object
Return Me
End Sub
'This event will be called once, before the page becomes visible.
Private Sub B4XPage_Created (Root1 As B4XView)
Root = Root1
'load the layout to Root
' Activity.RemoveAllViews
Root.LoadLayout("productos")
ruta = File.DirInternal
kh.Initialize(Me, "kh", Starter.skmt)
If File.Exists(ruta, "kmt.db") = False Then
File.Copy(File.DirAssets, "kmt.db", ruta, "kmt.db")
End If
PCLV.Initialize(Me, "PCLV", clv_prods_ll)
ciclo = 1
l_info.Width = Root.Width * 0.8
l_info.Left = (Root.Width/2) - (l_info.Width/2)
c = Starter.skmt.ExecQuery("select distinct CAT_GP_TIPO from cat_gunaprod2 where CAT_GP_TIPO <> 'PROMOS' order by CAT_GP_TIPO")
If c.RowCount > 0 Then
Dim label1 As Label
label1 = lv_tipo.SingleLineLayout.Label
label1.TextSize = 17
label1.TextColor = Colors.Black
lv_tipo.Clear
For i=0 To c.RowCount-1
c.Position=i
lv_tipo.AddSingleLine(c.GetString("CAT_GP_TIPO"))
Next
End If
c.Close
' llenaCatalogo(False)
' listaRenglones.Initialize
listaTiempos.Initialize
listaProds.Initialize
pedidoMap.Initialize
listaHints.Initialize
Log("Llamamos LlenaProdsLL")
LlenaProdsLL(Null, Null)
list_prodsPedido.Initialize
Log("list_prodsPedido.Initialize")
prodsMap.Initialize
p_vistaPreviaTrans.Top = 0 : p_vistaPreviaTrans.left = 0
p_productos.Top = 0 : p_productos.left = 0
End Sub
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
Sub B4XPage_Appear
' clv_prods_ll.Initialize(Me, "clv_prods_ll")
' list_prodsPedido.Initialize
' Log("list_prodsPedido.Initialize")
clienteId = kh.traeCliente
rutaUsuario = kh.traeRuta
If p_rmi.Visible Then p_rmi.Visible = False
' l_mDisponible.Visible = False
' Starter.skmt.ExecNonQuery2("UPDATE CAT_GUNAPROD SET CAT_GP_TIPOPROD = (?) WHERE CAT_GP_TIPOPROD = (?) ",Array As Object("PRIORITARIO","1"))
' Starter.skmt.ExecNonQuery2("UPDATE CAT_GUNAPROD SET CAT_GP_TIPOPROD = (?) WHERE CAT_GP_TIPOPROD = (?) ",Array As Object("ESTRATEGICO","2"))
' Starter.skmt.ExecNonQuery2("UPDATE CAT_GUNAPROD SET CAT_GP_TIPOPROD = (?) WHERE CAT_GP_TIPOPROD = (?) ",Array As Object("COMPLEMENTARIO","3"))
' Starter.skmt.ExecNonQuery2("UPDATE CAT_GUNAPROD SET CAT_GP_TIPOPROD = (?) WHERE CAT_GP_TIPOPROD = (?) ",Array As Object("CATALOGO REGULAR","0"))
' Starter.skmt.ExecNonQuery2("UPDATE CAT_GUNAPROD SET CAT_GP_TIPOPROD = (?) WHERE CAT_GP_CLASIF = (?) ",Array As Object("PROMOS","PROMOS"))
If Starter.tipov = "PREVENTA" Then
query = "cat_gunaprod"
query2 = "COUNT_GUNAPROD"
Else IF Starter.tipov = "VENTA" Then
query = "cat_gunaprod2"
query2= " COUNT_GUNAPROD2"
ELSE IF Starter.tipov = "ABORDO" Then
query = "cat_gunaprod"
query2 = "COUNT_GUNAPROD"
Else
query = "cat_gunaprod"
query2 = "COUNT_GUNAPROD"
End If
clv_prods_ll.GetBase.SetLayoutAnimated(0, 5dip, 130dip, Root.Width + 10, Root.Height * 0.68) 'Cambiamos el tamaño y posición de la lista de productos
clv_prods_ll.Base_Resize(clv_prods_ll.GetBase.Width, clv_prods_ll.GetBase.Height) 'Cambiamos el tamaño del panel interno de la lista para que ajuste al nuevo tamaño.
If B4XPages.MainPage.bTerminarClicked Then
lv_catalogos.Visible = True
lv_promos.Visible = False
lv_tipo.Visible = False
lv_subtipo.Visible = False
clv_prods_ll.AsView.Visible = False
B4XPages.MainPage.bTerminarClicked = False
End If
If ya_entro <> "1" Then
If BUSCA.Text <> "" Then BUSCA.Text =""
entro ="3"
lv_catalogos.Clear
Sleep(100)
lfila.Text = "CATALOGO"
p_productos.Height = Root.Height
clv_prods_ll.AsView.Visible = False
lv_catalogos.BringToFront
lv_catalogos.Visible = True
p_botonesVenta.Visible = False
p_botonesVenta.Top = clv_prods_ll.AsView.top + clv_prods_ll.AsView.Height - 10
lv_promos.Visible = False
End If
Dim label1 As Label
label1 = lv_catalogos.SingleLineLayout.Label
label1.TextSize = 17
label1.TextColor = Colors.Black
lv_catalogos.Clear
lv_catalogos.AddSingleLine("CATALOGO")
' Log(Starter.tipov)
c = Starter.skmt.ExecQuery("select count(*) as hayPromos from promos_comp")
c.Position = 0
' If c.GetInt("hayPromos") > 0 And clienteId <> 0 And kh.revisaImpresa = False Then
' lv_catalogos.AddSingleLine("PROMOS")
' End If
Sleep(100)
' Log(Subs.traeTotalesClienteActual)
Dim m As Map = Subs.traeTotalesClienteActual
prodsPedidoActual = m.Get("productos")
montoPedidoActual = m.Get("monto")
hayPedido = kh.hayPedido
' LogColor("Pedido ant? - "&hayPedido, Colors.Magenta)
If reiniciarlistaProds Then
' Log("Llamamos LlenaProdsLL")
LlenaProdsLL(Null, Null)
else If hayPedido Then
' LogColor("HAY PEDIDO ANTERIOR", Colors.red)
' Log("Llamamos LlenaProdsLL")
' LlenaProdsLL(Null, Null)
End If
If clv_prods_ll.Size > 0 Then
clv_prods_ll.JumpToItem(0) 'Vamos al primer artículo de la lista.
PCLV.lblHint.SetTextSizeAnimated(0,13)
PCLV.B4XSeekBar1.Color1=Colors.DarkGray
PCLV.B4XSeekBar1.Color2=Colors.DarkGray
PCLV.B4XSeekBar1.ThumbColor=Colors.red
PCLV.B4XSeekBar1.mBase.Left=Root.Width *0.91
' PCLV.B4XSeekBar1.mBase.Top=-50
PCLV.B4XSeekBar1.mBase.Height=clv_prods_ll.AsView.Height
PCLV.pnlOverlay.Height = clv_prods_ll.AsView.Height
PCLV.B4XSeekBar1.Update
Else
PCLV.B4XSeekBar1.mBase.Left=Root.Width *1.5 'Si no hay productos, que NO se vea la barra de busqueda.
End If
' If lfila.Text = "RMI" Then
' b_rmi.Visible = False
' l_mDisponible.Visible = True
' End If
' Log(Starter.tipov)
c = Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("PERFIL"))
c.Position =0
If c.RowCount > 0 Then
PERFIL = c.GetString("CAT_VA_VALOR")
Else
PERFIL = 0
End If
c.Close
If PERFIL = "V-COSTO" Then
Starter.skmt.ExecNonQuery("DELETE FROM CAT_GUNAPROD WHERE CAT_GP_ID IN (SELECT CAT_GP_ID FROM LISTA_PRECIOS WHERE NLISTA = '9' AND PRECIO = '0')")
End If
' Log("select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_IMG from " & query & " where CAT_GP_ALMACEN > 0 AND CAT_GP_TIPO = 'PROMOS' AND CAT_GP_SUBTIPO ='PROMOS' AND CAT_GP_TIPOPROD <> 1 and (length(CAT_GP_CODPROMO) = 1 OR CAT_GP_CODPROMO = CAT_GP_ID)")
' c2=Starter.skmt.ExecQuery("select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_IMG from " & query & " where CAT_GP_ALMACEN > 0 AND CAT_GP_TIPO = 'PROMOS' AND CAT_GP_SUBTIPO ='PROMOS' AND CAT_GP_TIPOPROD <> 1 and (length(CAT_GP_CODPROMO) = 1 OR CAT_GP_CODPROMO = CAT_GP_ID)")
' Log($"Resultados : ${c2.RowCount}"$)
'Traemos las promociones con el proveedor incluido.
c2=Starter.skmt.ExecQuery("Select distinct CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_TIPO, CAT_DP_CLASIF, CAT_CLASF_PROD.* from " & query & " join CAT_DETALLES_PAQ on CAT_DP_ID = CAT_GP_ID join CAT_CLASF_PROD on CAT_DP_CLASIF = CAT_CP_ID where CAT_GP_ALMACEN > 0 And CAT_GP_TIPO = 'PROMOS' AND CAT_GP_SUBTIPO ='PROMOS' AND CAT_GP_TIPOPROD <> 1 and (length(CAT_GP_CODPROMO) = 1 OR CAT_GP_CODPROMO = CAT_GP_ID) order by CAT_CP_NOMPROD")
' Log($"Resultados : ${c2.RowCount}"$)
Private mPromosProv As Map
mPromosProv.Initialize
If c2.RowCount > 0 Then
For i=0 To c2.RowCount - 1
c2.Position=i
LogColor(c2.GetString("CAT_GP_ID"),Colors.Green)
Private tm As Map = Subs.procesaPromocion(c2.GetString("CAT_GP_ID"), clienteId) 'Revisamos que la promo tenga inventario suficiente.
If tm.Get("status") = "ok" Then 'Si tiene inventario suficiente, la agregamos al mapa de proveedores
' LogColor($">>>>>>>>>> ${c2.GetString("CAT_GP_NOMBRE")} - "$, Colors.red)
mPromosProv.Put(c2.GetString("CAT_CP_NOMPROD"),c2.GetString("CAT_CP_ID"))'Aqui tenemos un mapa con el nombre del proveedor y el id del proveedor.
End If
Next
End If
For p = 0 To mPromosProv.Size - 1 'Por cada proveedor agregamos una linea al listview, el valor de la linea es el ID del proveedor.
lv_catalogos.AddSingleLine2($"PROMOS ${mPromosProv.GetKeyAt(p)}"$, mPromosProv.GetValueAt(p))
Next
' Log(mPromos)
traeListaPrecios(kh.traeAlmacen, kh.traeRuta, "", PERFIL)
End Sub
Sub PCLV_AddProds
End Sub
Sub lv_catalogos_ItemClick (Position As Int, Value As Object)
If Value = "CATALOGO" Then
' lfila.text = "TIPO"
lfila.text = "PRODUCTOS"
lv_catalogos.Visible = False
' If Starter.tipov <> "ABORDO" Then b_rmi.Visible = True
' lv_tipo.Visible = True
LlenaProdsLL(Null, Null)
clv_prods_ll.AsView.BringToFront
clv_prods_ll.AsView.Visible = True
If hayPedido Then p_botonesVenta.Visible = True 'Si ya hay pedido, entonces mostramos los botones.
l_mDisponible.Visible = False
Else
clv_prods_ll.AsView.Visible = False
lv_promos.Visible = True
lfila.text = "PROMOCIONES"
lv_catalogos.Visible = False
lv_promos.Clear
Dim label1 As Label
label1 = lv_promos.TwoLinesLayout.Label
label1.TextSize = 15
' label1.Height = 200dip
label1.TextColor = Colors.Black
label1.Height = 60dip
label1.Gravity = Gravity.TOP
Dim label2 As Label
label2 = lv_promos.TwoLinesLayout.SecondLabel
label2.TextColor = Colors.Black
label2.TextSize = 15
label2.Gravity = Gravity.TOP
label2.Top = 40dip
lv_promos.TwoLinesLayout.ItemHeight = 60dip
' label2.Height = 200dip
' Dim label13 As Label
' label13 = lv_promos.TwoLinesAndBitmap.Label
' label13.TextSize = 15
' label13.TextColor = Colors.Black
' Dim label14 As Label
' label14 = lv_promos.TwoLinesAndBitmap.SecondLabel
' label14.TextSize = 15
' label14.TextColor = Colors.Black
' lfila.text = "PROMOS"
' c2=Starter.skmt.ExecQuery2("select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_IMG from " & query & " where CAT_GP_ALMACEN > 0 AND CAT_GP_TIPO = ? AND CAT_GP_SUBTIPO =? AND CAT_GP_TIPOPROD <> 1 and (length(CAT_GP_CODPROMO) = 1 OR CAT_GP_CODPROMO = CAT_GP_ID) ", Array As String( Value, Value))
'Traemos las promociones del proveedor seleccionado.
c2=Starter.skmt.ExecQuery2("Select distinct CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_TIPO, CAT_DP_CLASIF, CAT_CLASF_PROD.* from " & query & " join CAT_DETALLES_PAQ on CAT_DP_ID = CAT_GP_ID join CAT_CLASF_PROD on CAT_DP_CLASIF = CAT_CP_ID where CAT_CP_ID = ? and CAT_GP_ALMACEN > 0 And CAT_GP_TIPO = 'PROMOS' AND CAT_GP_SUBTIPO = 'PROMOS' AND CAT_GP_TIPOPROD <> 1 and (length(CAT_GP_CODPROMO) = 1 OR CAT_GP_CODPROMO = CAT_GP_ID) order by CAT_CP_NOMPROD", Array As String( Value))
If c2.RowCount > 0 Then
For i=0 To c2.RowCount -1
c2.Position=i
LogColor(c2.GetString("CAT_GP_ID"),Colors.Green)
Private tm As Map = Subs.procesaPromocion(c2.GetString("CAT_GP_ID"), clienteId)
If tm.Get("status") = "ok" Then 'Solo muestrala si hay producto.
Log(c2.GetString("CAT_GP_NOMBRE"))
lv_promos.AddTwoLines(c2.GetString("CAT_GP_NOMBRE"),"# " & c2.GetString("CAT_GP_ALMACEN") & " $ " & c2.GetString("CAT_GP_PRECIO") & " F:" & tm.Get("mp").As(Map).Get("prodsFijosCant") & " V:" & tm.Get("mp").As(Map).Get("prodsVariablesCant"))
End If
Next
Else
ToastMessageShow("No hay promociones disponibles.", False)
End If
c2.Close
entro = "4"
End If
End Sub
Sub lv_catalogos2_ItemClick (Position As Int, Value As Object)
clv_prods_ll.AsView.Visible = False
BUSCA.Text = ""
Dim cliente As C_Cliente = B4XPages.GetPage("Cliente")
Log($"value=${Value}"$)
If Value = "PROMOS" And cliente.cuenta <> "N" Then
entro = "3"
marca = "PROMOS"
tipo = "PROMOS"
Else if Value = "PROMOS" And cliente.cuenta = "N" Then
entro = "5"
Subs.iniciaActividad("Cliente")
' B4XPages.ShowPage("Cliente")
End If
If Value = "PROMOS" Then
LogColor("Promos", Colors.red)
c2=Starter.skmt.ExecQuery2("select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_IMG from cat_gunaprod2 where CAT_GP_PRECIO > 0 AND CAT_GP_ALMACEN > 0 and CAT_GP_TIPOPROD = ? AND CAT_GP_TIPO = ? AND CAT_GP_SUBTIPO = ? AND CAT_GP_ID NOT IN (SELECT PE_PROID FROM PEDIDO WHERE PE_CLIENTE IN (Select cuenta from cuentaa) )", Array As String(Value, marca, tipo))
Else
LogColor("Catalogo", Colors.red)
c2=Starter.skmt.ExecQuery("select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_IMG, CAT_GP_TIPOPROD, CAT_GP_INICIATIVA from cat_gunaprod where CAT_GP_PRECIO > 0 AND CAT_GP_ALMACEN > 0 and CAT_GP_TIPOPROD <> 'PROMOS' ")
End If
If Value = "CATALOGO" Then
lv_catalogos.Visible = False
lv_promos.Visible = False
lfila.text = "CATALOGO"
Log("PGS")
ProgressDialogShow("Cargando catalogo ...")
Sleep(100)
Private inicioContador As String = DateTime.Now
llenaCatalogo(False)
clv_prods_ll.AsView.Visible = True
Log("PGH")
LogColor("TIEMPO DE PROCESO DEL CATALOGO: " & ((DateTime.Now-inicioContador)/1000), Colors.Red)
ProgressDialogHide
c2.Close
Else
clv_prods_ll.AsView.Visible = False
lv_promos.Visible = True
lv_catalogos.Visible = False
lv_promos.Clear
Dim label1 As Label
label1 = lv_promos.TwoLinesLayout.Label
label1.TextSize = 15
label1.TextColor = Colors.Black
Dim label2 As Label
label2 = lv_promos.TwoLinesLayout.SecondLabel
label2.TextSize = 15
label2.TextColor = Colors.Black
Dim label13 As Label
label13 = lv_promos.TwoLinesAndBitmap.Label
label13.TextSize = 15
label13.TextColor = Colors.Black
Dim label14 As Label
label14 = lv_promos.TwoLinesAndBitmap.SecondLabel
label14.TextSize = 15
label14.TextColor = Colors.Black
lfila.text = "PROMOS"
If c2.RowCount > 0 Then
For i=0 To c2.RowCount -1
c2.Position=i
Private tm As Map = Subs.procesaPromocion(c2.GetString("CAT_GP_ID"), clienteId)
If tm.Get("status") = "ok" Then 'Solo muestrala si hay producto.
lv_promos.AddTwoLines(c2.GetString("CAT_GP_NOMBRE"),"# " & c2.GetString("CAT_GP_ALMACEN") & " $ " & c2.GetString("CAT_GP_PRECIO") & " F:" & tm.Get("mp").As(Map).Get("prodsFijosCant") & " V:" & tm.Get("mp").As(Map).Get("prodsVariablesCant"))
End If
Next
End If
c2.Close
End If
entro = "4"
End Sub
Sub lv_promos_ItemClick (Position As Int, Value As Object)
clv_prods_ll.AsView.Visible = False
Dim cliente As C_Cliente = B4XPages.GetPage("Cliente")
' Log($"Entro=${entro}, value=${Value}, cuenta=${cliente.cuenta}"$)
If Value = "PROMOS" And cliente.cuenta <> "N" Then
entro = "3"
marca = "PROMOS"
tipo = "PROMOS"
Else if Value = "PROMOS" And cliente.cuenta = "N" Then
entro = "5"
Subs.iniciaActividad("Cliente")
' B4XPages.ShowPage("Cliente")
End If
If entro = "3" Then
'xxxxxxxxxxxxxxxxxxxxx
Else If entro = "4" Then
' Log("Entro = 4")
Starter.skmt.ExecNonQuery("delete from PROID")
Starter.skmt.ExecNonQuery2("INSERT INTO PROID VALUES (?)", Array As Object(Value))
Dim promos As C_Promos = B4XPages.GetPage("Promos")
promos.laPromo = Subs.traeProdIdDeBD.Get("id")
promos.elCliente = Subs.traeUsuarioDeBD
B4XPages.ShowPage("Promos")
End If
End Sub
'Generamos la lista de productos.
Sub llenaCatalogo(subtipo1 As String) 'ignore
' Log("LlenaCatalogo")
' Private c2 As Cursor
' c2=Starter.skmt.ExecQuery2("select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_IMG, CAT_GP_TIPOPROD, CAT_GP_INICIATIVA from cat_gunaprod where CAT_GP_PRECIO > 0 AND CAT_GP_ALMACEN > 0 and CAT_GP_TIPOPROD <> 'PROMOS' and CAT_GP_SUBTIPO = ? ", Array As String(subtipo1))
' Private bgColor, textColor As Int
' If c2.RowCount > 0 And clv_productos.Size <> c2.RowCount Then
' clv_productos.Clear : Log("limpiamos productos")
' For i=0 To c2.RowCount -1
' c2.Position=i
' If c2.GetString("CAT_GP_TIPOPROD") = "PRIORITARIO" Then
' bgColor = Colors.RGB(255, 212, 163) 'naranja
' Else If c2.GetString("CAT_GP_TIPOPROD") = "COMPLEMENTARIO" Then
' bgColor = Colors.RGB(177, 200, 249)'azul
' else If c2.GetString("CAT_GP_TIPOPROD") = "CATALOGO REGULAR" Then
' bgColor = Colors.White
' else If c2.GetString("CAT_GP_TIPOPROD") = "ESTRATEGICO" Then
' bgColor = Colors.RGB(241, 255, 163) 'amarillo
' End If
' textColor = Colors.Black
' clv_productos.Add(CreateListItem(c2.GetString("CAT_GP_NOMBRE"), c2.GetString("CAT_GP_PRECIO"), c2.GetString("CAT_GP_ALMACEN"), clv_productos.AsView.Width, 60dip, bmp, c2.GetString("CAT_GP_ID"), bgColor, textColor), c2.GetString("CAT_GP_NOMBRE"))
' Next
' End If
' c2.Close
End Sub
Private Sub B4XPage_CloseRequest As ResumableSub
' BACK key pressed
' Return True To close, False To cancel
If p_rmi.Visible Then p_rmi.Visible = False
If l_info.Visible Then
l_info.Visible = False
lv_precio2.Visible = False
cb_precio2.mBase.Visible = False
Return False
else if p_vistaPreviaTrans.Visible Then
p_vistaPreviaTrans.Visible = False
Return False
else if lv_promos.visible Then
lv_promos.Visible = False
lv_catalogos.Visible = True
p_botonesVenta.Visible = False
' l_total.Visible = False
' l_totProds.Visible = False
Return False
else if clv_prods_ll.AsView.Visible Then
lfila.text = "CATALOGO"
clv_prods_ll.AsView.Visible = False
lv_subtipo.Visible = False
p_botonesVenta.Visible = False
' l_total.Visible = False
' l_totProds.Visible = False
lv_catalogos.Visible = True
Return False
else If entro = "4" Then
entro = "3"
B4XPage_Appear
Return True
Else If entro = "3" Then
Subs.iniciaActividad("Cliente")
' B4XPages.ShowPage("Cliente")
Return False
Else
Subs.iniciaActividad("Cliente")
' B4XPages.ShowPage("Cliente")
Return False
End If
End Sub
Sub b_QR_Click
If ciclo = 1 Then
ciclo = 2
ya_entro = "0"
B4XPage_Appear
else if ciclo = 2 Then
ciclo = 3
ya_entro = "0"
B4XPage_Appear
else if ciclo = 3 Then
ciclo = 4
ya_entro = "0"
B4XPage_Appear
else if ciclo = 4 Then
ciclo = 5
ya_entro = "0"
B4XPage_Appear
else if ciclo = 5 Then
ciclo = 1
ya_entro = "0"
B4XPage_Appear
End If
End Sub
'****************************************************************************
'***************** PARA EL MAS/MENOS *************************************
'****************************************************************************
Sub CreateListItem(Text As String, precioU As String, inv As Int, Width As Int, Height As Int, img As Bitmap, prodId As String, bc As Int, tc As Int) As Panel 'ignore
' Dim p As B4XView = xui.CreatePanel("")
' p.SetLayoutAnimated(0, 0, 0, Width, Height)
' p.LoadLayout("prodItem")
' p_prods.Color = bc
' l_prodX.TextColor = tc
' l_prodX.TextSize = 15
' p_prods.Height = Height
' l_prodX.Height = Height
' l_prodX.Text = Text&CRLF&"# " & inv & " $ " & precioU
' l_prodX.Tag = $"ID: ${prodId}${CRLF}${Text}${CRLF}Precio: $$1.2{precioU}${CRLF}Inv: ${inv} pzs"$
' l_pCant.Tag = precioU&"|"&inv&"|"&prodId
' et_pCant.Tag = precioU&"|"&inv&"|"&prodId
' et_pCant.BringToFront
' Return p
End Sub
Sub b_prodMenos_Click
etCantHasFocus = False
' Log(Sender.As(Button).text & "|" & Sender.As(Button).tag)
Private buttonTag As String = Sender.As(Button).tag
LogColor("b_prodMenos_Click", Colors.Magenta)
Dim index As Int = clv_prods_ll.GetItemFromView(Sender)
Private inv As Int = clv_prods_ll.GetValue(index).As(Map).Get("almacen")
Log($">>> ALMACEN: ${inv}"$)
Dim pnl0 As B4XView = clv_prods_ll.GetPanel(index)
Dim pnl As B4XView = pnl0.GetView(0)
Dim lProdX As B4XView = pnl.GetView(1)
Dim laCant As B4XView = pnl.GetView(2).GetView(2)
Private precio2 As String = lProdX.tag.As(Map).Get("precio")
' Log($"precio|stock:${laCant.tag}"$)
' Log("lacant.text="&laCant.text & "|" & buttonTag)
If buttonTag = "vendido" And laCant.Text > 0 Then
Log(clv_prods_ll.GetValue(index).As(Map))
lProdX.tag.As(Map).Put("almacen",inv + 1)
Log(lProdX.tag.As(Map))
' clv_prods_ll.GetValue(index).As(Map).Get("almacen") = clv_prods_ll.GetValue(index).As(Map).Get("almacen") + 1
End If
If laCant.Text = "" Then laCant.Text = 0
laCant.Text = $"$1.0{laCant.Text - 1}"$
If laCant.Text < 0 Then laCant.Text = 0
Private tmpMap As Map = lProdX.tag.As(Map)
Private precio As String = tmpMap.Get("precio")
Private id As String = tmpMap.Get("id")
Private tmpMap As Map = CreateMap("precio":precio, "cant":laCant.Text, "almacen":Subs.traeAlmacen)
Log(tmpMap)
' Log(tmpMap)
' prodsMap.Put(id, tmpMap)
' If laCant.Text = 0 Then prodsMap.Remove(id)
' LogColor("prodsMap="&prodsMap, Colors.blue)
' (Subs.traeAlmacen, p1.Get("precio"), p1.Get("cant"), pn, p, clienteId, Subs.traeFecha, Subs.traeUsuarioDeBD, rutaUsuario, 0, B4XPages.MainPage.tipo_venta)
Private almacenX As String = Subs.traeAlmacen
Private nombreX As String = Subs.traeProdNombre(id)
Private precioX As String = precio
If lfila.Text = "RMI" Then
almacenX = "DUR"
nombreX = "CAMBIO"&Subs.traeRMINombre(id)
precioX = precioX * -1
End If
Log(">>>>>>> Insertamos prod desde prodMenos")
Subs.actualizaProducto(almacenX, precioX, precio2, laCant.text, nombreX, id, clienteId, Subs.traeFecha, Subs.traeUsuarioDeBD, rutaUsuario, 0, Starter.tipov)
cuentaProds
If lfila.Text <> "RMI" Then
Private cs As CSBuilder
cs.Initialize
'Traemos el inventario actual
Private i As Cursor = Starter.skmt.ExecQuery($"select CAT_GP_ALMACEN from ${kh.traeTablaProds(Starter.tipov)} where CAT_GP_ID = '${id}'"$)
Private invActualizado As String = "0"
If i.RowCount > 0 Then
i.Position = 0
invActualizado = i.GetString("CAT_GP_ALMACEN")
End If
If Starter.tipov <> "ABORDO" Then lProdX.Text = cs.Color(Colors.red).append(nombreX).pop.append(CRLF).Append("Existencias: " & invActualizado).Color(0xFF017F01).Append($" $${precio}"$).Popall
End If
If Subs.totalPedido < 1 Then laCant.Text = "0"
' Log($"Total Prods: ${totalProds}, Total Compra: $$1.2{totalCompra}"$)
End Sub
Sub b_prodMas_Click
etCantHasFocus = False
Private buttonTag As String = Sender.As(Button).tag
Dim index As Int = clv_prods_ll.GetItemFromView(Sender)
LogColor("b_prodMas_Click", Colors.Magenta)
Dim pnl0 As B4XView = clv_prods_ll.GetPanel(index)
Dim pnl As B4XView = pnl0.GetView(0)
Dim lProdX As B4XView = pnl.GetView(1)
Private existencias As String = lProdX.tag.As(Map).Get("almacen")
LogColor(clv_prods_ll.GetValue(index).As(Map), Colors.blue)
' LogColor(lProdX.tag.As(Map), Colors.red)
Log($">>> ALMACEN: ${existencias}"$)
Dim laCant As B4XView = pnl.GetView(2).GetView(2)
If laCant.Text = "" Then laCant.Text = 0
Private tmpMap As Map = lProdX.tag.As(Map)
Private precio As String = tmpMap.Get("precio")
Private precio2 As String = precio
Private inv As Int = tmpMap.Get("almacen")
inv = Subs.traeInventario(tmpMap.Get("id"), Starter.tipov)
Private rmis As String = kh.traeRMIdePedido(tmpMap.Get("id"))
Log($"${laCant.Text} + 1 <= ${inv} = ${(laCant.Text + 1) <= (inv)}"$)
Log($"RMIS: ${kh.traeRMIdePedido(tmpMap.Get("id"))}"$)
If buttonTag = "vendido" Then
' Log("VENDIDO")
' Log($"${(laCant.Text + 1 <= inv)} And ${(Subs.totalPedido - precio > 1)}"$)
If inv > 0 And (laCant.Text + 1 <= (laCant.Text + existencias)) And (Subs.totalPedido - precio > 1) Then
' Log(clv_prods_ll.GetValue(index).As(Map))
tmpMap.Put("almacen", (inv - 1))
inv = inv - 1
' laCant.Text = $"$1.0{laCant.Text+1}"$
laCant.Text = NumberFormat2((laCant.Text + 1), 1, 0, 0, False)
' Log(clv_prods_ll.GetValue(index).As(Map))
End If
else If (inv > 0) And (lfila.Text = "PRODUCTOS" Or lfila.Text = "CATALOGO") Then
' LogColor(inv, Colors.blue)
' laCant.Text = $"$1.0{laCant.Text + 1}"$
laCant.Text = NumberFormat2((laCant.Text + 1), 1, 0, 0, False)
' Log(Subs.totalPedido)
else If lfila.Text = "RMI" And laCant.Text + 1 <= inv And (Subs.totalPedido - precio > 1) Then
LogColor(inv, Colors.blue)
' laCant.Text = $"$1.0{laCant.Text + 1}"$
laCant.Text = NumberFormat2((laCant.Text + 1), 1, 0, 0, False)
Log(Subs.totalPedido)
else if Subs.totalPedido < 1 Then
laCant.Text = "0"
End If
Private id As String = tmpMap.Get("id")
Private almacenX As String = Subs.traeAlmacen
Private nombreX As String = Subs.traeProdNombre(id)
Private precioX As String = precio
If lfila.Text = "RMI" Then
almacenX = "DUR"
nombreX = "CAMBIO"&Subs.traeRMINombre(id)
precioX = precioX * -1
End If
Subs.actualizaProducto(almacenX, precioX, precio2, laCant.text, nombreX, id, clienteId, Subs.traeFecha, Subs.traeUsuarioDeBD, rutaUsuario, 0, Starter.tipov)
If Subs.totalPedido < 1 Then
etCantHasFocus = True
Log("A CERO")
laCant.Text = "0"
et_pCant_TextChanged(100, 0)
End If
If Subs.traeCliente = 0 Then
' Log("######### "& NumberFormat2((kh.traeLimiteAbordoWeb - (kh.traeLimiteAbordoXInventario - kh.traeVenta) - kh.traeVentaAbordo), 0, 2, 2, False))
' laCant.Text = NumberFormat2((laCant.Text - 1), 1, 0, 0, False)
Subs.actualizaProducto(almacenX, precioX, precio2, laCant.text, nombreX, id, clienteId, Subs.traeFecha, Subs.traeUsuarioDeBD, rutaUsuario, 0, Starter.tipov)
' Log("######### "& NumberFormat2((kh.traeLimiteAbordoWeb - (kh.traeLimiteAbordoXInventario - kh.traeVenta) - kh.traeVentaAbordo), 0, 2, 2, False))
End If
cuentaProds
If lfila.Text <> "RMI" Then
Private cs As CSBuilder
cs.Initialize
'Traemos el inventario actual
Private i As Cursor = Starter.skmt.ExecQuery($"select CAT_GP_ALMACEN from ${kh.traeTablaProds(Starter.tipov)} where CAT_GP_ID = '${id}'"$)
Private invActualizado As String = "0"
If i.RowCount > 0 Then
i.Position = 0
invActualizado = i.GetString("CAT_GP_ALMACEN")
End If
If Starter.tipov <> "ABORDO" Then lProdX.Text = cs.Color(Colors.red).append(nombreX).pop.append(CRLF).Append("Existencias: " & invActualizado).Color(0xFF017F01).Append($" $${precio}"$).Popall
End If
Log($"Total Prods: ${totalProds}, Total Compra: $$1.2{totalCompra}"$)
End Sub
Private Sub et_pCant_FocusChanged (HasFocus As Boolean)
' LogColor($"focus changed=${HasFocus}"$, Colors.Magenta)
etCantHasFocus = HasFocus
' Dim index As Int = clv_prods_ll.GetItemFromView(Sender)
' Dim pnl0 As B4XView = clv_prods_ll.GetPanel(index)
' Dim pnl As B4XView = pnl0.GetView(0)
' Dim laCant As B4XView = pnl.GetView(2).GetView(2)
' Log("%%%%%%%%%%%%%%%% - " & Sender.As(EditText).text)
Try
If Sender.As(EditText).Text = "" Then Sender.As(EditText).Text = "0"
Sender.As(EditText).Text = $"${NumberFormat2(Sender.As(EditText).Text, 1, 0, 0, False)}"$
cuentaProds
Catch
Log(LastException)
End Try
End Sub
Private Sub et_pCant_TextChanged (Old As String, New As String)
' LogColor($"txt changed: ${Old}|${New}, hasfocus=${etCantHasFocus}"$,Colors.Magenta)
' If Not(Old = "0" And New = "") And etCantHasFocus Then cuentaProds
If etCantHasFocus = True Then
Try
' LogColor($"txt changed: ${Old}|${New}, hasfocus=${etCantHasFocus}"$,Colors.Magenta)
Dim index As Int = clv_prods_ll.GetItemFromView(Sender)
Dim pnl0 As B4XView = clv_prods_ll.GetPanel(index)
Dim pnl As B4XView = pnl0.GetView(0)
Dim laCant As B4XView = pnl.GetView(2).GetView(2)
' Log(clv_prods_ll.GetValue(index).As(Map))
Private id As String=clv_prods_ll.GetValue(index).As(Map).Get("id")
Private precio As String=clv_prods_ll.GetValue(index).As(Map).Get("precio")
Private precio2 As String = precio
' Log("++++++++++ " & precio)
Dim tempTot As String = Subs.totalPedido
Dim disp As String = 0
If tempTot > 0 Then disp = (Subs.totalPedido / precio) - 1
disp = NumberFormat2(disp, 1, 0, 0, False)
Log($"${laCant.text}, ${precio}, DISPONIBLES: ${disp}"$)
' Private inv As String=clv_prods_ll.GetValue(index).As(Map).Get("almacen")
Private inv As String=clv_prods_ll.GetValue(index).As(Map).Get("almacen")
' If(New = "" Or New = Null) Then New = 0
If(New > inv) Then
Sender.As(EditText).text = inv
End If
Private almacenX As String = Subs.traeAlmacen
Private nombreX As String = Subs.traeProdNombre(id)
Private precioX As String = precio
If lfila.Text = "RMI" Then
almacenX = "DUR"
nombreX = "CAMBIO"&Subs.traeRMINombre(id)
precioX = precioX * -1
Log("RMI")
Else
' elProd = Subs.traeProdNombre(id)
Log("NO RMI")
End If
' Log($"inventario=${inv}"$)
' Dim tmpCant As String = laCant.text
If laCant.Text = "" Then laCant.Text = "0"
' If laCant.Text > disp Then
' Log($"Ponemos laCant en: ${disp}"$)
'' laCant.Text = ""
' laCant.text = "0"
'' etCantHasFocus = True
' End If
If Not(Old = "0" And New = "") And laCant.Text <> Null And laCant.Text <> "" And etCantHasFocus Then
Log(">>>>>> Insertamos prod desde et_pCante_TextChanged")
Subs.actualizaProducto(almacenX, precioX, precio2, laCant.Text, nombreX, id, clienteId, Subs.traeFecha, Subs.traeUsuarioDeBD, rutaUsuario, 0, Starter.tipov)
cuentaProds
End If
Catch
Log(LastException)
End Try
' etCantHasFocus = False
' laCant.text = ""
' laCant.text = tmpCant
' cuentaProds
' Log(laCant.text)
' Sender.As(EditText).text = disp
End If
End Sub
Sub cuentaProds
'LogColor($"Productos de la orden: ${c_prodsX.GetString("cantProds")}, Total: ${c_prodsX.GetString("costoTotal")}"$, Colors.red)
' Log("===========================")
Private c As Cursor = Starter.skmt.ExecQuery($"select sum(PE_COSTO_TOT) as total, sum(PE_CANT) as cant from PEDIDO where PE_CLIENTE = '${clienteId}'"$)
' LogColor("TIEMPO cuentaProds =" & ((DateTime.Now-inicioContador)/1000), Colors.Red)
' LogColor(prodsMap, Colors.Magenta)
p_botonesVenta.Visible = True
p_botonesVenta.BringToFront
c.Position = 0
' If Subs.totalPedido > 1 And lfila.Text <> "RMI" And Starter.tipov <> "ABORDO" Then b_rmi.Visible = True Else b_rmi.Visible = False
' Log(Subs.totalPedido)
If lfila.Text = "RMI" Then l_mDisponible.Visible = True Else l_mDisponible.Visible = False
l_mDisponible.Text = $"Disponible: $${Subs.totalPedido}"$
' Log($"Total Prods: ${c.GetString("cant")}, Total Compra: $$1.2{c.GetString("total")}"$)
c.Close
End Sub
Sub b_terminar1_Click
' Log("b_terminar1_Click")
' ya_entro = "0" : Log("ya_entro=1")
Private totalPedido As String = 0
Private cantPedido As String = 0
lv_promos.Visible = False
clv_prods_ll.AsView.Visible = False
cb_precio2.mBase.Visible = False
l_info.Visible = False
lv_catalogos.Visible = True
Subs.agrupador
lv_prodsPedido.Clear
list_prodsPedido.Initialize
Subs.revisaRMIs(Subs.traeCliente)
Private c_prods As Cursor=Starter.skmt.ExecQuery("select PE_PRONOMBRE,PE_COSTO_TOT, ifnull(PE_COSTOU, 0) as PE_COSTOU, PE_CANT, PE_FOLIO, PE_CEDIS, PE_PROID, PE_TIPO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_TIPO desc, PE_CEDIS, PE_COSTO_TOT, PE_PRONOMBRE")
' Log(c_prods.RowCount)
If c_prods.RowCount > 0 Then
c_prods.Position = 0
' l_total2.Text = c_prods.GetString("PE_COSTO_TOT")
lv_prodsPedido.BringToFront
Private cs As CSBuilder
For i = 0 To c_prods.RowCount -1
cs.Initialize
c_prods.Position = i
Dim label1 As Label
' lv_prodsPedido.TwoLinesLayout.ItemHeight = 50dip
label1 = lv_prodsPedido.TwoLinesLayout.Label
label1.TextSize = 14
label1.TextColor = Colors.Black
label1.color = Colors.White
label1.Height = 30dip
Private textColor As Int = Colors.black
' Log(c_prods.GetString("PE_CEDIS"))
' If c_prods.GetString("PE_CEDIS") = "DUR" Then textColor = Colors.red
If c_prods.GetString("PE_TIPO") = "PREVENTA" Then textColor = Colors.RGB(200,95,20) 'Si es preventa, cambiamos el color del texto.
If Not(IsNumber(c_prods.GetString("PE_CEDIS"))) Then textColor = Colors.red 'Si es promo, cambiamos el color del texto.
If Not(IsNumber(c_prods.GetString("PE_CEDIS"))) And c_prods.GetString("PE_TIPO") = "VENTA" Then textColor = Colors.RGB(202,0,174) 'Si es promo, cambiamos el color del texto.
Dim label2 As Label
label2 = lv_prodsPedido.TwoLinesLayout.SecondLabel
label2.TextSize = 10
label2.TextColor = Colors.Blue
' label2.Color = Colors.Gray
label2.Tag = i
' Log(c_prods.GetString("PE_PRONOMBRE"))
lv_prodsPedido.AddTwoLines(cs.Color(textColor).append(c_prods.GetString("PE_PRONOMBRE")).pop,"Cantidad #"& c_prods.GetString("PE_CANT")& " SubTotal $"& c_prods.GetString("PE_COSTO_TOT")& " Folio "& c_prods.GetString("PE_FOLIO"))
list_prodsPedido.Add(CreateMap("prodNom":c_prods.GetString("PE_PRONOMBRE"), "cedis":c_prods.GetString("PE_CEDIS"), "prodId": c_prods.GetString("PE_PROID"), "cant": c_prods.GetString("PE_CANT"), "tipo": c_prods.GetString("PE_TIPO")))
folio = 0
Log($"${totalPedido} + (${c_prods.GetString("PE_COSTOU")} * ${c_prods.GetString("PE_CANT")}"$)
totalPedido = totalPedido + (c_prods.GetString("PE_COSTOU") * c_prods.GetString("PE_CANT"))
' Log("|" & Subs.esPromo(c_prods.GetString("PE_PROID")) & "|")
If Not(Subs.esPromo(c_prods.GetString("PE_PROID"))) Then cantPedido = cantPedido + c_prods.GetString("PE_CANT")
If c_prods.GetString("PE_FOLIO") <> Null Then folio = c_prods.GetString("PE_FOLIO")
Next
c=Starter.skmt.ExecQuery("select pc_noart, pc_monto from pedido_cliente where pc_cliente in (Select CUENTA from cuentaa)")
C.Position=0
' l_cant.Text = c.GetString("PC_NOART")
c.Close
End If
' Log(list_prodsPedido)
c_prods.Close
l_total2.Text = $"$1.2{totalPedido}"$
l_cant.Text = cantPedido
If Subs.revisaImpresa Then b_rechazar.Visible = False Else b_rechazar.Visible = True
p_vistaPreviaTrans.Width = Root.Width
p_vistaPreviaTrans.Height = Root.Height
Subs.centraPanel(p_vistaPrevia, Root.Width)
p_vistaPrevia.Visible=True
p_vistaPreviaTrans.Visible=True
End Sub
Private Sub b_continuar_Click
' Log("b_continuar_Click")
cuentaProds
' Private p1 As Map
' Log("prodsMap="&prodsMap)
' For Each p As String In prodsMap.Keys
' p1 = prodsMap.Get(p)
' Log(p & "|" & p1)
' Private pn As String = Subs.traeProdNombre(p)
' If pn <> "N/A" Then
' LogColor("INSERTAMOS PROD Continuar", Colors.red)
' Subs.guardaProductoSinGestion(Subs.traeAlmacen, p1.Get("precio"), p1.Get("cant"), pn, p, clienteId, Subs.traeFecha, Subs.traeUsuarioDeBD, rutaUsuario, 0, Starter.tipov)
' End If
' Next
' Log("promos-inv, prods-inv, cat-vis")
cb_precio2.mBase.Visible = False
l_info.Visible = False
lv_promos.Visible = False
clv_prods_ll.AsView.Visible = False
lv_subtipo.Visible = False
lv_tipo.Visible = False
lv_catalogos.Visible = True
Log("Continuar")
Dim m As Map = Subs.traeTotalesClienteActual
prodsPedidoActual = m.Get("productos")
montoPedidoActual = m.Get("monto")
' LlenaProdsLL(Null)
' BUSCA.Text = " "
End Sub
Private Sub l_info_Click
l_info.Visible = False
lv_precio2.Visible = False
cb_precio2.mBase.Visible = False
End Sub
Private Sub lv_promos_ItemLongClick (Position As Int, Value As Object)
Log("Promo longclic = "&Value)
Private id As String = ""
Dim c As Cursor = Starter.skmt.ExecQuery($"select CAT_GP_ID from cat_gunaprod where CAT_GP_TIPO = 'PROMOS' and CAT_GP_NOMBRE = '${Value}'"$)
If c.RowCount > 0 Then
c.Position = 0
id = c.GetString("CAT_GP_ID")
End If
l_info.Text = $"ID: ${id}${CRLF}${Value}"$
l_info.Visible = True
End Sub
Private Sub b_buscar_Click
forzarBusqueda = True
Busca_TextChanged("",BUSCA.Text)
End Sub
Private Sub lv_tipo_ItemClick (Position As Int, Value As Object)
' lfila.text = "SUB TIPO"
' lv_tipo.Visible = False
' lv_subtipo.Height = Root.Height * 0.7
' lv_subtipo.Visible = True
' Private c As Cursor = Starter.skmt.ExecQuery2("select distinct CAT_GP_SUBTIPO from cat_gunaprod where CAT_GP_TIPO = ? order by CAT_GP_SUBTIPO", Array As String(Value))
' If c.RowCount > 0 Then
' Dim label1 As Label
' label1 = lv_subtipo.SingleLineLayout.Label
' label1.TextSize = 17
' label1.TextColor = Colors.Black
' lv_subtipo.Clear
' For i=0 To c.RowCount-1
' c.Position=i
' lv_subtipo.AddSingleLine(c.GetString("CAT_GP_SUBTIPO"))
' Next
' End If
' c.Close
End Sub
Private Sub lv_subtipo_ItemClick (Position As Int, Value As Object)
' lfila.text = "SUB TIPO"
' LogColor("Catalogo", Colors.red)
' lv_catalogos.Visible = False
' lv_subtipo.Visible = False
' lv_promos.Visible = False
' lfila.text = "CATALOGO"
' ProgressDialogShow("Cargando catalogo ...")
' Sleep(100)
' Private inicioContador As String = DateTime.Now
' llenaCatalogo(Value)
' clv_prods_ll.AsView.Visible = True
' LogColor("TIEMPO DE PROCESO DEL CATALOGO: " & ((DateTime.Now-inicioContador)/1000), Colors.Red)
' ProgressDialogHide
End Sub
Private Sub p_vistaPreviaTrans_Click
End Sub
Private Sub b_rechazar_Click
If folio <> "" Then
result = Msgbox2($"Seguro que desea borrar el pedido completo?${CRLF}Haciendo clic largo sobre un producto se pueden borrar articulos por separado."$,"Rechazar Pedido", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore
If result = DialogResponse.POSITIVE Then
Subs.borraPedidoClienteActual
prodsMap.Initialize
B4XPages.MainPage.promos.promosMap.Initialize
' Log("Llamamos LlenaProdsLL")
LlenaProdsLL(Null, Null)
' Log("Positivo")
Subs.iniciaActividad("Cliente")
' B4XPages.ShowPage("Cliente")
Else
' Log("NO Positivo")
p_vistaPreviaTrans.Visible = False
End If
Else
' Msgbox("LA VENTA YA SE TRANSMITIO, FAVOR DE LLAMAR A SOPORTE PARA ASISTENCIA","AVISO") 'ignore
End If
p_vistaPreviaTrans.Visible=False
Subs.iniciaActividad("Cliente")
' B4XPages.ShowPage("Cliente")
End Sub
Private Sub b_aceptar_Click
' Log(listaProds)
Private p As Cursor = Starter.skmt.ExecQuery("select count(pe_costo_tot) as total FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
p.Position = 0
' LogColor(p.GetString("total"), Colors.red)
If p.GetString("total") < 1 Then LlenaProdsLL(Null, Null)
p_vistaPreviaTrans.Visible=False
Subs.iniciaActividad("Cliente")
' B4XPages.ShowPage("Cliente")
End Sub
Private Sub lv_prodsPedido_ItemLongClick (Position As Int, Value As Object)
c = Starter.skmt.ExecQuery("select count(*) as CUANTOS from CLIENTE_IMPRESO where CI_CUENTA in (Select CUENTA from cuentaa)")
c.Position = 0
Log(list_prodsPedido)
Log("lista prods="&list_prodsPedido.Get(Position))
'#################################################################################
'#### Probablemente se pueda quitar el mapa (m) y cambiaro por el cursor (prod)
'#### Sustituir por ejemplo: m.get("prodId") por prods.getString("PE_PROID")
'#################################################################################
Private m As Map = list_prodsPedido.Get(Position)
' Log("m1= "&m)
If c.GetString("CUANTOS") = 0 Then 'Si la venta no está impresa o es abordo entonces continuamos ... 'Para que abordo pueda borra poner "Or Subs.clienteActual = "0""
Private sDate,sTime, clie_id, usuario As String
result = Msgbox2("Seguro que desea borrar este articulo?","Borrar Articulo", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore
If result = DialogResponse.POSITIVE Then
Private prod As Cursor = Starter.skmt.ExecQuery($"select PE_PROID, PE_CANT, PE_CEDIS, PE_TIPO FROM PEDIDO where pe_pronombre = '${Value}' and pe_cliente in (Select CUENTA from cuentaa)"$)
prod.Position = 0
' Log("m2= " & m)
c.Close
' Log($"Buscamos: ${Value}, ${m.Get("cedis")}"$)
' Log($"mapaTipo: ${m.get("tipo")}, queryTipo: ${prod.GetString("PE_TIPO")}"$)
' Log($"mapaCedis: ${m.get("cedis")}, queryCedis: ${prod.GetString("PE_CEDIS")}"$)
' Log($"mapaCant: ${m.get("cant")}, queryCant: ${prod.GetString("PE_CANT")}"$)
' Log($"mapaProd: ${m.get("prodId")}, queryProd: ${prod.GetString("PE_PROID")}"$)
c = Starter.skmt.ExecQuery2($"select count(*) AS CUANTOS from ${Subs.traeTablaProds(prod.GetString("PE_TIPO"))} where CAT_GP_ID in (select pe_cedis from pedido where pe_pronombre = ? and pe_cedis = ? and pe_cliente in (Select CUENTA from cuentaa)) and CAT_GP_CLASIF = 'PROMOS' AND CAT_GP_TIPO = 'PROMOS' AND CAT_GP_SUBTIPO = 'PROMOS'"$, Array As String(Value, m.Get("cedis")))
c.Position = 0
If c.GetString("CUANTOS") > 0 Then
Log($"Borramos de PROMO ${Value}"$)
Private pPromos As Cursor = Starter.skmt.ExecQuery($"select pe_proid, pe_cant from pedido where pe_cedis = '${m.Get("cedis")}'"$)
For tp = 0 To pPromos.RowCount - 1
pPromos.Position = tp
Log($"SUMAMOS ${pPromos.GetString("PE_CANT")} a ${pPromos.GetString("PE_PROID")} "$)
Starter.skmt.ExecNonQuery($"update ${Subs.traeTablaProds(prod.GetString("PE_TIPO"))} set cat_gp_almacen = cat_gp_almacen + ${pPromos.GetString("PE_CANT")} where cat_gp_id = '${pPromos.Getstring("PE_PROID")}'"$)
Next
Starter.skmt.ExecNonQuery2("delete from pedido where pe_cedis in (select pe_cedis from pedido where PE_CEDIS = ? and pe_pronombre = ?) and pe_cliente in (Select CUENTA from cuentaa)", Array As Object(m.Get("cedis"), Value))
Else
Log($"SUMAMOS ${m.get("cant")} a ${m.get("prodId")} "$)
Starter.skmt.ExecNonQuery2($"update ${Subs.traeTablaProds(prod.GetString("PE_TIPO"))} set cat_gp_almacen = cat_gp_almacen + ? where cat_gp_id = ?"$, Array As Object(m.get("cant"), m.get("prodId")))
Log($"BORRAMOS ${Value}, ${m.Get("cedis")}"$)
Starter.skmt.ExecNonQuery2("delete from pedido where pe_pronombre = ? and pe_cedis = ? and pe_cant = ? and pe_cliente in (Select CUENTA from cuentaa)", Array As Object(Value, m.Get("cedis"), m.Get("cant")))
End If
prod.Close
DateTime.DateFormat = "MM/dd/yyyy"
sDate = DateTime.Date(DateTime.Now)
sTime = DateTime.Time(DateTime.Now)
c = Starter.skmt.ExecQuery("Select CUENTA from cuentaa")
c.Position = 0
clie_id = c.GetString("CUENTA")
c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
c.Position = 0
usuario = c.GetString("USUARIO")
c=Starter.skmt.ExecQuery("select sum(pe_cant) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, count(*) as CUANTOS FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
c.Position = 0
If c.GetString("CUANTOS") > 0 Then
Log($"============== TOTAL = ${c.GetString("TOTAL_CLIE")}"$)
If c.GetString("TOTAL_CLIE") < 1 Then
Log("Borramos RMI")
Starter.skmt.ExecNonQuery("delete from pedido where PE_PRONOMBRE like 'CAMBIO%' and PE_CLIENTE In (select cuenta from cuentaa)"$)
End If
Starter.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)")
Starter.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT) VALUES (?,?,?,?,?,?,?)", Array As Object(clie_id, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps))
Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)")
Else
Starter.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)")
Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 0 where CAT_CL_CODIGO In (select cuenta from cuentaa)")
End If
Log("xxx")
Subs.revisaRMIs(Subs.traeCliente)
b_terminar1_Click
End If
Else
ToastMessageShow("Esta venta ya esta impresa, no se puede editar ni borrar.", False)
End If
End Sub
Private Sub clv_prods_ll_ItemLongClick (Index As Int, Value As Object)
' Log("LONGCLIC")
' kh.centraPanel(p_rmi, Root.Width)
' p_rmi.BringToFront
' p_rmi.Visible = True
End Sub
Sub l_prodX_Click
Log("l_prodx clicked")
prodAct = Sender
Log(prodAct.Text)
l_info.Text = Sender.as(Label).text
Private elTag As Map = Sender.as(Label).tag
' Log(elTag)
Private id As String = elTag.Get("id")
' Private c As Cursor = Starter.skmt.ExecQuery($"select PRECIO, NLISTA FROM LISTA_PRECIOS WHERE NLISTA IN ('1','10') AND CAT_GP_ID = '${id}' ORDER BY NLISTA ASC"$)
' Log(c.RowCount)
' cb_precio2.Tag = Sender.as(Label).tag
' If c.RowCount > 0 Then
' Private losPreciosList As List
' losPreciosList.Initialize
' cb_precio2.mBase.Visible = True
' losPreciosList.Add("-= Seleccione Precio =-")
' For i = 0 To c.RowCount - 1
' c.Position = i
' losPreciosList.Add(c.GetString("NLISTA") & " - " & NumberFormat2(c.GetDouble("PRECIO"), 1, 2, 2, False))
' Next
' cb_precio2.SetItems(losPreciosList)
' End If
Private listaPrecios As List = traeListaPrecios(kh.traeAlmacen, kh.traeRuta, id, PERFIL)
If listaPrecios.Size > 1 Then
cb_precio2.SetItems(listaPrecios)
cb_precio2.Tag = elTag
cb_precio2.mBase.Visible = True
End If
l_info.BringToFront
l_info.Visible = True
cb_precio2.mbase.BringToFront
' Dim index As Int = clv_prods_ll.GetItemFromView(Sender)
' Private p0 As B4XView = clv_prods_ll.GetPanel(index)
' Private p As B4XView = p0.GetView(0)
' Private cant1 As B4XView = p.GetView(2).GetView(2)
' Dim index As Int = clv_prods_ll.GetItemFromView(Sender)
'' Log(clv_prods_ll.GetValue(index))
' Log(cant1.Text)
End Sub
Private Sub l_prodX_LongClick
Log("longClic = "&Sender.as(Label).Text)
c = Starter.skmt.ExecQuery("Select BR_BANDERA From BANDERA_RMI")
If c.RowCount > 0 Then
c.Position = 0
Dim ban As Int = c.GetString("BR_BANDERA")
End If
If Subs.traeCliente <> 0 Then
If ban <> 0 Then
Dim index As Int = clv_prods_ll.GetItemFromView(Sender)
nuevaCantRMI = 0
Private pId As String = clv_prods_ll.GetValue(index).As(Map).Get("id")
Log(clv_prods_ll.GetValue(index))
Private pNombre As String = clv_prods_ll.GetValue(index).As(Map).Get("prod")
Private t As Cursor = Starter.skmt.ExecQuery($"select sum(PE_CANT) as cuantosProds from pedido where PE_CEDIS <> 'DUR' and PE_CLIENTE in (Select CUENTA from cuentaa)"$)
t.Position = 0
Private ventaT As String = t.GetString("cuantosProds")
If ventaT = Null Then ventaT = 0
' If Starter.tipov = "PREVENTA" Then
' ToastMessageShow("¡¡En preventa NO hay cambios!!", True)
' Return
' End If
Private rmis As Cursor =Starter.skmt.ExecQuery($"select CAT_GP_DEV from ${Subs.traeTablaProds(Starter.tipov)} where CAT_GP_ID = '${pId}'"$)
' If rmis.RowCount > 0 Then
' rmis.Position = 0
' Log(rmis.GetString("CAT_GP_DEV"))
' End If
rmis.Position = 0
If rmis.RowCount > 0 And rmis.GetString("CAT_GP_DEV") = 1 Then
t = Starter.skmt.ExecQuery($"select sum(PE_CANT) as totalRMI from pedido where PE_PROID = '${pId}' and PE_CEDIS = 'DUR' and PE_CLIENTE in (Select CUENTA from cuentaa)"$)
t.Position = 0
Private totalRMI As String = t.GetString("totalRMI")
Log($"Prods: ${ventaT}, RMIs: ${totalRMI}"$)
If totalRMI = Null Then totalRMI = 0
Log($"Prods: ${ventaT}, RMIs: ${totalRMI}"$)
l_rmi_nombre.Text = Sender.as(Label).Text
Private pu0() As String = Regex.Split("\$", Sender.as(Label).Text)
Private pu As String
If pu0.Length > 1 Then pu = pu0(pu0.Length-1) Else pu = 0
'Log(ventaT & ", " & totalRMI & ", " & Sender.as(Label).tag & ", " & pu)
' l_rmi_usado.Text = $"RMI usado: $1.0{(ventaT - totalRMI)}"$
l_montoDisponible.Text = $"DEVOLUCIONES"$
Private esteInv As Int = Subs.traeInventario(pId, Starter.tipov)
If esteInv < ventaT Then ventaT = esteInv 'Si el inventario disponble es menor a los productos del pedido, entoncs tomamos ese valor.
Private m As Map = CreateMap("disponible":clv_prods_ll.GetValue(index).As(Map).Get("almacen"), "inv":clv_prods_ll.GetValue(index).As(Map).Get("almacen"), "totalRMI":totalRMI, "pu":pu, "id":pId, "nombre":pNombre)
rmiMap = m
Log(rmiMap)
' b_rmi_mas.Tag = m
' b_rmi_menos.Tag = m
' b_rmi_aceptar.Tag = m
Subs.centraPanel(p_rmi, Root.Width)
l_rmi_cant.Text = totalRMI
' l_rmi_total.text = ""
p_rmi.BringToFront
p_rmi.Visible = True
Else
ToastMessageShow("No hay devoluciones para este producto", True)
End If
Else
ToastMessageShow("No esta autorizado para devoluciones", True)
End If
End If
c.Close
End Sub
Private Sub clv_prods_ll_VisibleRangeChanged (FirstIndex As Int, LastIndex As Int)
' Private inicioContador As String = DateTime.Now
' Log($"clv_prods_ll_VisibleRangeChanged : ${FirstIndex}, ${LastIndex} "$)
Dim ExtraSize As Int = 30 'List size
For i = Max(0, FirstIndex - ExtraSize) To Min(LastIndex + ExtraSize, clv_prods_ll.Size - 1)
Dim Pnl As B4XView = clv_prods_ll.GetPanel(i)
If i > FirstIndex - ExtraSize And i < LastIndex + ExtraSize Then
' Log(listaRenglones)
If Pnl.NumberOfViews = 0 Then 'Add each item/layout to the list/main layout
Pnl.LoadLayout("proditem")
p_prods.Width = Root.Width * 0.90
p_botMasMen.Left = p_prods.Width - (p_botMasMen.Width + 5)
Pnl.Height = p_prods.Height
Private cs As CSBuilder
cs.Initialize
l_prodX.Width = p_prods.Width - p_botMasMen.Width
l_prodX.SetTextSizeAnimated(0, 13)
If clv_prods_ll.GetValue(i).As(Map).Get("cant") <> Null And clv_prods_ll.GetValue(i).As(Map).Get("cant") > 0 Then
p_prods.Color = 0xFFE2EEFF
et_pCant.TextColor=Colors.Red
Log(clv_prods_ll.GetValue(i).As(Map))
Log("VENDIDO ")
b_prodMenos.Tag = "vendido"
b_prodMas.Tag = "vendido"
If Subs.revisaImpresa Then
Log("YA IMPRESO")
et_pCant.Enabled = False
' b_prodMas.Enabled = False
b_prodMenos.Enabled = False
End If
End If
Private precio As String=NumberFormat2(clv_prods_ll.GetValue(i).As(Map).Get("precio").As(Double),1,2,2,False)
If clv_prods_ll.GetValue(i).As(Map).Get("cant") <> Null Then et_pCant.Text = clv_prods_ll.GetValue(i).As(Map).Get("cant")
Private precioAlt As String = ""
If clv_prods_ll.GetValue(i).As(Map).get("precioAlt") <> "" And Starter.hayListaPreciosAlt Then
precioAlt = "+"
End If
l_prodX.Text = cs.Color(Colors.red).append(clv_prods_ll.GetValue(i).As(Map).Get("prod")).pop.append(CRLF).Append("Existencias: " & clv_prods_ll.GetValue(i).As(Map).Get("almacen")).Color(0xFF017F01).Append($" $${precio} ${precioAlt}"$).Popall
l_prodX.Tag = clv_prods_ll.GetValue(i).As(Map)
l_pCant.Tag = clv_prods_ll.GetValue(i).As(Map).Get("id")
et_pCant.Tag = clv_prods_ll.GetValue(i).As(Map)
End If
' Log($"${i}, ${FirstIndex}, ${LastIndex}, ${Pnl.NumberOfViews}. ${clv_prods_ll.Size}"$)
Else 'Not visible
' If Pnl.NumberOfViews > 0 Then
' Pnl.RemoveAllViews 'Remove none visable item/layouts from the list/main layout
' End If
End If
PCLV.B4XSeekBar1.Value = clv_prods_ll.Size - FirstIndex
' Log($"Bar value: ${PCLV.B4XSeekBar1.Value}"$)
Next
End Sub
Sub Busca_TextChanged (Old As String, New As String)
' Private inicioContador As String = DateTime.Now
If (New.Length = 1 Or New.Length = 2) And Not(forzarBusqueda) Then Return
forzarBusqueda = False
If lfila.text = "PROMOCIONES" Then
If Not(lv_promos.Visible) Then lv_promos.Visible = True
Private cPromo As Cursor=Starter.skmt.ExecQuery($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_IMG from ${query} where CAT_GP_NOMBRE like '%${New}%' and CAT_GP_ALMACEN > 0 AND CAT_GP_TIPO = 'PROMOS' AND CAT_GP_SUBTIPO = 'PROMOS' AND CAT_GP_TIPOPROD <> 1 and (length(CAT_GP_CODPROMO) = 1 OR CAT_GP_CODPROMO = CAT_GP_ID) "$)
Log($"res:${cPromo.RowCount}"$)
If cPromo.RowCount > 0 Then
lv_promos.Clear
For i=0 To cPromo.RowCount -1
cPromo.Position=i
Private tm As Map = Subs.procesaPromocion(cPromo.GetString("CAT_GP_ID"), clienteId)
If tm.Get("status") = "ok" Then 'Solo muestrala si hay producto.
lv_promos.AddTwoLines(cPromo.GetString("CAT_GP_NOMBRE"),"# " & cPromo.GetString("CAT_GP_ALMACEN") & " $ " & cPromo.GetString("CAT_GP_PRECIO") & " F:" & tm.Get("mp").As(Map).Get("prodsFijosCant") & " V:" & tm.Get("mp").As(Map).Get("prodsVariablesCant"))
End If
Next
Else
ToastMessageShow("No hay promociones disponibles.", False)
End If
cPromo.Close
else if lfila.text = "RMI" Then
Dim p As ResultSet = Starter.skmt.ExecQuery($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, '1000' as CAT_GP_ALMACEN from CAT_RMI where CAT_GP_NOMBRE like '%${New}%' order by CAT_GP_NOMBRE"$)
Log($"Llamamos LlenaProdsLL con ${p.RowCount} prods."$)
lfila.Text = "RMI"
' b_rmi.Visible = False
lv_catalogos.Visible = False
LlenaProdsLL(p, "rmi")
clv_prods_ll.AsView.BringToFront
clv_prods_ll.AsView.Visible = True
l_mDisponible.Visible = True
Else
If Not(clv_prods_ll.AsView.Visible) Then clv_prods_ll.AsView.Visible = True
clv_prods_ll.Clear
listaProds.Initialize
listaHints.Initialize
Sleep(0)
Dim p As ResultSet = Starter.skmt.ExecQuery($"Select distinct ${Subs.traeTablaProds(Starter.tipov)}.CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO, CAT_GP_TIPOPROD, LISTA_PRECIOS.CAT_GP_ID as precioAlt from ${Subs.traeTablaProds(Starter.tipov)} left join LISTA_PRECIOS on LISTA_PRECIOS.CAT_GP_ID = ${Subs.traeTablaProds(Starter.tipov)}.CAT_GP_ID where CAT_GP_NOMBRE like '%${New}%' and CAT_GP_PRECIO > 0 And CAT_GP_CLASIF <> 'PROMOS' order by CAT_GP_NOMBRE"$)
' Dim p As ResultSet = Starter.skmt.ExecQuery($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO, CAT_GP_TIPOPROD from ${query} where CAT_GP_NOMBRE like '%${New}%' and CAT_GP_PRECIO > 0 AND CAT_GP_ALMACEN > 0 and CAT_GP_CLASIF <> 'PROMOS' order by CAT_GP_NOMBRE"$)
' c2= Starter.skmt.ExecQuery2("select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_IMG from " & query & " where CAT_GP_ALMACEN > 0 AND CAT_GP_TIPO = ? AND CAT_GP_SUBTIPO =? AND CAT_GP_TIPOPROD <> 1 and (length(CAT_GP_CODPROMO) = 1 OR CAT_GP_CODPROMO = CAT_GP_ID) ", Array As String( Value, Value)
Log("Llamamos LlenaProdsLL")
LlenaProdsLL(p, Null)
End If
End Sub
Sub LlenaProdsLL(p As ResultSet, extra As String)
Log("LlenaProdsLL")
listaProds.Initialize
hayPedido = Subs.hayPedido
' Log($"HAYPEDIDO: ${hayPedido}"$)
If hayPedido Then 'Si hay pedido obtenemos las cantidades de los productos para agregarlos al CLV.
Dim cantsMap, tiposMap, preciosMap As Map
cantsMap.Initialize
tiposMap.Initialize
preciosMap.Initialize
Dim pe As ResultSet = Starter.skmt.ExecQuery($"select PE_PROID, PE_CANT, PE_TIPO, PE_COSTOU from PEDIDO where PE_CLIENTE = '${clienteId}' and PE_CEDIS = '${Subs.traeAlmacen}' and PE_TIPO = '${Starter.tipov}'"$)
'Si EXTRA es igual a rmi, entonces regresamos los RMIs existentes.
If extra = "rmi" Then pe = Starter.skmt.ExecQuery($"select PE_PROID, PE_CANT, PE_COSTOU from PEDIDO where PE_CLIENTE = '${clienteId}' and PE_CEDIS = 'DUR'"$)
' LogColor("Ponemos productos de pedido anterior: "&pe.RowCount, Colors.red)
Do While pe.NextRow
Private cant As Int = 0
Private tipo As String = ""
cantsMap.put(pe.GetString("PE_PROID"), pe.GetString("PE_CANT"))
tiposMap.put(pe.GetString("PE_PROID"), pe.GetString("PE_TIPO"))
preciosMap.put(pe.GetString("PE_PROID"), pe.GetString("PE_COSTOU"))
Loop
Log($"Con pedido: ${pe.RowCount}"$)
Log("CANTSMAP: " & cantsMap)
Log("TIPOSMAP: " & tiposMap)
Log("PRECIOSMAP: " & preciosMap)
pe.Close
End If
' Log(p.IsInitialized)
If query = "" Or query = Null Then query = "cat_gunaprod2"
If p.IsInitialized Then
' Log($"YA HAY RESULTSET ${p.RowCount}"$)
Else
Log("NO HAY RESULTSET")
' Dim p As ResultSet = Starter.skmt.ExecQuery($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO, CAT_GP_TIPOPROD from ${Subs.traeTablaProds(Starter.tipov)} where CAT_GP_PRECIO > 0 And CAT_GP_CLASIF <> 'PROMOS' order by CAT_GP_NOMBRE"$)
Dim p As ResultSet = Starter.skmt.ExecQuery($"Select distinct ${Subs.traeTablaProds(Starter.tipov)}.CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO, CAT_GP_TIPOPROD, LISTA_PRECIOS.CAT_GP_ID as precioAlt from ${Subs.traeTablaProds(Starter.tipov)} left join LISTA_PRECIOS on LISTA_PRECIOS.CAT_GP_ID = ${Subs.traeTablaProds(Starter.tipov)}.CAT_GP_ID where CAT_GP_PRECIO > 0 And CAT_GP_CLASIF <> 'PROMOS' order by CAT_GP_NOMBRE"$)
Log("|" & Starter.tipov & "|")
Log($"Select distinct ${Subs.traeTablaProds(Starter.tipov)}.CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO, CAT_GP_TIPOPROD, LISTA_PRECIOS.CAT_GP_ID as precioAlt from ${Subs.traeTablaProds(Starter.tipov)} left join LISTA_PRECIOS on LISTA_PRECIOS.CAT_GP_ID = ${Subs.traeTablaProds(Starter.tipov)}.CAT_GP_ID where CAT_GP_PRECIO > 0 And CAT_GP_CLASIF <> 'PROMOS' order by CAT_GP_NOMBRE"$)
End If
Do While p.NextRow
Private cant As Int = 0
Private tipoV As String = ""
Private precioX As String = p.GetString("CAT_GP_PRECIO")
' Log(p.GetString("CAT_GP_ID"))
If hayPedido And cantsMap.ContainsKey(p.GetString("CAT_GP_ID")) Then cant = cantsMap.Get(p.GetString("CAT_GP_ID"))
If hayPedido And tiposMap.ContainsKey(p.GetString("CAT_GP_ID")) Then tipoV = tiposMap.Get(p.GetString("CAT_GP_ID"))
If hayPedido And preciosMap.ContainsKey(p.GetString("CAT_GP_ID")) Then precioX = preciosMap.Get(p.GetString("CAT_GP_ID"))
' Log(precioX)
' Log(">>>>>> preciosMap: " & preciosMap)
Dim tempMap As Map = CreateMap("prod":p.GetString("CAT_GP_NOMBRE"), "precio":precioX, "almacen":p.GetString("CAT_GP_ALMACEN"), "id":p.GetString("CAT_GP_ID"), "cant":cant, "tipo":Starter.tipoV, "precioAlt":p.GetString("precioAlt"))
' Log($"tipo: |${tempMap.Get("tipo")}|${Starter.tipov}| - tempMap: ${tempMap}"$)
' Log($">>> ${p.GetString("CAT_GP_NOMBRE")} - ALMACEN: ${p.GetString("CAT_GP_ALMACEN")}"$)
If tempMap.Get("tipo") = "" Or tempMap.Get("tipo") = Starter.tipov Then listaProds.Add(tempMap) 'Si el tipo de venta del producto es igual al actual, mostramos el producto en la lista.
' Log($"${p.GetString("CAT_GP_ID")}, ${p.GetString("CAT_GP_NOMBRE")}, ${cant}"$)
Loop
p.Close
' Log("LISTAPRODS: " & listaProds)
PCLV.Commit
clv_prods_ll.Clear
Private listaProdsConCant, listaProdsConCantIndex As List
listaProdsConCant.Initialize
listaProdsConCantIndex.Initialize
listaHints.Initialize
' Log(listaProds)
For q = 0 To listaProds.Size - 1' Sacamos los productos con cantidad previa.
If listaProds.Get(q).As(Map).Get("cant").As(Int) <> 0 Then
' Log(listaProds.Get(q).As(Map).Get("cant"))
listaProdsConCant.Add(listaProds.Get(q))
listaProdsConCantIndex.Add(q)
End If
Next
' Log("PRODCONCANT: " & listaProdsConCant)
' Log(listaProdsConCantIndex)
Private cont As Int = 0
For pr0=0 To listaProdsConCant.Size - 1 'Agregamos los productos con cantidad previa.
Private Pnl As B4XView = xui.CreatePanel("")
Pnl.SetLayoutAnimated(0, 0, 0, clv_prods_ll.AsView.Width, 50dip)
Private tempMap As Map = listaProdsConCant.Get(pr0)
Private inv As String = tempMap.Get("almacen")' + tempMap.Get("cant")
tempMap.Put("almacen", inv)
' Log(tempMap)
clv_prods_ll.Add(Pnl, tempMap)
listaHints.Add(listaProdsConCant.get(pr0).As(Map).Get("prod"))
cont = cont + 1
Next
' LogColor(clv_prods_ll.Size, Colors.red)
' Log(listaProds.Size)
For pr = 0 To listaProds.Size - 1
If listaProdsConCantIndex.IndexOf(pr) = -1 Then
Private Pnl As B4XView = xui.CreatePanel("")
If listaProds.Get(pr).As(Map).Get("almacen") < 1 Then
' Log("EN CERO" & listaProds.Get(pr).As(Map).Get("prod") & "|" & listaProds.Get(pr).As(Map).Get("almacen"))
Else
Pnl.SetLayoutAnimated(0, 0, 0, clv_prods_ll.AsView.Width, 50dip)
clv_prods_ll.Add(Pnl, listaProds.Get(pr))
listaHints.Add(listaProds.get(pr).As(Map).Get("prod"))
cont = cont + 1
End If
End If
Next
' LogColor(clv_prods_ll.Size, Colors.red)
' PCLV.Commit
' Log("CONT=" & cont)
' Log("CLV_PRODSLL="&clv_prods_ll.Size)
PCLV.B4XSeekBar1.MaxValue = clv_prods_ll.Size
PCLV.B4XSeekBar1.MinValue = 0
PCLV.B4XSeekBar1.Interval = clv_prods_ll.Size/20
PCLV.B4XSeekBar1.Value = clv_prods_ll.Size
PCLV.B4XSeekBar1.Update
' Log($"Min:0, max:${clv_prods_ll.Size}, Interval:${clv_prods_ll.Size/20}"$)
reiniciarlistaProds = False
End Sub
'Return the hint that will be displayed when the user fast scrolls the list. It can be a string or CSBuilder.
Sub PCLV_HintRequested(Index As Int) As Object
Dim word As String = listaHints.get(Index)
Return word
End Sub
'Return the hint that will be displayed when the user fast scrolls the list. It can be a string or CSBuilder.
Sub PCLV2_HintRequested(Index As Int) As Object
Dim word As String = listaHints.get(Index)
Return word
End Sub
Private Sub p_rmi_Click
End Sub
Private Sub b_rmi_aceptar_Click
Subs.guardaCambiosDeProducto(l_rmi_cant.Text, nuevaCantRMI, rmiMap.Get("nombre"), rmiMap.Get("id"), 0, query)
Log($"${nuevaCantRMI}, ${rmiMap.Get("nombre")}, ${rmiMap.Get("id")}, ${rmiMap.Get("pu")}, ${query}"$)
p_rmi.Visible = False
End Sub
Private Sub b_rmi_menos_Click
Log(Sender.As(Button).tag)
' Private d As Map = Sender.As(Button).tag
Private cant As String = l_rmi_cant.Text
If (cant - 1) >= 0 Then
l_rmi_cant.Text = $"$1.0{(l_rmi_cant.Text - 1)}"$
' l_rmi_total.Text = $"Total RMI $$1.2{(cant - 1) * rmiMap.Get("pu")}"$
End If
nuevaCantRMI = (rmiMap.Get("totalRMI") - l_rmi_cant.Text) * -1
Log(nuevaCantRMI)
End Sub
Private Sub b_rmi_mas_Click
Log(rmiMap)
Log(Sender.As(Button).tag)
' Private d As Map = Sender.As(Button).tag
Private cant As String = l_rmi_cant.Text
If (cant + 1) <= rmiMap.Get("inv") Then
l_rmi_cant.Text = $"$1.0{(l_rmi_cant.Text + 1)}"$
' l_rmi_total.Text = $"Total RMI $$1.2{(cant + 1) * rmiMap.Get("pu")}"$
End If
nuevaCantRMI = (rmiMap.Get("totalRMI") - l_rmi_cant.Text) * -1
Log(nuevaCantRMI)
p_botonesVenta.Visible = True
End Sub
Private Sub b_rmi_Click
Dim p As ResultSet = Starter.skmt.ExecQuery($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, '1000' as CAT_GP_ALMACEN from CAT_RMI order by CAT_GP_NOMBRE"$)
Log($"Llamamos LlenaProdsLL con ${p.RowCount} prods."$)
lfila.Text = "RMI"
' b_rmi.Visible = False
lv_catalogos.Visible = False
LlenaProdsLL(p, "rmi")
clv_prods_ll.AsView.BringToFront
clv_prods_ll.AsView.Visible = True
l_mDisponible.Visible = True
End Sub
Private Sub lv_precio2_ItemClick (Position As Int, Value As Object)
Log(Value)
End Sub
Private Sub cb_precio2_SelectedIndexChanged (Index As Int)
' Log(cb_precio2.SelectedItem.Trim)
' Log(cb_precio2.Tag)
Private m As Map = cb_precio2.Tag
Private p() As String
p = Regex.Split("-", cb_precio2.SelectedItem)
Private p2 As String = p(1).trim 'Obtenemos el precio
Log("|" & p(1).trim & "|")
Private cs As CSBuilder
cs.Initialize
Log($"ProdAct: ${prodAct.tag}"$)
Private pnl As B4XView = prodAct.Parent
Private laCant As EditText = pnl.GetView(2).GetView(2)
' Log(laCant.text)
prodAct.tag.As(Map).Put("precio", p2)
If laCant.Text = "0" Then 'Modificamos la cantidad para que se guarde el producto en pedido y el nuevo precio se aolique.
etCantHasFocus = True
pnl.GetView(2).GetView(2).Text = "1"
Sleep(700) 'Esperamos un poco para que se guarde el producto en la BD.
End If
prodAct.Text = cs.Color(Colors.red).append(m.Get("prod")).pop.append(CRLF).Append("Existencias: " & m.Get("almacen")).Color(0xFF017F01).Append($" $${p2}"$).Popall
Starter.skmt.ExecNonQuery($"update PEDIDO set PE_COSTOU = '${p2}', PE_COSTO_TOT = '${(p2 * laCant.text)}' where PE_TIPO = '${m.Get("tipo")}' and PE_PROID = '${m.Get("id")}' and PE_CLIENTE = '${kh.traeCliente}'"$)
' Log($"update PEDIDO set PE_COSTOU = '${p2}', PE_COSTO_TOT = '${(p2 * laCant.text)}' where PE_TIPO = '${m.Get("tipo")}' and PE_PROID = '${m.Get("id")}' and PE_CLIENTE = '${kh.traeCliente}'"$)
l_info.Visible = False
lv_precio2.Visible = False
cb_precio2.mBase.Visible = False
End Sub
'Regresa la lista de precios de acuerdo al almacen, ruta, perfil y id dados.
Sub traeListaPrecios (almacenX As String, rutaX As String, idX As String, perfilX As String) As List 'ignore
' Log($"${almacenX}, ${rutaX}, ${idX}, ${perfilX}"$)
Private listaPrecios As List
listaPrecios.Initialize
listaPrecios.Add("-= Seleccione Precio =-")
' If almacenX = "6" And rutaX = "16" Then
'' Log("POR ALMACEN Y RUTA")
' Starter.hayListaPreciosAlt = True
' c = Starter.skmt.ExecQuery($"select PRECIO, NLISTA FROM LISTA_PRECIOS WHERE NLISTA IN ('1','10') AND CAT_GP_ID = '${idX}' ORDER BY NLISTA ASC"$)
' If c.RowCount > 0 Then
' For i = 0 To c.RowCount - 1
' c.Position = i
' listaPrecios.Add($"${c.GetString("NLISTA")} - ${c.GetString("PRECIO")}"$)
' Next
' End If
' Else
' If perfilX = "V-MINI" Then
'' Log($"POR PERFIL: V-ESPECIAL"$)
' Starter.hayListaPreciosAlt = True
' c = Starter.skmt.ExecQuery($"select PRECIO, NLISTA FROM LISTA_PRECIOS WHERE NLISTA IN ('1','2') AND CAT_GP_ID = '${idX}' ORDER BY NLISTA ASC"$)
'' Log(c.RowCount)
' If c.RowCount > 0 Then
' For i = 0 To c.RowCount - 1
' c.Position = i
' listaPrecios.Add($"${c.GetString("NLISTA")} - ${NumberFormat2(c.GetDouble("PRECIO"), 1, 2, 2, False)}"$)
' Next
' End If
' Else
If perfilX = "V-COSTO" Then
' Log($"POR PERFIL: V-ESPECIAL"$)
Starter.hayListaPreciosAlt = True
c = Starter.skmt.ExecQuery($"select PRECIO, NLISTA FROM LISTA_PRECIOS WHERE NLISTA IN ('1','9') AND CAT_GP_ID = '${idX}' ORDER BY NLISTA ASC"$)
' Log(c.RowCount)
If c.RowCount > 0 Then
For i = 0 To c.RowCount - 1
c.Position = i
listaPrecios.Add($"${c.GetString("NLISTA")} - ${NumberFormat2(c.GetDouble("PRECIO"), 1, 2, 2, False)}"$)
Next
End If
ELSE IF perfilX = "V-SUPER" Then
' Log($"POR PERFIL: V-ESPECIAL"$)
Starter.hayListaPreciosAlt = True
c = Starter.skmt.ExecQuery($"select PRECIO, NLISTA FROM LISTA_PRECIOS WHERE NLISTA IN ('1','11') AND CAT_GP_ID = '${idX}' ORDER BY NLISTA ASC"$)
' Log(c.RowCount)
If c.RowCount > 0 Then
For i = 0 To c.RowCount - 1
c.Position = i
listaPrecios.Add($"${c.GetString("NLISTA")} - ${NumberFormat2(c.GetDouble("PRECIO"), 1, 2, 2, False)}"$)
Next
End If
ELSE IF perfilX = "V-ESPECIAL" Then
' Log($"POR PERFIL: V-ESPECIAL"$)
Starter.hayListaPreciosAlt = True
c = Starter.skmt.ExecQuery($"select PRECIO, NLISTA FROM LISTA_PRECIOS WHERE NLISTA IN ('1','5','6','7','8','10') AND CAT_GP_ID = '${idX}' ORDER BY NLISTA ASC"$)
' Log(c.RowCount)
If c.RowCount > 0 Then
For i = 0 To c.RowCount - 1
c.Position = i
listaPrecios.Add($"${c.GetString("NLISTA")} - ${NumberFormat2(c.GetDouble("PRECIO"), 1, 2, 2, False)}"$)
Next
End If
End If
Return listaPrecios
End Sub