- Código de promociones "al parecer" completo.

This commit is contained in:
2024-05-12 23:20:29 -06:00
parent 33550e86c3
commit c4feba0a09
4 changed files with 131 additions and 67 deletions

View File

@@ -43,11 +43,12 @@ Sub Class_Globals
Dim prodsPedidoActual As String
Dim montoPedidoActual As String
Dim promosMap As Map
Dim promosC As Promociones
End Sub
'You can add more parameters here.
Public Sub Initialize As Object
' promosC.Initialize(Me, "promosC", Starter.skmt)
promosC.Initialize(Me, "promosC", Starter.skmt)
Return Me
End Sub
@@ -81,46 +82,65 @@ Sub B4XPage_Appear
End Sub
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
Sub muestraPromo(promo As String, cliente As String)
Log("muestraPromo:"&promo)
Private thisLog As Boolean = False
' If thisLog Then Log(promo)
estaPromo = promo
Sub muestraPromo(idPromo As String, cliente As String)
Log("muestraPromo: " & idPromo)
Private thisLog As Boolean = True
promosC.tablaProds = "CAT_GUNAPROD2"
If Starter.tipov = "PREVENTA" Or Starter.tipov = "ABORDO" Then promosC.tablaProds = "CAT_GUNAPROD"
' If thisLog Then Log(idPromo)
estaPromo = idPromo
esteCliente = cliente
Private mp As Map = Subs.traePromo(promo, cliente)
If thisLog Then LogColor(mp, Colors.blue)
Private prodsPromo As Map = mp.Get("productos") 'Los productos de la promoción.
' Private invDispPromo As Map = Subs.traemosInventarioDisponibleParaPromo(promo)
Private invDispPromo As Map = Subs.restaFijosPromo(mp)
' Private mp As Map = Subs.traePromo(idPromo, cliente)
' If thisLog Then LogColor(mp, Colors.blue)
' Private prodsPromo As Map = mp.Get("productos") 'Los productos de la promoción.
' Private invDispPromo As Map = Subs.restaFijosPromo(mp)
Private invDispPromo As Map = promosC.restaFijosDePromo(idPromo)
If thisLog Then Log($"invDispPromo=${invDispPromo}"$)
If thisLog Then Log("Max promos por inv de prods FIJOS: " & Subs.revisaMaxPromosProdsFijosPorInventario(mp))
If thisLog Then Log("Max promos por inv de prods VARIABLES: " & Subs.revisaMaxPromosProdsVariablesPorInventario(mp))
maxCantPromos = Subs.revisaMaxPromosProdsVariablesPorInventario(mp)
If thisLog Then Log("Max promos por inv de prods FIJOS: " & promosC.revisaMaxPromosProdsFijosPorInventario(idPromo))
If thisLog Then Log("Max promos por inv de prods VARIABLES: " & promosC.revisaMaxPromosProdsVariablesPorInventario(idPromo))
' maxCantPromos = Subs.revisaMaxPromosProdsVariablesPorInventario(mp)
maxCantPromos = promosC.revisaMaxPromosProdsVariablesPorInventario(idPromo)
Log($"MAXCANTPROMOS: ${maxCantPromos}"$)
et_promoCant.Text = 1
l_promosCant.text = "Max promos: " & maxCantPromos
Private cs As CSBuilder
cs.Initialize
If thisLog Then Log(mp)
If thisLog Then Log(prodsPromo)
'Ponemos la promo y descripción.
' Dim desc As String = $"Promoción: ${promo}${CRLF}${mp.Get("descripcion")}"$
' Dim desc As String = cs.append("Promocion: ").Color(Colors.RGB(100,149,237)).Append(promo).pop.append(CRLF).Append(mp.Get("descripcion")).Popall
l_promoDesc.Text = cs.Color(Colors.RGB(100,149,237)).append("Promocion: ").pop.append(CRLF).Append(promo).append(CRLF).Append(mp.Get("descripcion")).Popall
' If thisLog Then Log(mp)
' If thisLog Then Log(prodsPromo)
'Ponemos la idPromo y descripción.
' Dim desc As String = $"Promoción: ${idPromo}${CRLF}${mp.Get("descripcion")}"$
' Dim desc As String = cs.append("Promocion: ").Color(Colors.RGB(100,149,237)).Append(idPromo).pop.append(CRLF).Append(mp.Get("descripcion")).Popall
Private c As Cursor = Starter.skmt.ExecQuery($"select CAT_GP_NOMBRE from ${Subs.traeTablaProds(Starter.tipov)} where CAT_GP_ID = '${idPromo}'"$)
Private descripcion As String = "PROMO"
If c.RowCount > 0 Then
c.Position = 0
descripcion = c.GetString("CAT_GP_NOMBRE")
End If
l_promoDesc.Text = cs.Color(Colors.RGB(100,149,237)).append("Promocion: ").pop.append(CRLF).Append(idPromo).append(CRLF).Append(descripcion).Popall
prodsFijosTot = 0
'Ponemos el texto en las etiquetas de la cantidad de productos.
' Dim pf As List = mp.Get("prodsFijos")
Dim pv As List = mp.Get("prodsVariables")
Dim listaPreciosPV As List = mp.Get("prodsVariablesPrecios")
' Dim pv As List = mp.Get("prodsVariables")
Dim pv As List = promosC.traeListaDePromo("P_PRODSVARIABLES", idPromo)
' Dim listaPreciosPV As List = mp.Get("prodsVariablesPrecios")
Dim listaPreciosPV As List = promosC.traeListaDePromo("P_PRODSVARIABLES_PRECIOS", idPromo)
' Logcolor(listaPreciosPV, Colors.red)
If thisLog Then Log(mp)
' If thisLog Then Log(mp)
tpf = 0
For Each pfp As Int In mp.Get("prodsFijosPiezas").As(List)
For Each pfp As Int In promosC.traeListaDePromo("P_PRODSFIJOS_PIEZAS", idPromo)
tpf = tpf + pfp
Next
tpf2 = tpf
' tpf = tpf * maxCantPromos
l_prodsFijos.Text = $"Productos fijos (${tpf})"$
prodsVarReq = mp.Get("prodsVariablesRequeridos")
prodsVarReq = promosC.traeInfoDePromo("P_PRODSVARIABLES_REQUERIDOS", idPromo)
prodsVarReq2 = prodsVarReq
l_prodsVariables.Text = $"Productos variables requeridos: ${prodsVarReq}"$
If prodsVarReq = 0 Then
@@ -137,7 +157,7 @@ Sub muestraPromo(promo As String, cliente As String)
lv_prodsFijos.Clear
' If pf.Size < 1 Then pf.Add("Sin productos fijos.")
lv_prodsFijos.Clear
agregaFijosALista(mp, True)
agregaFijosALista(idPromo, True)
If thisLog Then Log("Total prods fijos = " & prodsFijosTot)
' If thisLog Then Log("======="&prodsMap)
l_totProds.text = $"Productos: ${tpf}"$
@@ -160,8 +180,8 @@ Sub muestraPromo(promo As String, cliente As String)
' bmp.Initialize2(ins)
Private indicePV As Int = pv.IndexOf(p)
Private estePrecio As String = listaPreciosPV.Get(indicePV)
Private thisProd As Map = prodsPromo.Get(p)
If thisLog Then Log(thisProd)
' Private thisProd As Map = prodsPromo.Get(p)
' If thisLog Then Log(thisProd)
If existenciaProdVariable > 0 Then
Log($">>>>> AGREGAMOS PROD VARIABLE ${p}"$)
clv_prodsVariabes.Add(CreateListItem(Subs.traeProdNombre(p)&CRLF&"Hay " & invDispPromo.Get(p) & " $" & estePrecio, estePrecio, invDispPromo.Get(p), clv_prodsVariabes.AsView.Width, 50dip, Null, p), p)
@@ -174,11 +194,13 @@ Sub muestraPromo(promo As String, cliente As String)
End Sub
'Agregamos los productos fijos a una lista para despues meterlos en el pedido.
Sub agregaFijosALista(mp As Map, addListItem As Boolean)
Sub agregaFijosALista(idPromo As String, addListItem As Boolean)
Private thisLog As Boolean = False
Private cont As Int = 0
prodsFijosTot = 0
Dim pf As List = mp.Get("prodsFijos")
' Dim pf As List = mp.Get("prodsFijos")
Dim pf As List = promosC.traeListaDePromo("P_PRODSFIJOS", idPromo)
If pf.Size < 1 Then pf.Add("Sin productos fijos.")
' Private m As Map
' prodsMap.Put(estaPromo, CreateMap("cant":1, "precio":0))
@@ -191,13 +213,15 @@ Sub agregaFijosALista(mp As Map, addListItem As Boolean)
prodsPrecios.Add(0)
For Each p As String In pf
' Log($"cont=${cont}, mp=${mp}"$)
If mp.Get("prodsFijosPiezas").As(List).Size > 0 Then
Private tpi As String = mp.Get("prodsFijosPiezas").As(List).Get(cont)
Private prodsFijosPiezas As List = promosC.traeListaDePromo("P_PRODSFIJOS_PIEZAS", idPromo)
If prodsFijosPiezas.Size > 0 Then
Private tpi As String = prodsFijosPiezas.Get(cont)
Else
Private tpi As String = 0
End If
If mp.Get("prodsFijosPrecios").As(List).Size > 0 Then
Private tpr As String = mp.Get("prodsFijosPrecios").As(List).Get(cont)
Private prodsFijosPrecios As List = promosC.traeListaDePromo("P_PRODSFIJOS_PRECIOS", idPromo)
If prodsFijosPrecios.Size > 0 Then
Private tpr As String = prodsFijosPrecios.Get(cont)
Else
Private tpr As String = 0
End If
@@ -306,7 +330,7 @@ Sub cuentaProds
prodsCants2.Clear
prodsPrecios2.Clear
lv_prodsFijos.Clear
agregaFijosALista(Subs.traePromo(estaPromo, esteCliente), True)
agregaFijosALista(estapromo, True)
' Log(prodsIds)
Private tcpf As Float = 0 'Total de compra de productos fijos.
For pf = 0 To prodsIds.Size - 1