2 Commits

Author SHA1 Message Date
44d97b4845 VERSION 6.03.24
- Se agrego codigo para que cuando envie un pedido o modificacipn deun pedido, borre antes de web todo lo que encuentre de ese cliente y luego mande el nuevo.
2026-03-26 16:58:52 -06:00
f5fe4c4a52 VERSION 6.03.15
- Se corrige un error en el calculo del trade spending para que en algunos casos no calculaba bien en presupuesto.
- Se hace un cambio en subs.actualizaProducto, porque no ponia en 0 la bandera de pc_enviado.
2026-03-17 09:58:32 -06:00
9 changed files with 109 additions and 65 deletions

View File

@@ -749,6 +749,8 @@ Private Sub i_engranes_LongClick
Dim reqManagerW As DBRequestManagerW Dim reqManagerW As DBRequestManagerW
reqManagerW.Initialize reqManagerW.Initialize
cmd.Initialize cmd.Initialize
Dim a As Int = "abc"
cmd.Name = "select_usuario_guna_KELL" cmd.Name = "select_usuario_guna_KELL"
cmd.Parameters = Array As Object(user.Text, pass.Text) cmd.Parameters = Array As Object(user.Text, pass.Text)
@@ -974,8 +976,6 @@ Private Sub cb_cartaPorte_CheckedChange(Checked As Boolean)
Starter.skmt.ExecNonQuery($"insert into CAT_VARIABLES (CAT_VA_DESCRIPCION, CAT_VA_VALOR) values ('CARTAPORTE', '${Checked}')"$) Starter.skmt.ExecNonQuery($"insert into CAT_VARIABLES (CAT_VA_DESCRIPCION, CAT_VA_VALOR) values ('CARTAPORTE', '${Checked}')"$)
End Sub End Sub
private Sub l_geocerca_Click private Sub l_geocerca_Click
If cb_geocerca.Enabled = False Then ToastMessageShow("Ingrese la contraseña para modificar", True) If cb_geocerca.Enabled = False Then ToastMessageShow("Ingrese la contraseña para modificar", True)
End Sub End Sub

View File

@@ -796,8 +796,8 @@ Sub B4XPage_Appear
Log(">>>> GUARDAMOS PROMOXMONTO PRODS") Log(">>>> GUARDAMOS PROMOXMONTO PRODS")
Subs.guardaProductoSinGestion(mPromoXMonto.Get("id"), dp.GetString("CAT_DP_PRECIO"), dp.GetString("CAT_DP_PZAS"), Subs.traeProdNombre(dp.GetString("CAT_DP_IDPROD")), dp.GetString("CAT_DP_IDPROD"), Subs.traeCliente, Subs.traeFecha, Subs.traeUsuarioDeBD, Subs.traeRuta, 0, Starter.tipov) Subs.guardaProductoSinGestion(mPromoXMonto.Get("id"), dp.GetString("CAT_DP_PRECIO"), dp.GetString("CAT_DP_PZAS"), Subs.traeProdNombre(dp.GetString("CAT_DP_IDPROD")), dp.GetString("CAT_DP_IDPROD"), Subs.traeCliente, Subs.traeFecha, Subs.traeUsuarioDeBD, Subs.traeRuta, 0, Starter.tipov)
' Traemos el monto de las bonificacionos a guardar. -- Trade Spending ' Traemos el monto de las bonificacionos a guardar. -- Trade Spending
Log("Monto Bonificacion -->> " & B4XPages.MainPage.promos.ts.traeMontoBonificacion(dp.GetString("CAT_DP_IDPROD"), dp.GetString("CAT_DP_PRECIO"), mPromoXMonto.Get("id"))) Log("Monto Bonificacion -->> " & B4XPages.MainPage.promos.ts.traeMontoBonificacion(dp.GetString("CAT_DP_IDPROD"), dp.GetString("CAT_DP_PRECIO"), mPromoXMonto.Get("id"),"LOG_APPEAR1"))
elMontoTSDeLaVenta = elMontoTSDeLaVenta + (B4XPages.MainPage.promos.ts.traeMontoBonificacion(dp.GetString("CAT_DP_IDPROD"), dp.GetString("CAT_DP_PRECIO"), mPromoXMonto.Get("id")) * dp.GetString("CAT_DP_PZAS")) elMontoTSDeLaVenta = elMontoTSDeLaVenta + (B4XPages.MainPage.promos.ts.traeMontoBonificacion(dp.GetString("CAT_DP_IDPROD"), dp.GetString("CAT_DP_PRECIO"), mPromoXMonto.Get("id"), "APPEAR2") * dp.GetString("CAT_DP_PZAS"))
End If End If
Next Next
B4XPages.MainPage.promos.ts.modTrendSpending("RESTA", "BONIFICACIONES", elMontoTSDeLaVenta) B4XPages.MainPage.promos.ts.modTrendSpending("RESTA", "BONIFICACIONES", elMontoTSDeLaVenta)

View File

