15/1/24 - Cambios para lista de precios alternativa y promos por proveedor

This commit is contained in:
2024-01-15 16:50:51 -06:00
parent 5538d4726d
commit 296795590f
6 changed files with 102 additions and 146 deletions

View File

@@ -211,17 +211,12 @@ Sub B4XPage_Appear
' Log(Starter.tipov)
c = Starter.skmt.ExecQuery("select count(*) as hayPromos from promos_comp")
c.Position = 0
' Log(Subs.revisaImpresa)
If c.GetInt("hayPromos") > 0 And clienteId <> 0 And kh.revisaImpresa = False Then
lv_catalogos.AddSingleLine("PROMOS")
End If
' If c.GetInt("hayPromos") > 0 And clienteId <> 0 And kh.revisaImpresa = False Then
' lv_catalogos.AddSingleLine("PROMOS")
' End If
Sleep(100)
' l_total.Visible = False
' l_totProds.Visible = False
' l_total.Left = 5dip
' l_totProds.Width = Root.Width * 0.19
' l_total.Left = l_totProds.Width + 20
' l_total.Width = Root.Width * 0.25
' Log(Subs.traeTotalesClienteActual)
Dim m As Map = Subs.traeTotalesClienteActual
@@ -268,6 +263,31 @@ Sub B4XPage_Appear
If PERFIL = "V-COSTO" Then
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
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
@@ -295,28 +315,41 @@ Sub lv_catalogos_ItemClick (Position As Int, Value As Object)
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.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
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))
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($"Resultados : ${c2.RowCount}, ${Value}, ${marca}, ${tipo}"$)
' 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
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
@@ -587,7 +620,7 @@ Sub b_prodMenos_Click
Private cs As CSBuilder
cs.Initialize
'Traemos el inventario actual
Private i As Cursor = Starter.skmt.ExecQuery($"select CAT_GP_ALMACEN from cat_gunaprod2 where CAT_GP_ID = '${id}'"$)
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
@@ -671,7 +704,7 @@ Sub b_prodMas_Click
Private cs As CSBuilder
cs.Initialize
'Traemos el inventario actual
Private i As Cursor = Starter.skmt.ExecQuery($"select CAT_GP_ALMACEN from cat_gunaprod2 where CAT_GP_ID = '${id}'"$)
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
@@ -700,7 +733,7 @@ Private Sub et_pCant_FocusChanged (HasFocus As Boolean)
End Sub
Private Sub et_pCant_TextChanged (Old As String, New As String)
LogColor($"txt changed: ${Old}|${New}, hasfocus=${etCantHasFocus}"$,Colors.Magenta)
' LogColor($"txt changed: ${Old}|${New}, hasfocus=${etCantHasFocus}"$,Colors.Magenta)
' If Not(Old = "0" And New = "") And etCantHasFocus Then cuentaProds
If etCantHasFocus = True Then
@@ -1082,8 +1115,8 @@ Sub l_prodX_Click
' cb_precio2.SetItems(losPreciosList)
' End If
Private listaPrecios As List = traeListaPrecios(Subs.traeAlmacen, ruta, id, PERFIL)
If listaPrecios.Size > 0 Then
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
@@ -1182,7 +1215,11 @@ Private Sub clv_prods_ll_VisibleRangeChanged (FirstIndex As Int, LastIndex As In
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")
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}"$).Popall
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)
@@ -1276,7 +1313,8 @@ Sub LlenaProdsLL(p As ResultSet, extra As String)
' 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 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"$)
End If
Do While p.NextRow
@@ -1289,9 +1327,9 @@ Sub LlenaProdsLL(p As ResultSet, extra As String)
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)
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")}"$)
' 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
@@ -1447,21 +1485,27 @@ 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
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-ESPECIAL" Then
' Log($"POR PERFIL: V-ESPECIAL"$)
Starter.hayListaPreciosAlt = True
c = Starter.skmt.ExecQuery($"select PRECIO, NLISTA FROM LISTA_PRECIOS WHERE NLISTA IN ('5','6','7','8','10') AND CAT_GP_ID = '${idX}' ORDER BY NLISTA ASC"$)
If c.RowCount>0 Then
For i=0 To c.RowCount -1
' 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