B4A=true Group=Default Group ModulesStructureVersion=1 Type=Class Version=12.2 @EndOfDesignText@ Sub Class_Globals Private Root As B4XView 'ignore Private xui As XUI 'ignore Dim g As GPS Dim clie_id As String Dim sDate,sTime As String Dim usuario As String Dim c As Cursor ' Dim ruta As String Dim b_regresar As Button Dim ListView1 As ListView Dim L_CANT As Label Dim L_TOTAL As Label Dim b_borra As Button Dim Existe As String Dim result As String ' Dim lat_gps, lon_gps As String Dim cuantos As String Dim nombre_prod As String Dim cuantos_pedido As String Private Titulo As Label Private P1 As Panel Private lv2 As ListView Private p_principal As Panel Dim clv_pedido As CustomListView Private p_prods As Panel Private l_prodX As Label Private l_pCant As Label Private et_pCant As EditText Dim bmp As Bitmap Dim etCantHasFocus As Boolean = False Dim totalProds As Int = 0 Dim totalCompra As Int = 0 Dim prodsMap As Map Dim reconstruirPedido As Boolean = False Dim promoABorrar As String Private b_guardar As Button Private b_prodMas As Button Private b_prodMenos As Button 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 g.Initialize("GPS") Root.LoadLayout("historico") b_borra.Visible = False Titulo.Text = "Pedido" End Sub 'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage. Sub B4XPage_Appear Subs.centraPanel(p_principal, Root.Width) ' b_guardar.Visible = False ' Titulo.Left = Round(p_principal.Width/2)-(Titulo.Width/2) L_CANT.Text ="" L_TOTAL.Text="" c=Starter.skmt.ExecQuery("select count(*) as EXISTE from HIST_VENTAS WHERE HVD_CLIENTE IN (Select CUENTA from cuentaa) and HVD_RECHAZO = 0 ") C.Position=0 Existe = C.GetString("EXISTE") C.Close ' c=Starter.skmt.ExecQuery("select distinct hist_ventas.hvd_num_registro, HIST_VENTAS.HVD_CLIENTE, HIST_VENTAS.HVD_PRONOMBRE, HIST_VENTAS.HVD_PROID, HIST_VENTAS.HVD_CANT, HIST_VENTAS2.HVD_CANT as HVD_CANT2, HIST_VENTAS.HVD_COSTO_TOT, HIST_VENTAS.HVD_CODPROMO from HIST_VENTAS inner join HIST_VENTAS2 on HIST_VENTAS.HVD_PROID = HIST_VENTAS2.HVD_PROID and HIST_VENTAS.HVD_CLIENTE = HIST_VENTAS2.HVD_CLIENTE WHERE HIST_VENTAS.HVD_CLIENTE IN (Select CUENTA from cuentaa) and HIST_VENTAS.HVD_RECHAZO = 0 order by HIST_VENTAS.HVD_CODPROMO desc, HIST_VENTAS.HVD_PRONOMBRE asc") c=Starter.skmt.ExecQuery("select hvd_num_registro, HVD_CLIENTE, HVD_PRONOMBRE, HVD_PROID, HVD_CANT, HVD_COSTO_TOT, HVD_CODPROMO from HIST_VENTAS WHERE HVD_CLIENTE IN (Select CUENTA from cuentaa) and HVD_RECHAZO = 0 and hvd_cant > 0 order by HVD_CODPROMO desc, HVD_PRONOMBRE asc") ListView1.Clear clv_pedido.Clear Subs.SetDivider(ListView1, Colors.LightGray, 2) clv_pedido.GetBase.SetLayoutAnimated(100, 0dip, 60dip, Root.Width - 50, Root.Height * 0.62) 'Cambiamos el tamaño y posición de la lista de productos clv_pedido.Base_Resize(clv_pedido.GetBase.Width, clv_pedido.GetBase.Height) 'Cambiamos el tamaño del panel interno de la lista para que ajuste al nuevo tamaño. ' Log("RC1:"&c.RowCount) If c.RowCount>0 Then ' Log("Usamos HV") For i=0 To c.RowCount -1 c.Position=i 'Traemos cantidad de hvd2 Private oc As Cursor = Starter.skmt.ExecQuery($"select HVD_CANT from HIST_VENTAS2 WHERE HVD_CLIENTE IN (Select CUENTA from cuentaa) and hvd_proid = '${c.GetString("HVD_PROID")}' and HVD_NUM_REGISTRO = '${c.GetString("HVD_NUM_REGISTRO")}'"$) Private cant2 As Int = 0 If oc.RowCount > 0 Then oc.Position = 0 cant2 = oc.GetString("HVD_CANT") End If oc.Close Dim label1 As Label label1 = ListView1.TwoLinesLayout.Label label1.TextSize = 12 label1.TextColor = Colors.black Dim label2 As Label label2 = ListView1.TwoLinesLayout.SecondLabel label2.TextSize = 12 label2.TextColor = Colors.black Private bgColor, textColor As Int bgColor = Colors.RGB(177, 200, 249)'azul textColor = Colors.black If c.GetString("HVD_CODPROMO") <> "1" Then ' bgColor = Colors.RGB(255, 212, 163) 'naranja bgColor = Colors.White End If ' Log($"Agregamos prod a lista1 | ${c.GetString("HVD_CANT")} - ${c.GetString("HVD_CANT2")}"$) 'HVD_CANT2 es la original de la orden. ' ListView1.AddTwoLines(c.GetString("HVD_PRONOMBRE"),"Cantidad #"& c.GetString("HVD_CANT")& " SubTotal $"& c.GetString("HVD_COSTO_TOT")) clv_pedido.Add(CreateListItem(c.GetString("HVD_PRONOMBRE"), Subs.traePrecio(c.GetString("HVD_PROID"), c.GetString("HVD_CODPROMO")), c.GetString("HVD_CANT"), 0, clv_pedido.AsView.Width, 50dip, bmp, c.GetString("HVD_PROID"), bgColor, textColor, c.GetString("HVD_CODPROMO"),Subs.traeCliente), c.GetString("HVD_PRONOMBRE")) Next ' cuentaProds("") End If 'Traemos lo vendido Private vc As Cursor = Starter.skmt.ExecQuery("select * from REPARTO where REP_CLIENTE in (select cuenta from cuentaa) and REP_RECHAZO = '0' and REP_CANT > 0 order by REP_PRONOMBRE") Log($"VENTA: ${vc.RowCount}"$) If vc.RowCount > 0 Then ' Log("Usamos REPARTO") ' bgColor = Colors.RGB(248,113,113) textColor = Colors.RGB(0,87,142) For i=0 To vc.RowCount -1 vc.Position = i Private cantCO As Int = 0 'Traemos la cantidad disponible del cliente original Private cco As Cursor = Starter.skmt.ExecQuery($"select * from REPARTO where REP_CLIENTE = '${vc.GetString("REP_CLI_ORIG")}' and REP_CLI_ORIG = '${vc.GetString("REP_CLI_ORIG")}' and REP_PRODID='${vc.GetString("REP_PRODID")}' and REP_RECHAZO = '1' and REP_CANT > 0"$) If cco.RowCount > 0 Then cco.Position = 0 cantCO = cco.GetString("REP_CANT") + vc.GetString("REP_CANT") End If cantCO = Subs.traeCantidadRechazada(vc.GetString("REP_CLI_ORIG"), vc.GetString("REP_PRODID")) ' Log($"${vc.GetString("REP_CLI_ORIG")}, ${vc.GetString("REP_CLIENTE")}, ${vc.GetString("REP_PRODID")}, ${vc.GetString("REP_PRONOMBRE")}, ${vc.GetString("REP_RECHAZO")}, ${vc.GetString("REP_CANT")}, ${vc.GetString("REP_PRECIO")}, ${cantCO}, ${cco.GetString("REP_CANT")}, ${vc.GetString("REP_CANT")}"$) clv_pedido.Add(CreateListItem(vc.GetString("REP_PRONOMBRE"), Subs.traePrecio(vc.GetString("REP_PRODID"), Subs.traeAlmacen), vc.GetString("REP_CANT"), cantCO, clv_pedido.AsView.Width, 50dip, bmp, vc.GetString("REP_PRODID"), bgColor, textColor, 1, vc.GetString("REP_CLI_ORIG")), vc.GetString("REP_PRONOMBRE")) Next cco.Close vc.Close End If If Existe <> 0 Then c = Starter.skmt.ExecQuery("select SUM(HVD_CANT) AS PC_NOART, SUM(HVD_COSTO_TOT) AS PC_MONTO from HIST_VENTAS where HVD_CLIENTE in (Select CUENTA from cuentaa) and HVD_RECHAZO = 0 ") C.Position=0 L_CANT.Text = c.GetString("PC_NOART") L_TOTAL.Text = Round2(c.GetString("PC_MONTO"), 2) End If c=Starter.skmt.ExecQuery("select count(*) as EXISTE from PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") c.Position=0 Existe = C.GetString("EXISTE") c.Close ' c=Starter.skmt.ExecQuery("select PE_PRONOMBRE,PE_COSTO_TOT, PE_CANT FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_PRONOMBRE asc") 'ListView1.Clear Subs.SetDivider(ListView1, Colors.LightGray, 2) ' Log("RC2:" & c.RowCount) ' If c.RowCount > 0 Then ' For i=0 To c.RowCount -1 ' c.Position=i ' Dim label1 As Label ' label1 = ListView1.TwoLinesLayout.Label ' label1.TextSize = 12 ' label1.TextColor = Colors.White ' Dim label2 As Label ' label2 = ListView1.TwoLinesLayout.SecondLabel ' label2.TextSize = 12 ' label2.TextColor = Colors.White ' Log("Agegamos prod a lista 2") ' ListView1.AddTwoLines("VENTA" & c.GetString("PE_PRONOMBRE"),"Cantidad #"& c.GetString("PE_CANT")& " SubTotal $"& c.GetString("PE_COSTO_TOT")) ' 'folio = c.GetString("PE_FOLIO") ' Next ' End If If Existe <> 0 Then c=Starter.skmt.ExecQuery("select SUM(PE_CANT) AS PE_CANT, SUM(PE_COSTO_TOT) AS PE_COSTO_TOT FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") C.Position=0 L_CANT.Text = L_CANT.Text + c.GetString("PE_CANT") L_TOTAL.Text = Round2(L_TOTAL.Text + c.GetString("PE_COSTO_TOT"), 2) End If 'la_no_ird.Text = c.GetString("PR_CF_SALDO_ACORT") ' cuentaProds("") Private cym As Map = Subs.traemosCantYMonto(clv_pedido) L_CANT.Text = cym.Get("cantidad") L_TOTAL.Text = Round2(cym.Get("monto"), 2) End Sub Sub GPS_LocationChanged (Location1 As Location) ' lat_gps=Location1.ConvertToSeconds(Location1.Latitude) ' lon_gps=Location1.ConvertToSeconds(Location1.Longitude) End Sub Sub b_regresar_Click B4XPages.ShowPage("Cliente") End Sub Private Sub B4XPage_CloseRequest As ResumableSub ' BACK key pressed ' I want to capture the key here so I return True B4XPages.ShowPage("Cliente") ' Returning False signals the system to handle the key Return False End Sub Sub ListView1_ItemLongClick (Position As Int, Value As Object) 'BORRAR ' nombre_prod = Value ' result = Msgbox2("Seguro que desa borrar este articulo?","Borrar Articulo", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore ' If result = DialogResponse.POSITIVE Then ' c=Starter.skmt.ExecQuery2("select HVD_CANT FROM hist_ventas where HVD_pronombre = ? and HVD_cliente in (Select CUENTA from cuentaa) and HVD_RECHAZO = 0 ", Array As String(Value)) ' c.Position=0 ' If c.GetString("HVD_CANT") > 1 Then ' b_regresar.Visible =False ' b_borra.Visible=False ' P1.Visible =True ' cuantos_pedido = c.GetString("HVD_CANT") ' lv2.Clear ' lv2.SingleLineLayout.Label.TextColor = Colors.Black ' For i=1 To c.GetString("HVD_CANT") ' lv2.AddSingleLine(i) ' Next ' Else ' ' skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = cat_gp_almacen + ? where cat_gp_nombre = ?", Array As Object(c.GetString("HVD_CANT"),Value)) ' c.Close ' Starter.skmt.ExecNonQuery2("insert into reparto(REP_CLIENTE, REP_PRONOMBRE, REP_CANT, REP_COSTO_TOT,REP_FECHA, REP_CLI_ORIG) select HVD_CLIENTE, HVD_PRONOMBRE, HVD_CANT, HVD_COSTO_TOT, HVD_FECHA, HVD_CLIENTE from hist_ventas where HVD_PRONOMBRE = ? and HVD_cliente in (Select CUENTA from cuentaa) ", Array As String(Value)) ' c=Starter.skmt.ExecQuery2("select HVD_CANT FROM hist_ventas where HVD_pronombre = ? and HVD_cliente in (Select CUENTA from cuentaa) and HVD_RECHAZO = 0 ", Array As String(Value)) ' c.Position=0 ' Starter.skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = cat_gp_almacen + ? where cat_gp_nombre = ?", Array As Object(c.GetString("HVD_CANT"),Value)) ' c.Close ' ' 'skmt.ExecNonQuery2("delete FROM HIST_VENTAS WHERE HVD_PRONOMBRE = ? and HVD_cliente in (Select CUENTA from cuentaa) ", Array As String(Value)) ' ' se cambia por update para no borrarlo y tener todos los registros. ' Starter.skmt.ExecNonQuery2("update HIST_VENTAS set HVD_RECHAZO = 1 WHERE HVD_PRONOMBRE = ? and HVD_cliente in (Select CUENTA from cuentaa) ", Array As String(Value)) ' ' 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") ' 'quitar esta mamada no es ahi ' Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 3 where CAT_CL_CODIGO In (select cuenta from cuentaa)") ' B4XPage_Appear ' End If ' ' End If End Sub Sub lv2_ItemClick (Position As Int, Value As Object) 'BORRAR ' ' If Value = "Todos" Then ' ' cuantos = c.GetString("HVD_CANT") ' 'Else ' cuantos = Value ' ' End If ' If cuantos = cuantos_pedido Then ' 'Starter.skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = cat_gp_almacen + ? where cat_gp_nombre = ?", Array As Object(c.GetString("HVD_CANT"),nombre_prod)) ' c.Close ' Starter.skmt.ExecNonQuery2("insert into reparto(REP_CLIENTE, REP_PRONOMBRE, REP_CANT, REP_COSTO_TOT, REP_FECHA, REP_CLI_ORIG) select HVD_CLIENTE, HVD_PRONOMBRE, HVD_CANT, HVD_COSTO_TOT, HVD_FECHA, HVD_CLIENTE from hist_ventas where HVD_PRONOMBRE = ? and HVD_cliente in (Select CUENTA from cuentaa) ", Array As String(nombre_prod)) ' c=Starter.skmt.ExecQuery2("select HVD_CANT FROM hist_ventas where HVD_pronombre = ? and HVD_cliente in (Select CUENTA from cuentaa) and HVD_RECHAZO = 0 ", Array As String(nombre_prod)) ' c.Position=0 ' Starter.skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = cat_gp_almacen + ? where cat_gp_nombre = ?", Array As Object(c.GetString("HVD_CANT"),nombre_prod)) ' c.Close ' 'Starter.skmt.ExecNonQuery2("delete FROM HIST_VENTAS WHERE HVD_PRONOMBRE = ? and HVD_cliente in (Select CUENTA from cuentaa) ", Array As String(Value)) ' ' se cambia por update para no borrarlo y tener todos los registros. ' Starter.skmt.ExecNonQuery2("update HIST_VENTAS set HVD_RECHAZO = 1 WHERE HVD_PRONOMBRE = ? and HVD_cliente in (Select CUENTA from cuentaa) and HVD_RECHAZO = 0 ", Array As String(Value)) ' 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") ' 'quitar esta m*m*d* no es ahi ' Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 3 where CAT_CL_CODIGO In (select cuenta from cuentaa)") ' Starter.skmt.ExecNonQuery2("update hist_Ventas set HVD_RECHAZO = 1, HVD_PARCIAL = 0, HVD_CANT = HVD_CANT - ? where HVD_pronombre = ? and HVD_cliente in (Select CUENTA from cuentaa) and HVD_RECHAZO = 0 ", Array As Object(cuantos, nombre_prod)) ' b_regresar.Visible =True ' b_borra.Visible=True ' P1.Visible =False ' B4XPage_Appear ' Else ' ' skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = cat_gp_almacen + ? where cat_gp_nombre = ?", Array As Object(cuantos,nombre_prod)) ' c.Close ' ' 'modificar tambien esto ' 'Modificaciones para que solo quite una parte. ' Starter.skmt.ExecNonQuery2("insert into reparto(REP_CLIENTE, REP_PRONOMBRE, REP_CANT, REP_COSTO_TOT, REP_FECHA, REP_CLI_ORIG) select HVD_CLIENTE, HVD_PRONOMBRE, ?, ? * (HVD_COSTO_TOT/?), HVD_FECHA, HVD_CLIENTE from hist_ventas where HVD_PRONOMBRE = ? and HVD_cliente in (Select CUENTA from cuentaa) ", Array As Object(cuantos,cuantos,cuantos_pedido, nombre_prod)) ' Starter.skmt.ExecNonQuery2("insert into hist_ventas(HVD_CLIENTE,HVD_PRONOMBRE,HVD_CANT,HVD_COSTO_TOT, HVD_FECHA, HVD_CODPROMO, HVD_PROID,HVD_NUM_TICKET, HVD_NUM_REGISTRO, HVD_RECHAZO, HVD_ESTATUS, HVD_PARCIAL) select HVD_CLIENTE,HVD_PRONOMBRE,?,HVD_COSTO_TOT, HVD_FECHA, HVD_CODPROMO, HVD_PROID,HVD_NUM_TICKET, HVD_NUM_REGISTRO, 1, HVD_ESTATUS, 1 from hist_ventas where HVD_PRONOMBRE = ? and HVD_cliente in (Select CUENTA from cuentaa) ", Array As Object(cuantos, nombre_prod)) ' Starter.skmt.ExecNonQuery2("update hist_Ventas set HVD_RECHAZO = 0, HVD_PARCIAL = 1, HVD_CANT = HVD_CANT - ? where HVD_pronombre = ? and HVD_cliente in (Select CUENTA from cuentaa) and HVD_RECHAZO = 0 ", Array As Object(cuantos, nombre_prod)) ' Starter.skmt.ExecNonQuery2("update hist_Ventas set HVD_COSTO_TOT = HVD_CANT * (HVD_COSTO_TOT/?) where HVD_pronombre = ? and HVD_cliente in (Select CUENTA from cuentaa) and HVD_RECHAZO = 0 ", Array As Object(cuantos_pedido, nombre_prod)) ' Starter.skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = cat_gp_almacen + ? where cat_gp_nombre = ?", Array As Object(cuantos,nombre_prod)) ' 'crear nueva tabla para que guarde el resto. '' skmt.ExecNonQuery2("delete FROM HIST_VENTAS WHERE HVD_PRONOMBRE = ? and HVD_cliente in (Select CUENTA from cuentaa) ", Array As String(Value)) ' 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") ' Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 3 where CAT_CL_CODIGO In (select cuenta from cuentaa)") ' B4XPage_Appear ' b_regresar.Visible =True ' b_borra.Visible=True ' P1.Visible =False ' End If End Sub '**************************************************************************** '***************** PARA EL MAS/MENOS ************************************* '**************************************************************************** Sub CreateListItem(Text As String, precioU As String, inv As Int, inv2 As Int, Width As Int, Height As Int, img As Bitmap, prodId As String, bc As Int, tc As Int, promo As String, cliente_original As String) As Panel Dim p As B4XView = xui.CreatePanel("") Private cs As CSBuilder cs.Initialize p.SetLayoutAnimated(0, 0, 0, Width, Height) p.LoadLayout("prodItem") p_prods.Color = bc l_prodX.TextColor = tc precioU = $"$1.2{precioU}"$ l_prodX.Text = Text&CRLF&"Cant: " & inv2 & " $" & precioU If promo <> "1" And precioU = 0 Then l_prodX.Text = cs.Color(Colors.RGB(123,0,0)).append(Text&CRLF&"Cant: " & inv2 & " $" & precioU).PopAll End If l_prodX.Tag = $"ID: ${prodId}${CRLF}${Text}${CRLF}Precio: $$1.2{precioU}${CRLF}Inv: ${inv} pzs"$ ' l_pCant.Text = 0 l_pCant.Tag = Round2(precioU,2)&"|"&inv&"|"&prodId&"|"&promo&"|"&inv2&"|"&cliente_original et_pCant.Tag = Round2(precioU,2)&"|"&inv&"|"&prodId&"|"&promo&"|"&inv2&"|"&cliente_original p_prods.Tag = l_pCant.tag ' Log($"Ponemos la cant en ${inv}"$) l_pCant.Text = inv ' et_pCant.Text = inv ' et_pCant.BringToFront l_pCant.BringToFront et_pCant.SendToBack ' i_prod.Bitmap = img Return p End Sub Sub b_prodMenos_Click etCantHasFocus = False Log("etCantHasFocus=" & etCantHasFocus) LogColor("b_prodMenos_Click", Colors.Magenta) Dim index As Int = clv_pedido.GetItemFromView(Sender) Dim pnl0 As B4XView = clv_pedido.GetPanel(index) Dim pnl As B4XView = pnl0.GetView(0) Dim laCant As B4XView = pnl.GetView(2).GetView(3) ' Log(pnl.GetView(2).GetView(0) & "|" & pnl.GetView(2).GetView(1) & "|" & pnl.GetView(2).GetView(2)) Dim esteTag As List = Regex.Split("\|", laCant.Tag) Log("LC_TEXT:"&laCant.Text&"|PROMO:"&esteTag.Get(3)&"|LC_TAG:"&laCant.Tag&"|ET:"&esteTag) If esteTag.Get(3) <> "1" Then 'Si es PROMO entonces ... Log("ES PROMO") result = Msgbox2("Si se modifica una promoción, la promoción se rompe y solo quedarán los productos sueltos, ¿seguro que desea continuar?","Modificar Promoción", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore If result = DialogResponse.POSITIVE Then 'Quitamos esta promo prodsMap.Remove(esteTag.Get(3)) Starter.skmt.ExecNonQuery($"update HIST_VENTAS set HVD_RECHAZO = 1 WHERE HVD_PROID = '${esteTag.Get(3)}' and HVD_cliente in (Select CUENTA from cuentaa)"$) Starter.skmt.ExecNonQuery($"update HIST_VENTAS set HVD_CODPROMO = '${Subs.traeAlmacen}' WHERE HVD_cliente in (Select CUENTA from cuentaa) AND HVD_CODPROMO = '${esteTag.Get(3)}'"$) LogColor(prodsMap, Colors.red) reconstruirPedido = True promoABorrar = esteTag.Get(3) B4XPage_Appear End If Else If laCant.Text = "" Then laCant.Text = 0 laCant.Text = $"$1.0{laCant.Text-1}"$ If laCant.Text < 0 Then laCant.Text = 0 Starter.skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = cat_gp_almacen + 1 where cat_gp_id = ?", Array As Object(esteTag.Get(2))) End If Dim preciou As Float = esteTag.Get(0)/esteTag.Get(1) Log("PU: " & preciou) ' LogColor("estamos aqui mmenos " & laCant.Text& " , " & (preciou * laCant.Text),Colors.Green ) ' If L_CANT.Text - 1 >= 0 Then ' L_CANT.Text = L_CANT.Text - 1 ' End If ' b_guardar.Visible = True Subs.prodRechazo(esteTag.Get(5), esteTag.Get(2)) Private cym As Map = Subs.traemosCantYMonto(clv_pedido) L_CANT.Text = cym.Get("cantidad") L_TOTAL.Text = Round2(cym.Get("monto"), 2) ' cuentaProds("-") End Sub Sub b_prodMas_Click etCantHasFocus = False ' Log("etCantHasFocus=" & etCantHasFocus) LogColor("b_prodMas_Click", Colors.Magenta) Dim index As Int = clv_pedido.GetItemFromView(Sender) Dim pnl0 As B4XView = clv_pedido.GetPanel(index) Dim pnl As B4XView = pnl0.GetView(0) Dim laCant As B4XView = pnl.GetView(2).GetView(3) ' Log(pnl.GetView(2).GetView(1).text&"|"&pnl.GetView(2).GetView(2)&"|"&pnl.GetView(2).GetView(4).text) ' Log($"precio|stock:${laCant.tag}"$) ' Log($"Indice: ${index}, cant:${laCant.Text+1}, precioU: ${laCant.tag}"$) Dim esteTag As List = Regex.Split("\|", laCant.Tag) Log("LC_TEXT:"&laCant.Text&"|LC_TAG:"&laCant.Tag&"|ET:"&esteTag) If laCant.Text = "" Then laCant.Text = 0 Private maxProds as string = esteTag.Get(1) + esteTag.Get(4) 'Prods disponibles + prods comprados LogColor($"++++++++++++++++++++++++++ ${esteTag}"$, Colors.Green) ' Log(esteTag.get(4)) If laCant.Text + 1 <= maxProds Then Log($"NuevaCant = ${laCant.Text + 1}"$) laCant.Text = $"$1.0{laCant.Text + 1}"$ Starter.skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = cat_gp_almacen - 1 where cat_gp_id = ?", Array As Object(esteTag.Get(2))) Subs.prodVenta(esteTag.Get(5), esteTag.Get(2)) Private cym As Map = Subs.traemosCantYMonto(clv_pedido) L_CANT.Text = cym.Get("cantidad") L_TOTAL.Text = Round2(cym.Get("monto"), 2) ' cuentaProds("+") End If ' Dim preciou As Float = esteTag.Get(0)/esteTag.Get(1) ' Log(preciou) ' LogColor("estamos aquii mas " & laCant.Text& " , " & (preciou * laCant.Text) ,Colors.Green ) ' b_guardar.Visible = True ' Log($"Total Prods: ${totalProds}, Total Compra: $$1.2{totalCompra}"$) ' c = Starter.skmt.ExecQuery($"SELECT HVD_CANT FROM HIST_VENTAS2 WHERE HVD_CLIENTE IN (SELECT CUENTA FROM CUENTAA) AND HVD_PROID = '${esteTag.Get(2)}' "$) ' c.Position = 0 ' Dim cantoriginal As String = 0 ' If c.RowCount > 0 Then ' cantoriginal = c.GetString("HVD_CANT") ' End If ' If cantoriginal <= esteTag.Get(1) Then ' L_CANT.Text = L_CANT.Text + 1 ' End If End Sub Sub cuentaProds(accion As String) ' Log("Entramos a cuentaProds") Log("*******************************************************") Private cantRechazada As Int = 0 If Not(reconstruirPedido) Then Log("*********** CUENTAPRODS - NO RECONSTRUIR") prodsMap.Initialize For i = 0 To clv_pedido.GetSize - 1 Private p0 As B4XView = clv_pedido.GetPanel(i) Private p As B4XView = p0.GetView(0) Private cant1 As B4XView = p.GetView(2).GetView(3) If cant1.Text = "" Then cant1.Text = 0 ' totalProds = totalProds + cant1.Text Private esteTag As List = Regex.Split("\|", cant1.Tag) Log("-------------------------------------") Log($"ET: ${esteTag}"$) Private esteProd As String = esteTag.Get(2) Private estaCant As Int = cant1.Text Private estaCantOriginal As Int = esteTag.Get(1) Private esteCliente = Subs.traeCliente Private esteProdNombre = Subs.traeNombre(esteProd) Private esteClienteOriginal As Int = esteTag.Get(5) Private fechaReparto As String = Subs.traeFechaReparto Private maxProds = Subs.traeMaxCantidad(esteTag.Get(5), esteTag.Get(2)) If cant1.Text > maxProds Then cant1.Text = maxProds cantRechazada = esteTag.Get(4) - cant1.Text ' If accion = "-" Then cantRechazada = Subs.traeCantidadRechazada(esteClienteOriginal, esteProd) + 1 ' If accion = "+" Then cantRechazada = Subs.traeCantidadRechazada(esteClienteOriginal, esteProd) - 1 Log($"${Subs.traeCantidadRechazada(esteClienteOriginal, esteProd)}, ${Subs.traeCantidadVendida(esteClienteOriginal, esteProd)}"$) ' LogColor($"cantRechazada = ${esteTag.Get(4)} - ${cant1.Text}"$, Colors.Magenta) LogColor($"cantRechazada = ${cantRechazada}"$, Colors.Magenta) Private estePrecio As String = 0 If Subs.traePrecio(esteProd, 1) <> Null Then estePrecio = Subs.traePrecio(esteProd, Subs.traeAlmacen) * cantRechazada ' LogColor(esteProd & "|" & cant1.Text & "|" & estaCantOriginal & "|" & cantRechazada & "|" & estePrecio, Colors.red) ' LogColor($"cantRechazada=${cantRechazada} | ${esteProdNombre}"$, Colors.Blue) ' Log($"Ponemos HVD_CANT ${esteProd} en ${cant1.text}"$) Starter.skmt.ExecNonQuery2("update HIST_VENTAS set HVD_PARCIAL = 1, HVD_CANT = ? WHERE HVD_PROID = ? and HVD_CLIENTE in (Select CUENTA from cuentaa)", Array As String(cant1.Text ,esteProd)) Private rr As Cursor = Starter.skmt.ExecQuery($"select count(REP_CLIENTE) as hayRechazo from REPARTO where rep_prodid = '${esteProd}' and REP_CLIENTE in (Select CUENTA from cuentaa)"$) rr.Position = 0 ' Log($"HayRechazo=${rr.GetString("hayRechazo")}"$) If rr.GetString("hayRechazo") = 0 Then Log("INSERTAMOS EN REPARTO") Starter.skmt.ExecNonQuery2("insert into reparto(REP_CLIENTE, REP_PRONOMBRE, REP_CANT, REP_COSTO_TOT, REP_FECHA, REP_RECHAZO, REP_PRODID, REP_PRECIO, REP_CLI_ORIG) VALUES (?,?,?,?,?,1,?,?,?) ", Array As String(esteCliente, esteProdNombre, 0, estePrecio, fechaReparto, esteProd, estePrecio, esteCliente)) Starter.skmt.ExecNonQuery2("insert into reparto(REP_CLIENTE, REP_PRONOMBRE, REP_CANT, REP_COSTO_TOT, REP_FECHA, REP_RECHAZO, REP_PRODID, REP_PRECIO, REP_CLI_ORIG) VALUES (?,?,?,?,?,0,?,?,?) ", Array As String(esteCliente, esteProdNombre, cantRechazada, 0, fechaReparto, esteProd, estePrecio, esteCliente)) Else if esteClienteOriginal = "0" Then 'Actualizamos el rechazo en el cliente actual. ' Log($"Actualizamos REP_CANT=${cantRechazada}"$) ' Starter.skmt.ExecNonQuery($"update reparto set REP_CANT = '${cantRechazada}', REP_PRECIO = '${estePrecio}', REP_COSTO_TOT = '${estePrecio * cantRechazada}' where REP_CLIENTE in (Select CUENTA from cuentaa) and REP_CLI_ORIG = '${esteClienteOriginal}' and REP_RECHAZO = 1 and REP_PRODID = '${esteProd}'"$) Else 'Cliente original <> 0 entonces actualizamos el rechazo en el cliente original y NO en el actual. Log($"Actualizamos REP_CANT RECHAZO = ${cantRechazada}"$) ' Starter.skmt.ExecNonQuery($"update reparto set REP_CANT = ${cantRechazada}, REP_PRECIO = '${estePrecio}', REP_COSTO_TOT = '${estePrecio * cantRechazada}' where REP_CLIENTE = '${esteClienteOriginal}' and REP_CLI_ORIG = '${esteClienteOriginal}' and REP_RECHAZO = 1 and REP_PRODID = '${esteProd}'"$) ' Starter.skmt.ExecNonQuery($"update reparto set REP_CANT = '${cant1.Text}', REP_PRECIO = '${estePrecio}', REP_COSTO_TOT = '${estePrecio * cantRechazada}' where REP_CLIENTE in (Select CUENTA from cuentaa) and REP_CLI_ORIG = '${esteClienteOriginal}' and REP_RECHAZO = 0 and REP_PRODID = '${esteProd}'"$) End If If cant1.Text > 0 Then ' totalCompra = totalCompra + (esteTag.get(0) * cant1.text) ' Log($"Cant: ${cant1.Text}, Suma: ${totalCompra}"$) Private m As Map m=CreateMap("cant":cant1.Text, "cant2":esteTag.get(4), "precio":esteTag.get(0), "promo":esteTag.get(3), "nombre":Subs.traeNombre(esteTag.Get(2)), "cli_orig":esteTag.get(5)) ' LogColor("PUT:" & esteTag.Get(2), Colors.Red) prodsMap.Put(esteTag.Get(2), m) End If Log("-------------------------------------") Next End If Private bgColor, textColor As Int If reconstruirPedido Then Log("*********** CUENTAPRODS - SI RECONSTRUIR") Private newPromo, newPrecio As String clv_pedido.Clear Log("Usamos PRODSMAP") For Each pr As String In prodsMap.Keys Private pr1 As Map = prodsMap.Get(pr) Log("PPP: " & pr & "|PromoABorrar=" & promoABorrar & "|" & pr1) bgColor = Colors.RGB(177, 200, 249)'azul textColor = Colors.black newPromo = pr1.Get("promo") newPrecio = pr1.Get("precio") Log("AAA: " & newPromo & "|" & promoABorrar) If newPromo = promoABorrar Then newPromo = 1 newPrecio = Subs.traePrecio(pr, False) * pr1.Get("cant") 'Ponemos precio SIN promo y sacamos el producto de la promo. Starter.skmt.ExecNonQuery($"update HIST_VENTAS set HVD_COSTO_TOT = ${newPrecio}, HVD_CODPROMO = '${Subs.traeAlmacen}' WHERE HVD_PRONOMBRE = '${pr1.Get("nombre")}' and HVD_cliente in (Select CUENTA from cuentaa)"$) LogColor("CAMBIAMOS PROMO: " & newPromo, Colors.Magenta) End If If newPromo <> "1" Then ' bgColor = Colors.RGB(255, 212, 163) 'naranja bgColor = Colors.White End If Log($"CLI: ${pr1.Get("nombre")}, ${newPrecio}, ${pr1.Get("cant")}, ${pr1.Get("cant2")}"$) clv_pedido.Add(CreateListItem(pr1.Get("nombre"), newPrecio, pr1.Get("cant"), pr1.Get("cant2"), clv_pedido.AsView.Width, 50dip, bmp, pr, bgColor, textColor, newPromo, pr1.Get("cli_orig")), pr1.Get("nombre")) reconstruirPedido = False Next promoABorrar = "" End If Log($"Total Prods: ${totalProds}, Total Compra: $$1.2{totalCompra}"$) LogColor("prodsMap=" & prodsMap, Colors.Green) LogColor(prodsMap, Colors.Blue) c = Starter.skmt.ExecQuery($"SELECT sum(HVD_CANT) as CANTIDAD FROM HIST_VENTAS WHERE HVD_CLIENTE IN (SELECT CUENTA FROM CUENTAA)"$) Dim cantidad1 As String = 0 If c.RowCount > 0 Then c.Position = 0 cantidad1 = c.GetString("CANTIDAD") L_CANT.Text = Round(cantidad1) End If c.Close Dim totalfinal As String = 0 For Each pr As String In prodsMap.Keys Private pr1 As Map = prodsMap.Get(pr) ' LogColor(pr,Colors.Red) Dim x As Cursor = Starter.skmt.ExecQuery($"SELECT CAT_GP_PRECIO FROM CAT_GUNAPROD WHERE CAT_GP_ID = '${pr}'"$) c = Starter.skmt.ExecQuery($"SELECT HVD_CANT FROM HIST_VENTAS WHERE HVD_CLIENTE IN (SELECT CUENTA FROM CUENTAA) AND HVD_PROID ='${pr}' "$) Dim cantidady As String = 0 If c.RowCount >0 Then c.Position = 0 cantidady = c.GetString("HVD_CANT") End If ' Log(x.RowCount) If x.RowCount > 0 Then x.Position = 0 ' Log(x.GetString("CAT_GP_PRECIO")) Dim preciou As String = x.GetString("CAT_GP_PRECIO") Dim costototalhist As String = preciou * cantidady ' Log("Total ==== "&costototalhist) End If totalfinal = totalfinal + costototalhist x.Close Next L_TOTAL.Text = Round2(totalfinal, 2) c.Close c = Starter.skmt.ExecQuery("select COUNT(*) AS CUANTOS from REPARTO where REP_CLIENTE in (select cuenta from cuentaa) and REP_RECHAZO = '0' and REP_CANT > 0 order by REP_PRONOMBRE") If c.RowCount > 0 Then c.Position = 0 If c.GetString("CUANTOS") > 0 Then Dim z As Cursor = Starter.skmt.ExecQuery($"select SUM(REP_CANT) AS CANTIDAD , SUM(REP_PRECIO) AS PRECIO from REPARTO where REP_CLIENTE in (select cuenta from cuentaa) and REP_RECHAZO = '0' and REP_CANT > 0 order by REP_PRONOMBRE"$) Dim cantidad2 As String = 0 ' Log(z.RowCount) If z.RowCount > 0 Then z.Position = 0 cantidad2= z.GetString("CANTIDAD") ' LogColor(z.GetString("PRECIO")&" , " & z.GetString("CANTIDAD"), Colors.Magenta) ' Log(cantidad1 &" , "& cantidad2) L_CANT.Text = Round((cantidad1 + cantidad2)) End If z.Close End If End If End Sub Private Sub b_guardar_Click End Sub Private Sub l_pCant_Click End Sub Sub p_prods_Click Log(Sender.As(Panel).tag) End Sub