@@ -3525,32 +3525,29 @@ End Sub
' 2. Genera un ID único (Arch) para vincular exactamente cada venta con sus productos. ' 2. Genera un ID único (Arch) para vincular exactamente cada venta con sus productos.
' 3. Empaqueta todo en una lista de comandos (Batch) para enviarlo al servidor en una sola transacción. ' 3. Empaqueta todo en una lista de comandos (Batch) para enviarlo al servidor en una sola transacción.
Sub enviaPedidoBatch(filtro As String) Sub enviaPedidoBatch(filtro As String)
' Creamos una lista llamada BatchCommands. Aquí vamos a guardar todas las instrucciones
' de base de datos que queremos mandar al servidor de un solo golpe (en lote o "batch").
Dim BatchCommands As List
BatchCommands.Initialize
Log($"enviaPedidoBatch(${filtro})"$)
' Preparamos una variable para filtrar la consulta a la base de datos. ' Preparamos una variable para filtrar la consulta a la base de datos.
' Si el filtro no dice "Todos", armamos la condición para traer solo los pedidos que no se han enviado (PC_ENVIADO = 0). ' Si el filtro no dice "Todos", armamos la condición para traer solo los pedidos que no se han enviado (PC_ENVIADO = 0).
Private condicion As String = "" Private condicion As String = ""
If filtro <> "Todos" Then condicion = "where PC_ENVIADO = 0" ' If filtro <> "Todos" Then condicion = "where PC_ENVIADO = 0"
If filtro <> "Todos" Then
condicion = "WHERE PC_ENVIADO = 0 OR PC_CLIENTE IN (SELECT PE_CLIENTE FROM PEDIDO WHERE PE_ENVIADO = 0)" ' Si se actualizo un producto, hay que volver a enviar todo el pedido.
End If
' Ejecutamos una consulta (Query) a la base de datos local de SQLite (skmt). ' Ejecutamos una consulta (Query) a la base de datos local de SQLite (skmt).
' Buscamos los ENCABEZADOS de los pedidos en la tabla PEDIDO_CLIENTE usando la condición que armamos arriba. ' Buscamos los ENCABEZADOS de los pedidos en la tabla PEDIDO_CLIENTE usando la condición que armamos arriba.
' El resultado se guarda en un Cursor llamado 'cx', que es como una tabla en memoria por la que podemos navegar. ' El resultado se guarda en un Cursor llamado 'cx', que es como una tabla en memoria por la que podemos navegar.
Private cx As Cursor = Starter.skmt.ExecQuery($"SELECT PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT, PC_COSTO_SIN, PC_RUTA, PC_ALMACEN, PC_ENVIADO FROM PEDIDO_CLIENTE ${condicion}"$) Private cx As Cursor = Starter.skmt.ExecQuery($"SELECT PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT, PC_COSTO_SIN, PC_RUTA, PC_ALMACEN, PC_ENVIADO FROM PEDIDO_CLIENTE ${condicion}"$)
Log($"SELECT PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT, PC_COSTO_SIN, PC_RUTA, PC_ALMACEN, PC_ENVIADO FROM PEDIDO_CLIENTE ${condicion}"$) Log($"SELECT PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT, PC_COSTO_SIN, PC_RUTA, PC_ALMACEN, PC_ENVIADO FROM PEDIDO_CLIENTE ${condicion}"$)
Log("pedido_cliente: " & cx.RowCount) Log("pedido_cliente: " & cx.RowCount)
' Reiniciamos la variable de condición para usarla ahora en el DETALLE de los pedidos. ' Reiniciamos la variable de condición para usarla ahora en el DETALLE de los pedidos.
Private condicion As String = "" ' Private condicion As String = ""
If filtro <> "Todos" Then condicion = "where PE_ENVIADO = 0" ' If filtro <> "Todos" Then condicion = "where PE_ENVIADO = 0"
' Verificamos si en la tabla de envíos históricos (HIST_ENVIOS) hay registros del tipo "ABORDO" (Ventas en ruta directa). ' Verificamos si en la tabla de envíos históricos (HIST_ENVIOS) hay registros del tipo "ABORDO" (Ventas en ruta directa).
c = Starter.skmt.ExecQuery2("SELECT COUNT(*) as CANTIDAD FROM HIST_ENVIOS WHERE HE_TIPO = ?",Array As String("ABORDO") ) c = Starter.skmt.ExecQuery2("SELECT COUNT(*) as CANTIDAD FROM HIST_ENVIOS WHERE HE_TIPO = ?",Array As String("ABORDO") )
c.Position = 0 c.Position = 0
' Si encontramos que sí hay ventas a bordo... ' Si encontramos que sí hay ventas a bordo...
If c.GetString("CANTIDAD") > 0 Then If c.GetString("CANTIDAD") > 0 Then
Log($"pe_cedis_0"$) Log($"pe_cedis_0"$)
@@ -3558,24 +3555,63 @@ Sub enviaPedidoBatch(filtro As String)
' y que no tengan un número de folio, se marquen con el almacén/cedis "RECARGA". ' y que no tengan un número de folio, se marquen con el almacén/cedis "RECARGA".
Starter.skmt.ExecNonQuery2("update PEDIDO set PE_CEDIS = ? where PE_CLIENTE =? AND PE_FOLIO IS NULL ", Array As Object("RECARGA", "0")) Starter.skmt.ExecNonQuery2("update PEDIDO set PE_CEDIS = ? where PE_CLIENTE =? AND PE_FOLIO IS NULL ", Array As Object("RECARGA", "0"))
End If End If
' Hacemos una actualización rápida a los registros de PEDIDO que no tengan folio (folio 0 o 1). ' Hacemos una actualización rápida a los registros de PEDIDO que no tengan folio (folio 0 o 1).
' Les asignamos temporalmente el 'rowid' (el número de fila interno de SQLite) como folio para identificarlos. ' Les asignamos temporalmente el 'rowid' (el número de fila interno de SQLite) como folio para identificarlos.
Starter.skmt.ExecNonQuery("UPDATE PEDIDO SET PE_FOLIO = rowid where PE_FOLIO = 0 or PE_FOLIO = 1") Starter.skmt.ExecNonQuery("UPDATE PEDIDO SET PE_FOLIO = rowid where PE_FOLIO = 0 or PE_FOLIO = 1")
' Revisamos si nuestro cursor 'cx' (los encabezados de pedido) trajo algún resultado. ' Revisamos si nuestro cursor 'cx' (los encabezados de pedido) trajo algún resultado.
If cx.RowCount > 0 Then ' Si hay pedido entonces lo enviamos. If cx.RowCount > 0 Then ' Si hay pedido entonces lo enviamos.
' Iniciamos un bucle (For) para recorrer cada uno de los encabezados de pedido encontrados. ' Iniciamos un bucle (For) para recorrer cada uno de los encabezados de pedido encontrados.
For j = 0 To cx.RowCount - 1 For j = 0 To cx.RowCount - 1
Log("===== ENVIAMOS PRODUCTOS DE PEDIDO =====") ' Creamos una lista llamada BatchCommands. Aquí vamos a guardar todas las instrucciones
' de base de datos que queremos mandar al servidor de un solo golpe (en lote o "batch").
Dim BatchCommands As List
BatchCommands.Initialize
Log($"enviaPedidoBatch(${filtro})"$)
Log("===== AGREGAMOS HEADER DE PEDIDO =====")
' Movemos el cursor 'cx' a la posición 'j' actual del bucle. ' Movemos el cursor 'cx' a la posición 'j' actual del bucle.
cx.Position = j cx.Position = j
' ===== 1. EJECUTAR DELETES PRIMERO =====
Log("===== LIMPIANDO PEDIDOS PREVIOS EN SERVER =====")
' Borrar Pedido (Detalle)
Dim cmdDelPed As DBCommand
cmdDelPed.Initialize
cmdDelPed.Name = "borraPedido_Kelloggs"
cmdDelPed.Parameters = Array As Object(ALMACEN, l_ruta.text, cx.GetString("PC_USER"), cx.GetString("PC_CLIENTE"))
BatchCommands.Add(cmdDelPed)
' Borrar Pedido Cliente (Header)
Dim cmdDelHeader As DBCommand
cmdDelHeader.Initialize
cmdDelHeader.Name = "borraPedidoCliente_Kelloggs"
cmdDelHeader.Parameters = Array As Object(ALMACEN, l_ruta.text, cx.GetString("PC_USER"), cx.GetString("PC_CLIENTE"))
BatchCommands.Add(cmdDelHeader)
' Borrar Hist_Ventas (Header)
Dim cmdDelHV As DBCommand
cmdDelHV.Initialize
cmdDelHV.Name = "borraHV_Kelloggs"
cmdDelHV.Parameters = Array As Object(ALMACEN, l_ruta.text, cx.GetString("PC_USER"), cx.GetString("PC_CLIENTE"))
BatchCommands.Add(cmdDelHV)
' Borrar Hist_Ventas_Detalle (Detalle)
Dim cmdDelHVD As DBCommand
cmdDelHVD.Initialize
cmdDelHVD.Name = "borraHVD_Kelloggs"
cmdDelHVD.Parameters = Array As Object(ALMACEN, l_ruta.text, cx.GetString("PC_USER"), cx.GetString("PC_CLIENTE"))
BatchCommands.Add(cmdDelHVD)
' Generamos un identificador único (Arch) concatenando el almacén, la ruta, el cliente y la fecha/hora actual. ' Generamos un identificador único (Arch) concatenando el almacén, la ruta, el cliente y la fecha/hora actual.
' Esto sirve para agrupar en el servidor el encabezado con sus respectivos detalles. ' Esto sirve para agrupar en el servidor el encabezado con sus respectivos detalles.
Dim Arch As String = Subs.traeAlmacen & "_" & Subs.traeRuta & "_" & cx.GetString("PC_CLIENTE") & "_" & DateTime.Now Dim Arch As String = Subs.traeAlmacen & "_" & Subs.traeRuta & "_" & cx.GetString("PC_CLIENTE") & "_" & DateTime.Now
Starter.skmt.ExecNonQuery2($"UPDATE PEDIDO SET PE_ARCH = ? WHERE PE_CLIENTE = ?"$, Array As Object(Arch, cx.GetString("PC_CLIENTE")))
Starter.skmt.ExecNonQuery2($"UPDATE PEDIDO_CLIENTE SET PC_ARCH = ? WHERE PC_CLIENTE = ?"$, Array As Object(Arch, cx.GetString("PC_CLIENTE")))
' Preparamos un comando de base de datos (DBCommand) para mandar al servidor. ' Preparamos un comando de base de datos (DBCommand) para mandar al servidor.
Dim cmdHeader As DBCommand Dim cmdHeader As DBCommand
cmdHeader.Initialize cmdHeader.Initialize
@@ -3583,53 +3619,53 @@ Sub enviaPedidoBatch(filtro As String)
cmdHeader.Name = "insert_pedidos_KELL_arch" cmdHeader.Name = "insert_pedidos_KELL_arch"
' Pasamos los parámetros leyendo los datos del cursor 'cx' (encabezado) y le pasamos el ID único 'Arch'. ' Pasamos los parámetros leyendo los datos del cursor 'cx' (encabezado) y le pasamos el ID único 'Arch'.
cmdHeader.Parameters = Array As Object(cx.GetString("PC_CLIENTE"),cx.GetString("PC_FECHA"),cx.GetString("PC_USER"),cx.GetString("PC_NOART"),cx.GetString("PC_MONTO"),cx.GetString("PC_LON"),cx.GetString("PC_LAT"),ALMACEN,l_ruta.text,cx.GetString("PC_COSTO_SIN"), Arch) cmdHeader.Parameters = Array As Object(cx.GetString("PC_CLIENTE"),cx.GetString("PC_FECHA"),cx.GetString("PC_USER"),cx.GetString("PC_NOART"),cx.GetString("PC_MONTO"),cx.GetString("PC_LON"),cx.GetString("PC_LAT"),ALMACEN,l_ruta.text,cx.GetString("PC_COSTO_SIN"), Arch)
' Añadimos este comando a nuestra lista del lote (Batch). ' Añadimos este comando a nuestra lista del lote (Batch).
BatchCommands.Add(cmdHeader) BatchCommands.Add(cmdHeader)
' Ahora hacemos una consulta para buscar el DETALLE de este pedido (los productos individuales). ' Ahora hacemos una consulta para buscar el DETALLE de este pedido (los productos individuales).
' Filtramos por la condición (si se envió o no) y lo amarramos al cliente actual del bucle (PC_CLIENTE). ' Filtramos por la condición (si se envió o no) y lo amarramos al cliente actual del bucle (PC_CLIENTE).
Private cPed As Cursor = Starter.skmt.ExecQuery($"SELECT PE_CEDIS, PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_FECHA, PE_USUARIO, PE_COSTO_SIN, PE_RUTA, PE_DESC, PE_FOLIO, PE_TIPO, PE_ARCH FROM PEDIDO ${condicion} ${(IIf(condicion = "","where", "and"))} pe_cliente = '${cx.GetString("PC_CLIENTE")}' "$) Private cPed As Cursor = Starter.skmt.ExecQuery($"SELECT PE_CEDIS, PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_FECHA, PE_USUARIO, PE_COSTO_SIN, PE_RUTA, PE_DESC, PE_FOLIO, PE_TIPO, PE_ARCH FROM PEDIDO where pe_cliente = '${cx.GetString("PC_CLIENTE")}' "$)
' Si hay detalles para este encabezado... ' Si hay detalles para este encabezado...
If cPed.RowCount > 0 Then If cPed.RowCount > 0 Then
' Iniciamos un bucle interno para recorrer cada producto de este pedido. ' Iniciamos un bucle interno para recorrer cada producto de este pedido.
For i = 0 To cPed.RowCount - 1 For i = 0 To cPed.RowCount - 1
Log("==== ENVIAMOS PRODS ====") Log("==== AGREGAMOS PRODS DE PEDIDO ====")
' Movemos el cursor de detalles a la posición actual. ' Movemos el cursor de detalles a la posición actual.
cPed.Position = i cPed.Position = i
' Preparamos el comando para enviar este producto al servidor. ' Preparamos el comando para enviar este producto al servidor.
Dim cmdDetail As DBCommand Dim cmdDetail As DBCommand
cmdDetail.Initialize cmdDetail.Initialize
' Si el perfil del vendedor es especial ("V-ESPECIAL")... ' Si el perfil del vendedor es especial ("V-ESPECIAL")...
If PERFIL = "V-ESPECIAL" Then If PERFIL = "V-ESPECIAL" Then
Log("===== V-ESPECIAL =====") Log("===== V-ESPECIAL =====")
' Nota: Aquí el código original tiene un detalle, usa la variable global 'cmd' en lugar de 'cmdDetail' ' Nota: Aquí el código original tiene un detalle, usa la variable global 'cmd' en lugar de 'cmdDetail'
' que acaba de inicializar, pero la copiamos tal cual. Utiliza un query distinto para ventas especiales. ' que acaba de inicializar, pero la copiamos tal cual. Utiliza un query distinto para ventas especiales.
cmd.Name = "insert_pedido_esp_KELL" cmdDetail.Name = "insert_pedido_esp_KELL"
cmd.Parameters = Array As Object(cPed.GetString("PE_CEDIS"),ALMACEN,cPed.GetString("PE_COSTO_TOT"),cPed.GetString("PE_COSTOU"),cPed.GetString("PE_CANT"),cPed.GetString("PE_PRONOMBRE"),cPed.GetString("PE_PROID"),cPed.GetString("PE_CLIENTE"),cPed.GetString("PE_FECHA"),cPed.GetString("PE_USUARIO"),cPed.GetString("PE_RUTA"),cPed.GetString("PE_COSTO_SIN"),cPed.GetString("PE_DESC"),cPed.GetString("PE_FOLIO"),cPed.GetString("PE_TIPO"),NUMERO_PEDIDO) cmdDetail.Parameters = Array As Object(cPed.GetString("PE_CEDIS"),ALMACEN,cPed.GetString("PE_COSTO_TOT"),cPed.GetString("PE_COSTOU"),cPed.GetString("PE_CANT"),cPed.GetString("PE_PRONOMBRE"),cPed.GetString("PE_PROID"),cPed.GetString("PE_CLIENTE"),cPed.GetString("PE_FECHA"),cPed.GetString("PE_USUARIO"),cPed.GetString("PE_RUTA"),cPed.GetString("PE_COSTO_SIN"),cPed.GetString("PE_DESC"),cPed.GetString("PE_FOLIO"),cPed.GetString("PE_TIPO"),NUMERO_PEDIDO)
Else Else
' Si es un vendedor normal, usa el comando estándar para insertar el detalle ' Si es un vendedor normal, usa el comando estándar para insertar el detalle
' y le pasa la misma variable 'Arch' para que en el servidor sepa de qué encabezado es. ' y le pasa la misma variable 'Arch' para que en el servidor sepa de qué encabezado es.
cmdDetail.Name = "insert_pedido_KELL_arch" cmdDetail.Name = "insert_pedido_KELL_arch"
cmdDetail.Parameters = Array As Object (cPed.GetString("PE_CEDIS"),ALMACEN,cPed.GetString("PE_COSTO_TOT"),cPed.GetString("PE_COSTOU"),cPed.GetString("PE_CANT"),cPed.GetString("PE_PRONOMBRE"),cPed.GetString("PE_PROID"),cPed.GetString("PE_CLIENTE"),cPed.GetString("PE_FECHA"),cPed.GetString("PE_USUARIO"),cPed.GetString("PE_RUTA"), cPed.GetString("PE_COSTO_SIN"),cPed.GetString("PE_DESC"),cPed.GetString("PE_FOLIO"), cPed.GetString("PE_TIPO"), Arch) cmdDetail.Parameters = Array As Object (cPed.GetString("PE_CEDIS"),ALMACEN,cPed.GetString("PE_COSTO_TOT"),cPed.GetString("PE_COSTOU"),cPed.GetString("PE_CANT"),cPed.GetString("PE_PRONOMBRE"),cPed.GetString("PE_PROID"),cPed.GetString("PE_CLIENTE"),cPed.GetString("PE_FECHA"),cPed.GetString("PE_USUARIO"),cPed.GetString("PE_RUTA"), cPed.GetString("PE_COSTO_SIN"),cPed.GetString("PE_DESC"),cPed.GetString("PE_FOLIO"), cPed.GetString("PE_TIPO"), Arch)
End If End If
' Añadimos la instrucción del producto al lote de envío. ' Añadimos la instrucción del producto al lote de envío.
BatchCommands.Add(cmdDetail) BatchCommands.Add(cmdDetail)
Next Next
End If End If
cPed.Close
' Al terminar de empaquetar, enviamos toda la lista de instrucciones (BatchCommands) al servidor de un solo golpe.
' Se le asigna un nombre de etiqueta (Tag) para saber qué responderá el JobDone ("pedido_completo_" + id de cliente).
' (Ojo visual para el programador: Esta línea está dentro del 'If' general, pero también después de armar los batches en el bucle 'For'. Al procesar el último item del bucle cx, tomará el ID del último cliente para el Tag).
reqManager.ExecuteBatch(BatchCommands, "pedido_completo_" & cx.GetString("PC_CLIENTE"))
Log("==== ENVIAMOS PEDIDO COMPLETO ====")
Next Next
' Al terminar de empaquetar, enviamos toda la lista de instrucciones (BatchCommands) al servidor de un solo golpe.
' Se le asigna un nombre de etiqueta (Tag) para saber qué responderá el JobDone ("pedido_completo_" + id de cliente).
' (Ojo visual para el programador: Esta línea está dentro del 'If' general, pero también después de armar los batches en el bucle 'For'. Al procesar el último item del bucle cx, tomará el ID del último cliente para el Tag).
reqManager.ExecuteBatch(BatchCommands, "pedido_completo_" & cx.GetString("PC_CLIENTE"))
End If End If
' Por buena práctica y para evitar fugas de memoria (memory leaks), ' Por buena práctica y para evitar fugas de memoria (memory leaks),
' cerramos siempre los cursores que abrimos hacia la base de datos local. ' cerramos siempre los cursores que abrimos hacia la base de datos local.
c.Close c.Close

View File

@@ -564,7 +564,7 @@ Private Sub b_terminar1_Click
' ' Asumimos que el índice 0 es el encabezado de la promoción (estaPromo) y no tiene bonificación de producto. ' ' Asumimos que el índice 0 es el encabezado de la promoción (estaPromo) y no tiene bonificación de producto.
If t > 0 Then If t > 0 Then
Private bonificacion_monto As String = ts.traeMontoBonificacion(idProdFijo, prodsPrecio, estaPromo) Private bonificacion_monto As String = ts.traeMontoBonificacion(idProdFijo, prodsPrecio, estaPromo, "b_terminar1_Click")
Log(bonificacion_monto) Log(bonificacion_monto)
Log("elMontoTSDeLaVenta=" & elMontoTSDeLaVenta) Log("elMontoTSDeLaVenta=" & elMontoTSDeLaVenta)
Log($"${elMontoTSDeLaVenta} + (${bonificacion_monto} * ${cantProdFijo})"$) Log($"${elMontoTSDeLaVenta} + (${bonificacion_monto} * ${cantProdFijo})"$)
@@ -578,8 +578,8 @@ Private Sub b_terminar1_Click
Private pn As String = Subs.traeProdNombre(prodsIds2.Get(t)) Private pn As String = Subs.traeProdNombre(prodsIds2.Get(t))
Subs.guardaProductoSinGestion(estaPromo, prodsPrecios2.Get(t), prodsCants2.Get(t), pn, prodsIds2.Get(t), Subs.traeCliente, Subs.traeFecha, Subs.traeUsuarioDeBD, Subs.traeRuta, 0, Starter.tipov) Subs.guardaProductoSinGestion(estaPromo, prodsPrecios2.Get(t), prodsCants2.Get(t), pn, prodsIds2.Get(t), Subs.traeCliente, Subs.traeFecha, Subs.traeUsuarioDeBD, Subs.traeRuta, 0, Starter.tipov)
' Traemos el monto de las bonificacionos a guardar. -- Trade Spending ' Traemos el monto de las bonificacionos a guardar. -- Trade Spending
Log("Monto Bonificacion -->> " & ts.traeMontoBonificacion(prodsIds2.Get(t), prodsPrecios2.Get(t), estaPromo)) Log("Monto Bonificacion -->> " & ts.traeMontoBonificacion(prodsIds2.Get(t), prodsPrecios2.Get(t), estaPromo, "LOG_b_terminar1_Click2"))
elMontoTSDeLaVenta = elMontoTSDeLaVenta + (ts.traeMontoBonificacion(prodsIds2.Get(t), prodsPrecios2.Get(t), estaPromo) * prodsCants2.Get(t)) elMontoTSDeLaVenta = elMontoTSDeLaVenta + (ts.traeMontoBonificacion(prodsIds2.Get(t), prodsPrecios2.Get(t), estaPromo, "b_terminar1_Click3") * prodsCants2.Get(t))
Log("Acumulado: " & elMontoTSDeLaVenta) Log("Acumulado: " & elMontoTSDeLaVenta)
Next Next
ts.modTrendSpending("RESTA", "BONIFICACIONES", elMontoTSDeLaVenta) ts.modTrendSpending("RESTA", "BONIFICACIONES", elMontoTSDeLaVenta)
@@ -606,7 +606,7 @@ Private Sub b_continuar_Click
' ' Asumimos que el índice 0 es el encabezado de la promoción (estaPromo) y no tiene bonificación de producto. ' ' Asumimos que el índice 0 es el encabezado de la promoción (estaPromo) y no tiene bonificación de producto.
If t > 0 Then If t > 0 Then
Private bonificacion_monto As String = ts.traeMontoBonificacion(idProdFijo, prodsPrecio, estaPromo) Private bonificacion_monto As String = ts.traeMontoBonificacion(idProdFijo, prodsPrecio, estaPromo, "b_continuar_Click")
Log(bonificacion_monto) Log(bonificacion_monto)
Log("elMontoTSDeLaVenta=" & elMontoTSDeLaVenta) Log("elMontoTSDeLaVenta=" & elMontoTSDeLaVenta)
Log($"${elMontoTSDeLaVenta} + (${bonificacion_monto} * ${cantProdFijo})"$) Log($"${elMontoTSDeLaVenta} + (${bonificacion_monto} * ${cantProdFijo})"$)
@@ -620,8 +620,8 @@ Private Sub b_continuar_Click
Private pn As String = Subs.traeProdNombre(prodsIds2.Get(t)) Private pn As String = Subs.traeProdNombre(prodsIds2.Get(t))
Subs.guardaProductoSinGestion(estaPromo, prodsPrecios2.Get(t), prodsCants2.Get(t), pn, prodsIds2.Get(t), Subs.traeCliente, Subs.traeFecha, Subs.traeUsuarioDeBD, Subs.traeRuta, 0, Starter.tipov) Subs.guardaProductoSinGestion(estaPromo, prodsPrecios2.Get(t), prodsCants2.Get(t), pn, prodsIds2.Get(t), Subs.traeCliente, Subs.traeFecha, Subs.traeUsuarioDeBD, Subs.traeRuta, 0, Starter.tipov)
' Traemos el monto de las bonificacionos a guardar. -- Trade Spending ' Traemos el monto de las bonificacionos a guardar. -- Trade Spending
Log("Monto Bonificacion -->> " & ts.traeMontoBonificacion(prodsIds2.Get(t), prodsPrecios2.Get(t), estaPromo)) Log("Monto Bonificacion -->> " & ts.traeMontoBonificacion(prodsIds2.Get(t), prodsPrecios2.Get(t), estaPromo, "LOG_b_continuar_Click2"))
elMontoTSDeLaVenta = elMontoTSDeLaVenta + (ts.traeMontoBonificacion(prodsIds2.Get(t), prodsPrecios2.Get(t), estaPromo) * prodsCants2.Get(t)) elMontoTSDeLaVenta = elMontoTSDeLaVenta + (ts.traeMontoBonificacion(prodsIds2.Get(t), prodsPrecios2.Get(t), estaPromo, "b_continuar_Click3") * prodsCants2.Get(t))
Log("Acumulado: " & elMontoTSDeLaVenta) Log("Acumulado: " & elMontoTSDeLaVenta)
Next Next
ts.modTrendSpending("RESTA", "BONIFICACIONES", elMontoTSDeLaVenta) ts.modTrendSpending("RESTA", "BONIFICACIONES", elMontoTSDeLaVenta)

View File

@@ -347,7 +347,7 @@ Sub traeBonificacionesMaximas(tipo As String, clienteId As String, id As String,
If thisLog Then LogColor($" ============ INICIA BONIFICACIONES MAXIMAS (${id}) ========"$, Colors.RGB(0,197,110)) If thisLog Then LogColor($" ============ INICIA BONIFICACIONES MAXIMAS (${id}) ========"$, Colors.RGB(0,197,110))
If thisLog Then LogColor($" Presupuesto: ${TS_BONIFICACIONES(0)} - Acumulado ayer: ${TS_BONIFICACIONES(1)} - Hoy: ${traeAcumuladoHoyTS("bonificaciones")}"$, Colors.Magenta) If thisLog Then LogColor($" Presupuesto: ${TS_BONIFICACIONES(0)} - Acumulado ayer: ${TS_BONIFICACIONES(1)} - Hoy: ${traeAcumuladoHoyTS("bonificaciones")}"$, Colors.Magenta)
If tipo.ToUpperCase = "BONIFICACIONES" Then If tipo.ToUpperCase = "BONIFICACIONES" Then
tsMonto = NumberFormat2(traeMontoBonificacion(id, elPrecioVenta, promoId), 1, 2, 2, False) tsMonto = NumberFormat2(traeMontoBonificacion(id, elPrecioVenta, promoId, "traeBonificacionesMaximas"), 1, 2, 2, False)
tsRestantes = (TS_BONIFICACIONES(0) - TS_BONIFICACIONES(1) - traeAcumuladoHoyTS("bonificaciones")) ' Traemos monto restante de Trend Spending para bonificaciones. tsRestantes = (TS_BONIFICACIONES(0) - TS_BONIFICACIONES(1) - traeAcumuladoHoyTS("bonificaciones")) ' Traemos monto restante de Trend Spending para bonificaciones.
Log($" PresupuestoBonifs: ${TS_BONIFICACIONES(0)}, AcumuladoBonifs: ${TS_BONIFICACIONES(1)}, traeAcumuladoHoyTS('bonificaciones'): ${traeAcumuladoHoyTS("bonificaciones")}"$) Log($" PresupuestoBonifs: ${TS_BONIFICACIONES(0)}, AcumuladoBonifs: ${TS_BONIFICACIONES(1)}, traeAcumuladoHoyTS('bonificaciones'): ${traeAcumuladoHoyTS("bonificaciones")}"$)
' Log($" ${TS_BONIFICACIONES(0)} - ${TS_BONIFICACIONES(1)} - ${traeAcumuladoHoyTS("bonificaciones")}"$) ' Log($" ${TS_BONIFICACIONES(0)} - ${TS_BONIFICACIONES(1)} - ${traeAcumuladoHoyTS("bonificaciones")}"$)
@@ -369,11 +369,11 @@ End Sub
' Trae el monto de la bonificacion, que es el precio original MENOS el precio de venta con descuento. ' Trae el monto de la bonificacion, que es el precio original MENOS el precio de venta con descuento.
' - Si CAT_DP_PRECIOB es 1, la bonificacion es: Precio original - precio de venta. ' - Si CAT_DP_PRECIOB es 1, la bonificacion es: Precio original - precio de venta.
' - Si CAT_DP_PRECIOB es 0, la bonificacion es: Precio original. ' - Si CAT_DP_PRECIOB es 0, la bonificacion es: .
Sub traeMontoBonificacion(id As String, precio As String, promoId As String) As String Sub traeMontoBonificacion(id As String, precio As String, promoId As String, parent As String) As String
Private thisLog As Boolean = True Private thisLog As Boolean = True
If thisLog Then LogColor($" ============ INICIA MONTO BONIFICACION (${id}) ========"$, Colors.RGB(151,0,171)) If thisLog Then LogColor($" ============ INICIA MONTO BONIFICACION (${id}) ========"$, Colors.RGB(151,0,171))
If thisLog Then LogColor($" ###### ${promoId}, ${precio}, ${id}"$, Colors.Magenta) If thisLog Then LogColor($" ###### ${id}, ${precio}, ${promoId}, ${parent}"$, Colors.Magenta)
Private tsMonto As String = 0 Private tsMonto As String = 0
Private re As Cursor = Starter.skmt.ExecQuery($"select cat_gp_id from cat_gunaprod2 where (cat_gp_tipo like 'REGALO%' or cat_gp_tipo like 'EXHIBIDOR%') and cat_gp_id = '${id}'"$) ' Revisamos si el producto es regalo o exhibidor. Private re As Cursor = Starter.skmt.ExecQuery($"select cat_gp_id from cat_gunaprod2 where (cat_gp_tipo like 'REGALO%' or cat_gp_tipo like 'EXHIBIDOR%') and cat_gp_id = '${id}'"$) ' Revisamos si el producto es regalo o exhibidor.
If re.RowCount = 0 Then' No es regalo ni exhibidor. If re.RowCount = 0 Then' No es regalo ni exhibidor.
@@ -382,6 +382,7 @@ Sub traeMontoBonificacion(id As String, precio As String, promoId As String) As
If thisLog Then Log($" Rowcount DP y CGP2: ${c.RowCount}"$) If thisLog Then Log($" Rowcount DP y CGP2: ${c.RowCount}"$)
If c.RowCount > 0 Then If c.RowCount > 0 Then
c.Position = 0 c.Position = 0
LogColor($"Precio original:${c.GetString("CAT_GP_PRECIO")} - Precio Venta:${c.GetString("CAT_DP_PRECIO")}"$, Colors.Blue)
If c.GetInt("CAT_DP_PRECIOB") = 1 Or (c.GetInt("CAT_DP_PRECIOB") = 0 And c.GetString("CAT_GP_PRECIO") = c.GetString("CAT_DP_PRECIO")) Then If c.GetInt("CAT_DP_PRECIOB") = 1 Or (c.GetInt("CAT_DP_PRECIOB") = 0 And c.GetString("CAT_GP_PRECIO") = c.GetString("CAT_DP_PRECIO")) Then
tsMonto = c.GetString("CAT_GP_PRECIO") - c.GetString("CAT_DP_PRECIO") ' Precio original - precio de venta. tsMonto = c.GetString("CAT_GP_PRECIO") - c.GetString("CAT_DP_PRECIO") ' Precio original - precio de venta.
Else Else
@@ -404,8 +405,9 @@ End Sub
' se agoto el presupuesto. ' se agoto el presupuesto.
' Aunque si hay suficiente para mostrar algunas promos ... pues que si las muestre. ' Aunque si hay suficiente para mostrar algunas promos ... pues que si las muestre.
Sub maxPromosPorProdsVariables(idProdsVariables As List, promo As String)As Int Sub maxPromosPorProdsVariables(idProdsVariables As List, promo As String)As Int
Private logger As Boolean = False Private logger As Boolean = True
Private Maxs As Int = 10000000 Private Maxs As Int = 10000000
Private elPrecio As String = 0
Private prodsVariablesXPresupuestoBonificaciones As List Private prodsVariablesXPresupuestoBonificaciones As List
Private prodsVariablesRequeridos As Int = traeProdsVariablesRequeridos(promo) Private prodsVariablesRequeridos As Int = traeProdsVariablesRequeridos(promo)
prodsVariablesXPresupuestoBonificaciones.Initialize prodsVariablesXPresupuestoBonificaciones.Initialize
@@ -413,8 +415,14 @@ Sub maxPromosPorProdsVariables(idProdsVariables As List, promo As String)As Int
For i = 0 To idProdsVariables.Size - 1 'Obtenemos total de productos variables disponibes. For i = 0 To idProdsVariables.Size - 1 'Obtenemos total de productos variables disponibes.
If logger Then LogColor($"=>> prodVariable ${i} : ${idProdsVariables.Get(i)}, ${Subs.traeProdNombre(idProdsVariables.Get(i))} <<=="$, Colors.blue) If logger Then LogColor($"=>> prodVariable ${i} : ${idProdsVariables.Get(i)}, ${Subs.traeProdNombre(idProdsVariables.Get(i))} <<=="$, Colors.blue)
' Log($"Este invDisponible: ${invDispParaPromo.Get(idProdsVariables.Get(i))}"$) ' Log($"Este invDisponible: ${invDispParaPromo.Get(idProdsVariables.Get(i))}"$)
If logger Then Log(">> Monto Bonificacion: " & traeMontoBonificacion(idProdsVariables.Get(i), 1, promo)) ' If logger Then Log(">> Monto Bonificacion: " & traeMontoBonificacion(idProdsVariables.Get(i), 1, promo))
Private maxProds As Int = traeBonificacionesMaximas("bonificaciones", traeCliente, idProdsVariables.Get(i), prodsVariablesRequeridos, 1, promo) Private ep As Cursor = Starter.skmt.ExecQuery($"select cat_dp_precio from cat_detalles_paq where cat_dp_id = '${promo}' and cat_dp_idprod = '${idProdsVariables.Get(i)}'"$)
If ep.RowCount > 0 Then
ep.Position = 0
Log("=========>>>> " & ep.GetString("CAT_DP_PRECIO"))
elPrecio = ep.GetString("CAT_DP_PRECIO")
End If
Private maxProds As Int = traeBonificacionesMaximas("bonificaciones", traeCliente, idProdsVariables.Get(i), prodsVariablesRequeridos, elPrecio, promo)
prodsVariablesXPresupuestoBonificaciones.Add(maxProds) prodsVariablesXPresupuestoBonificaciones.Add(maxProds)
Next Next
prodsVariablesXPresupuestoBonificaciones.Sort(True) prodsVariablesXPresupuestoBonificaciones.Sort(True)

View File

@@ -918,7 +918,7 @@ Version=12.8
#Region Project Attributes #Region Project Attributes
#ApplicationLabel: Kelloggs Venta #ApplicationLabel: Kelloggs Venta
#VersionCode: 3000 #VersionCode: 3000
#VersionName: 6.02.03 #VersionName: 6.03.24
#SupportedOrientations: portrait #SupportedOrientations: portrait
#CanInstallToExternalStorage: False #CanInstallToExternalStorage: False
#BridgeLogger:true #BridgeLogger:true

View File

@@ -76,7 +76,7 @@ ModuleClosedNodes12=
ModuleClosedNodes13=42 ModuleClosedNodes13=42
ModuleClosedNodes14= ModuleClosedNodes14=
ModuleClosedNodes15= ModuleClosedNodes15=
ModuleClosedNodes16=1,2,7,8,9 ModuleClosedNodes16=2,7,8,9
ModuleClosedNodes17= ModuleClosedNodes17=
ModuleClosedNodes18= ModuleClosedNodes18=
ModuleClosedNodes19= ModuleClosedNodes19=
@@ -94,15 +94,15 @@ ModuleClosedNodes29=
ModuleClosedNodes3= ModuleClosedNodes3=
ModuleClosedNodes30=3 ModuleClosedNodes30=3
ModuleClosedNodes31= ModuleClosedNodes31=
ModuleClosedNodes32= ModuleClosedNodes32=2
ModuleClosedNodes33= ModuleClosedNodes33=
ModuleClosedNodes34= ModuleClosedNodes34=
ModuleClosedNodes4=1,128 ModuleClosedNodes4=1,3
ModuleClosedNodes5= ModuleClosedNodes5=
ModuleClosedNodes6= ModuleClosedNodes6=
ModuleClosedNodes7= ModuleClosedNodes7=
ModuleClosedNodes8= ModuleClosedNodes8=
ModuleClosedNodes9= ModuleClosedNodes9=
NavigationStack=C_Cliente,JobDone,4283,0,C_Principal,enviaPedidoBatch0,3517,0,C_Principal,SUBIR_INFO_PEDIDO,3519,0,C_Principal,enviaPedidoBatch,3619,0,C_Cliente,Guardar_Click,1084,0,C_Cliente,mandaPendientes,1099,0,C_TrendSpending,traeInfoTrendSpending,75,0,C_Principal,JobDone,2243,0,Diseñador Visual,principal.bal,-100,1,C_Principal,cargar_Click,1030,0,C_Principal,B4XPage_Appear,555,0 NavigationStack=Starter,Application_Error,120,0,Starter,Service_Start,97,0,Starter,Service_Create,88,0,C_Cliente,b_inicioFinVenta_Click,4426,0,C_Cliente,mandaPendientes,1100,0,C_Principal,enviaPedido,3731,0,C_Cliente,Guardar_Click,1081,0,C_Cliente,Subir_Pedido_Con_Integridad,4501,0,C_Principal,SUBIR_INFO_PEDIDO,3519,0,C_Principal,enviaPedidoBatch,3578,6,C_Principal,JobDone,1878,0
SelectedBuild=0 SelectedBuild=0
VisibleModules=32,1,13,4,33,16,34,14,15,18 VisibleModules=32,1,13,4,33,16,34,14,15,24

View File

@@ -86,9 +86,9 @@ Sub Service_Create
reqManager.Initialize(Me, DBReqServer) 'Inicializamos reqManager. reqManager.Initialize(Me, DBReqServer) 'Inicializamos reqManager.
If Logger Then Log($"Starter reqManager server: ${DBReqServer}"$) If Logger Then Log($"Starter reqManager server: ${DBReqServer}"$)
'Para los Logs 'Para los Logs
#if RELEASE ' #if RELEASE
logcat.LogCatStart(Array As String("-v","raw","*:F","B4A:v"), "logcat") logcat.LogCatStart(Array As String("-v","raw","*:F","B4A:v"), "logcat")
#end if ' #end if
logs.Initialize logs.Initialize
sesion.Initialize sesion.Initialize
End Sub End Sub
@@ -124,7 +124,7 @@ Sub Application_Error (Error As Exception, StackTrace As String) As Boolean
logs.Append(StackTrace) logs.Append(StackTrace)
Subs.revisaBD Subs.revisaBD
LogColor(logs, Colors.blue) LogColor(logs, Colors.blue)
errorLog.ExecNonQuery($"INSERT INTO errores(fecha, error) VALUES ('${Subs.fechaKMT(DateTime.now)}', '${logs}')"$) skmt.ExecNonQuery($"INSERT INTO errores(fecha, error) VALUES ('${Subs.fechaKMT(DateTime.now)}', '${logs}')"$)
LogColor("insertamos Error", Colors.red) LogColor("insertamos Error", Colors.red)
StartActivity(errorManager) StartActivity(errorManager)
Return True Return True

View File

@@ -975,7 +975,7 @@ Sub actualizaProducto(cedis As String, costoU As String, cant As String, nombre
Private antCant As Int = 0 Private antCant As Int = 0
If IsNumber(c.GetInt("PE_CANT")) Then antCant=c.GetInt("PE_CANT") If IsNumber(c.GetInt("PE_CANT")) Then antCant=c.GetInt("PE_CANT")
Private difCant As Int = cant - antCant Private difCant As Int = cant - antCant
Starter.skmt.ExecNonQuery($"update pedido set pe_cant = ${cant}, pe_costou = ${costoU}, pe_costo_tot = ${NumberFormat2((cant*c.GetString("PE_COSTOU")), 1, 2, 2, False)}, pe_tipo = '${tipoVenta}' where pe_cedis = '${cedis}' and pe_proid = '${prodId}' and pe_cliente = '${clienteId}' "$) Starter.skmt.ExecNonQuery($"update pedido set pe_cant = ${cant}, pe_costou = ${costoU}, pe_costo_tot = ${NumberFormat2((cant*c.GetString("PE_COSTOU")), 1, 2, 2, False)}, pe_tipo = '${tipoVenta}', pe_enviado = 0 where pe_cedis = '${cedis}' and pe_proid = '${prodId}' and pe_cliente = '${clienteId}' "$)
If cedis <> "DUR" Then Starter.skmt.ExecNonQuery($"update ${traeTablaProds(tipoVenta)} set cat_gp_almacen = cat_gp_almacen - (${difCant}) where cat_gp_id = '${prodId}' "$) If cedis <> "DUR" Then Starter.skmt.ExecNonQuery($"update ${traeTablaProds(tipoVenta)} set cat_gp_almacen = cat_gp_almacen - (${difCant}) where cat_gp_id = '${prodId}' "$)
If cant = 0 Then If cant = 0 Then
LogColor($"BORRAMOS PRODUCTO - ${prodId}"$, Colors.Red) LogColor($"BORRAMOS PRODUCTO - ${prodId}"$, Colors.Red)
@@ -1219,7 +1219,7 @@ Sub traeMaxPromos(pm As Map) As Int
' If thisLog Then LogColor("==== Historico: "&pm.Get("historico"), Colors.Red) ' If thisLog Then LogColor("==== Historico: "&pm.Get("historico"), Colors.Red)
' Log("### PRODS VARIABLES: " & pm.Get("prodsVariables")) ' Log("### PRODS VARIABLES: " & pm.Get("prodsVariables"))
Private maxPromosXDescPV As String = B4XPages.MainPage.promos.ts.maxPromosPorProdsVariables(pm.Get("prodsVariables"), pm.Get("id")) Private maxPromosXDescPV As String = B4XPages.MainPage.promos.ts.maxPromosPorProdsVariables(pm.Get("prodsVariables"), pm.Get("id"))
' Log("########### " & maxPromosXDescPV) Logcolor("########### maxPromosXDescPV " & maxPromosXDescPV, Colors.Yellow)
' If thisLog Then Log(pm) ' If thisLog Then Log(pm)
maxPromos.Add(maxPromosXDescPV.As(Int)) maxPromos.Add(maxPromosXDescPV.As(Int))
If pm.Get("historico") = "1" Then maxPromos.Add(pm.Get("maxRecurrente")) 'Si hay historico, agregamos maxRecurrente If pm.Get("historico") = "1" Then maxPromos.Add(pm.Get("maxRecurrente")) 'Si hay historico, agregamos maxRecurrente
@@ -1385,7 +1385,7 @@ Sub revisaMaxPromosProdsFijosPorInventario(pm As Map) As Int
t.Add(x(0).As(Int)) 'Solo guardamos la parte del entero de la division. (promos por inventario) t.Add(x(0).As(Int)) 'Solo guardamos la parte del entero de la division. (promos por inventario)
' If thisLog Then LogColor($" ### T: ${t}"$, Colors.Green) 'promos por inventario ' If thisLog Then LogColor($" ### T: ${t}"$, Colors.Green) 'promos por inventario
If thisLog Then LogColor($" >>>>> PROMOS X PRODS FIJOS (${idProdsFijos.Get(p)}): ${x(0)} <<<<<"$, Colors.red) If thisLog Then LogColor($" >>>>> PROMOS X PRODS FIJOS (${idProdsFijos.Get(p)}): ${x(0)} <<<<<"$, Colors.red)
Log($" >>>>> Monto Bonificacion FIJOS (${idProdsFijos.Get(p)}): "$ & B4XPages.MainPage.promos.ts.traeMontoBonificacion(idProdsFijos.Get(p), idProdsFijosPrecios.Get(p), pm.Get("id"))) Log($" >>>>> Monto Bonificacion FIJOS (${idProdsFijos.Get(p)}): "$ & B4XPages.MainPage.promos.ts.traeMontoBonificacion(idProdsFijos.Get(p), idProdsFijosPrecios.Get(p), pm.Get("id"),"LOG_revisaMaxPromosProdsFijosPorInventario"))
If thisLog Then LogColor(" >> MAX PRODS FIJOS X BONIFICACIONES: " & B4XPages.MainPage.promos.ts.traeBonificacionesMaximas("bonificaciones", clienteActual, idProdsFijos.Get(p), prodsFijosPiezas.Get(p), idProdsFijosPrecios.Get(p), pm.Get("id")), Colors.blue) If thisLog Then LogColor(" >> MAX PRODS FIJOS X BONIFICACIONES: " & B4XPages.MainPage.promos.ts.traeBonificacionesMaximas("bonificaciones", clienteActual, idProdsFijos.Get(p), prodsFijosPiezas.Get(p), idProdsFijosPrecios.Get(p), pm.Get("id")), Colors.blue)
t.Add(B4XPages.MainPage.promos.ts.traeBonificacionesMaximas("bonificaciones", clienteActual, idProdsFijos.Get(p), prodsFijosPiezas.Get(p), idProdsFijosPrecios.Get(p), pm.Get("id"))) 'Agregamos las promos disponibles por Trade Spending t.Add(B4XPages.MainPage.promos.ts.traeBonificacionesMaximas("bonificaciones", clienteActual, idProdsFijos.Get(p), prodsFijosPiezas.Get(p), idProdsFijosPrecios.Get(p), pm.Get("id"))) 'Agregamos las promos disponibles por Trade Spending
If thisLog Then LogColor($" ### PROMOS X INV: ${t}"$, Colors.Green) 'promos por inventario If thisLog Then LogColor($" ### PROMOS X INV: ${t}"$, Colors.Green) 'promos por inventario
@@ -1594,7 +1594,7 @@ Sub borraPedidoClienteActual As String
Log("precioConDesc: " & precioConDesc) Log("precioConDesc: " & precioConDesc)
Log(">>>>>>>>>>>>> " & (precioConDesc * thisC.GetString("PE_CANT"))) Log(">>>>>>>>>>>>> " & (precioConDesc * thisC.GetString("PE_CANT")))
If Not(IsNumber(thisC.GetString("PE_CEDIS"))) Then ' Si es promo, entonces es bonificacion. If Not(IsNumber(thisC.GetString("PE_CEDIS"))) Then ' Si es promo, entonces es bonificacion.
Private desc As String = B4XPages.MainPage.promos.ts.traeMontoBonificacion(thisC.GetString("PE_PROID"), thisC.GetString("PE_COSTOU"), thisC.GetString("PE_CEDIS")) Private desc As String = B4XPages.MainPage.promos.ts.traeMontoBonificacion(thisC.GetString("PE_PROID"), thisC.GetString("PE_COSTOU"), thisC.GetString("PE_CEDIS"),"borraPedidoClienteActual")
desc = desc * thisC.GetString("PE_CANT") desc = desc * thisC.GetString("PE_CANT")
Log("Regresamos bonificaciones " & thisC.GetString("PE_PROID") & "=" & desc) Log("Regresamos bonificaciones " & thisC.GetString("PE_PROID") & "=" & desc)
modTrendSpending("suma", "bonificaciones", desc) modTrendSpending("suma", "bonificaciones", desc)