From e3614c5fcf30a5b744331f1590d76c488c43e8d6 Mon Sep 17 00:00:00 2001 From: Javier Date: Tue, 4 Nov 2025 10:26:40 -0600 Subject: [PATCH] ... --- B4A/B4XMainPage.bas | 48 ++- B4A/C_Cliente.bas | 641 ++++++++++++++++++++++++---------- B4A/C_DetalleVenta.bas | 61 +++- B4A/C_Principal.bas | 306 +++++++++++++++- B4A/Files/cliente.bal | Bin 38023 -> 38955 bytes B4A/Files/login.bal | Bin 23375 -> 26969 bytes B4A/Files/principal.bal | Bin 41342 -> 41934 bytes B4A/Tracker.bas | 127 +++++-- B4A/barcodeGenerator.bas | 710 ++++++++++++++++++++++++++++++++++++++ B4A/guna_reparto.b4a | 69 ++-- B4A/guna_reparto.b4a.meta | 7 +- 11 files changed, 1718 insertions(+), 251 deletions(-) create mode 100644 B4A/barcodeGenerator.bas diff --git a/B4A/B4XMainPage.bas b/B4A/B4XMainPage.bas index 5bed64d..8379720 100644 --- a/B4A/B4XMainPage.bas +++ b/B4A/B4XMainPage.bas @@ -1277,6 +1277,11 @@ Sub Class_Globals Private p_importarBDWA As Panel Dim intentUsado As Boolean = False + Private p_bypass As Panel + Private et_bypass As EditText + Private b_cancelabypass As Button + Private b_acepbypass As Button + Private b_bypass As Button End Sub Public Sub Initialize @@ -1335,6 +1340,8 @@ Private Sub B4XPage_Created (Root1 As B4XView) Subs.agregaColumna("CAT_GUNAPROD3", "CAT_DP_CANT_MIN_VENTA", "TEXT") Subs.agregaColumna("ABONOS","TIPO_PAGO","TEXT") Subs.agregaColumna("ABONOS","a_numpago","TEXT") + Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS GEOCERCA (ACTIVA TEXT)") + Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS BARRAS (BARRA BLOB)") Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS ABONOS (a_usuario TEXT, a_ruta TEXT, a_cliente TEXT, a_abono TEXT, a_fecha TEXT, a_enviado TEXT)") Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS PAGARES (PA_ALMACEN TEXT, PA_RUTA_REP TEXT, PA_RUTAPREV TEXT, PA_FECHA_PREV TEXT, PA_CAPTURA TEXT, PA_MONTO TEXT, PA_USUARIO TEXT, PA_CLIENTE TEXT)") Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS PICK_CIEGO (PC_ID_PROD TEXT, PC_NOM_PROD TEXT, PC_CANT TEXT, PC_ALMACEN TEXT, PC_RUTA TEXT, PC_FECHA TEXT)") @@ -1754,10 +1761,11 @@ Private Sub i_engrane_Click Subs.panelVisible(p_appUpdate, 0, 0) If user.Text.Trim = "KMTS1" Then - p_importarBDWA.Visible = True + p_importarBDWA.Visible = False Else p_importarBDWA.Visible = False End If + If user.Text.trim = "KMTS1" Then b_bypass.Visible = True Else b_bypass.Visible = False End Sub Private Sub B4XPage_CloseRequest As ResumableSub @@ -2232,4 +2240,42 @@ Private Sub cb_importarBDWA_CheckedChange(Checked As Boolean) ' LogColor($"cb_importarBDWA_CheckedChange = ${Checked}"$, Colors.Red) Starter.skmt.ExecNonQuery("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'IMPORTAR_BD_WA'") Starter.skmt.ExecNonQuery($"insert into CAT_VARIABLES (CAT_VA_DESCRIPCION, CAT_VA_VALOR) values ('IMPORTAR_BD_WA', '${Checked}')"$) +End Sub + + + +Private Sub b_bypass_Click + c = Starter.skmt.ExecQuery("SELECT * FROM kmt_info") + If c.RowCount > 0 Then + Subs.panelVisible(p_bypass,0,0) + p_bypass.Visible = True + Else + MsgboxAsync("No hay ruta cargada, favor de cargar día","Atención") + End If +End Sub + +Private Sub b_acepbypass_Click + DateTime.TimeFormat = "HH:mm:ss" + DateTime.DateFormat = "dd/MM/yyyy" + sDate = DateTime.Date(DateTime.Now) + sTime = DateTime.Time(DateTime.Now) + + Dim datebypass() As String = Regex.Split("/",sDate) + Dim timebypass() As String = Regex.Split(":",sTime) + + If et_bypass.Text = datebypass(0) & timebypass(0) & timebypass(1) Then + Starter.skmt.ExecNonQuery2("UPDATE GEOCERCA set ACTIVA = ? ", Array As Object(0)) + et_bypass.Text = "" + MsgboxAsync("Geocerca Deshabilitada","Atención") + p_bypass.Visible = False + End If +End Sub + +Private Sub b_cancelabypass_Click + p_bypass.Visible = False + et_bypass.Text = "" +End Sub + +Private Sub p_bypass_Click + End Sub \ No newline at end of file diff --git a/B4A/C_Cliente.bas b/B4A/C_Cliente.bas index 5b2cf07..05f9e4a 100644 --- a/B4A/C_Cliente.bas +++ b/B4A/C_Cliente.bas @@ -29,7 +29,8 @@ Sub Class_Globals Dim s As Cursor Dim limite_credito As Double Dim banderaabono As String - + Dim m_lat_al, m_lon_al As String + Dim distance2 As Long Dim ListView1 As ListView Dim la_cuenta As Label @@ -93,6 +94,7 @@ Sub Class_Globals Dim rutaprev As String Dim rutarep As String Dim montopagare As String + Private qr As QRGenerator Private p_abono As Panel Private clv_abonos As CustomListView Private et_abono As EditText @@ -125,6 +127,11 @@ Sub Class_Globals Private l_telefono As Label Private l_fecha As Label Private CheckBox1 As CheckBox + Private ImageView1 As ImageView + + Private barcode As barcodeGenerator + Private B4XImageView1 As B4XImageView + Private ImageView2 As ImageView End Sub 'You can add more parameters here. @@ -218,9 +225,31 @@ Sub B4XPage_Appear p_abono.Height = Root.Height p_principal.Width = Root.Width + Dim cor_al As Cursor = Starter.skmt.ExecQuery("SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = 'COORDS_ALMACEN' ") + If cor_al.RowCount > 0 Then + cor_al.Position = 0 + Dim latlong() As String = Regex.Split(",",cor_al.GetString("CAT_VA_VALOR")) + m_lat_al = latlong(1) + m_lon_al = latlong(0) + + End If + + barcode.Initialize + qr.Initialize(B4XImageView1.mBase.Width) + Private cym As Map = Subs.traeCantYMonto2(Subs.traeCliente) L_CANT.Text = cym.Get("cantidad") l_total.Text = Round2(cym.Get("monto"), 2) + + CallSubDelayed(Tracker, "Track") + CallSubDelayed(Tracker, "StartFLPSmall") + CallSubDelayed(Tracker, "StartFLP2") + If Tracker.FLP.GetLastKnownLocation.IsInitialized Then 'Si tenemos "UltimaUbicaccionConocida" la usamos. + B4XPages.MainPage.lat_gps = Tracker.FLP.GetLastKnownLocation.Latitude + B4XPages.MainPage.lon_gps = Tracker.FLP.GetLastKnownLocation.Longitude +' Log($"Tenemos UUC: ${Tracker.FLP.GetLastKnownLocation.Latitude},${Tracker.FLP.GetLastKnownLocation.Longitude}"$) + GPS_LocationChanged(Tracker.FLP.GetLastKnownLocation) + End If Dim mostrarimp As Cursor = Starter.skmt.ExecQuery($"SELECT gestion from kmt_info where CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA)"$) mostrarimp.Position = 0 @@ -254,6 +283,24 @@ Sub B4XPage_Appear Starter.skmt.ExecNonQuery2("UPDATE ABONOSP set DIAS = ?, DIASATRASO = ? where NOTA = ? AND CLIENTE IN (SELECT CUENTA FROM CUENTAA)",Array As String(DiferenciaDias,cdias.GetInt("CAT_CL_DIASCREDITO")-DiferenciaDias, pagarepen.GetString("NOTA"))) Next End If + + Dim geo As Cursor = Starter.skmt.ExecQuery("SELECT ACTIVA FROM GEOCERCA") + If geo.RowCount > 0 Then + geo.Position = 0 + If geo.GetInt("ACTIVA") = 0 Then + HIST.Visible = True +' b_cxc.Visible = True + b_noEntrega.Visible = True + gest.Visible = True + Else If geo.GetInt("ACTIVA") = 1 Then + HIST.Visible = False +' b_cxc.Visible = False + b_noEntrega.Visible = False + gest.Visible = False + End If + End If + + ' If CREDITO = "1" Then ' Msgbox("AVISO","SE TIENE QUE IMPRIMIR PAGARÉ") 'ignore @@ -411,14 +458,14 @@ Sub B4XPage_Appear b_cancel_pagare.Visible = False End If - CallSubDelayed(Tracker, "Track") - CallSubDelayed(Tracker, "StartFLPSmall") - If Tracker.FLP.IsInitialized And Tracker.FLP.GetLastKnownLocation.IsInitialized Then 'Si tenemos "UltimaUbicaccionConocida" la usamos. - B4XPages.MainPage.lat_gps = Tracker.FLP.GetLastKnownLocation.Latitude - B4XPages.MainPage.lon_gps = Tracker.FLP.GetLastKnownLocation.Longitude -' Log($"Tenemos UUC: ${Tracker.FLP.GetLastKnownLocation.Latitude},${Tracker.FLP.GetLastKnownLocation.Longitude}"$) - GPS_LocationChanged(Tracker.FLP.GetLastKnownLocation) - End If +' CallSubDelayed(Tracker, "Track") +' CallSubDelayed(Tracker, "StartFLPSmall") +' If Tracker.FLP.IsInitialized And Tracker.FLP.GetLastKnownLocation.IsInitialized Then 'Si tenemos "UltimaUbicaccionConocida" la usamos. +' B4XPages.MainPage.lat_gps = Tracker.FLP.GetLastKnownLocation.Latitude +' B4XPages.MainPage.lon_gps = Tracker.FLP.GetLastKnownLocation.Longitude +'' Log($"Tenemos UUC: ${Tracker.FLP.GetLastKnownLocation.Latitude},${Tracker.FLP.GetLastKnownLocation.Longitude}"$) +' GPS_LocationChanged(Tracker.FLP.GetLastKnownLocation) +' End If Dim x1 As Cursor =Starter.skmt.ExecQuery("SELECT IFNULL(CAT_CL_LIMITECREDITO,0) AS CAT_CL_LIMITECREDITO FROM kmt_info where CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA)") x1.Position = 0 @@ -445,6 +492,13 @@ Sub B4XPage_Appear ' End If ' ' End If + + If (almacen = 81 Or almacen = 94) Then + HIST.Visible = True +' b_cxc.Visible = True + b_noEntrega.Visible = True + gest.Visible = True + End If End Sub @@ -476,17 +530,91 @@ Sub GPS_LocationChanged (Location1 As Location) Else - Dim l1, l2 As Location + Dim l1, l2,l3 As Location l1.Initialize2(B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps) Log($"Coordenadas de la tienda - lat:${LATITUD}, lon:${LONGITUD}"$) l2.Initialize2(LATITUD, LONGITUD) - + l3.Initialize2(m_lat_al,m_lon_al) 'now we need the distance between our location and the target location distance = l1.DistanceTo(l2) 'the result is in meter - + distance2 = l1.DistanceTo(l3) 'the result is in meter Log("DISTANCIA "&distance) + + + Dim geo As Cursor = Starter.skmt.ExecQuery("SELECT ACTIVA FROM GEOCERCA") + If geo.RowCount > 0 Then + geo.Position = 0 + If geo.GetInt("ACTIVA") = 1 Then + + If (almacen = 88 Or almacen = 92) Then + + If distance2 < 100 Then + HIST.Visible = True + b = Starter.skmt.ExecQuery("select COUNT(*) AS CLIENTE FROM ABONOSP WHERE CLIENTE IN (Select CUENTA from cuentaa) AND SALDO_PENDIENTE <> 0") + b.Position = 0 + Dim cabonos As String = b.GetString("CLIENTE") + If cabonos = 0 Then + b_cxc.Visible = False + Else + b_cxc.Visible = True + End If + b_noEntrega.Visible = True + gest.Visible = True + Else + + If distance < 100 Then + HIST.Visible = True + b = Starter.skmt.ExecQuery("select COUNT(*) AS CLIENTE FROM ABONOSP WHERE CLIENTE IN (Select CUENTA from cuentaa) AND SALDO_PENDIENTE <> 0") + b.Position = 0 + Dim cabonos As String = b.GetString("CLIENTE") + If cabonos = 0 Then + b_cxc.Visible = False + Else + b_cxc.Visible = True + End If + b_noEntrega.Visible = True + gest.Visible = True + Else + HIST.Visible = False + b_cxc.Visible = False + b_noEntrega.Visible = False + gest.Visible = False + End If + + End If + + Else + HIST.Visible = True + b = Starter.skmt.ExecQuery("select COUNT(*) AS CLIENTE FROM ABONOSP WHERE CLIENTE IN (Select CUENTA from cuentaa) AND SALDO_PENDIENTE <> 0") + b.Position = 0 + Dim cabonos As String = b.GetString("CLIENTE") + If cabonos = 0 Then + b_cxc.Visible = False + Else + b_cxc.Visible = True + End If + b_noEntrega.Visible = True + gest.Visible = True + End If + Else If geo.GetInt("ACTIVA") = 0 Then + HIST.Visible = True + b = Starter.skmt.ExecQuery("select COUNT(*) AS CLIENTE FROM ABONOSP WHERE CLIENTE IN (Select CUENTA from cuentaa) AND SALDO_PENDIENTE <> 0") + b.Position = 0 + Dim cabonos As String = b.GetString("CLIENTE") + If cabonos = 0 Then + b_cxc.Visible = False + Else + b_cxc.Visible = True + End If + b_noEntrega.Visible = True + gest.Visible = True + End If + + + + End If End If Dim sDate,sTime As String @@ -513,7 +641,7 @@ Sub gest_Click B4XPages.ShowPage("Principal") End If Else - If Subs.traeAlmacen = 92 Then + If (Subs.traeAlmacen = 92 Or Subs.traeAlmacen = 94) Then Dim k As Cursor = Starter.skmt.ExecQuery("SELECT CUENTA from CUENTAA") k.Position = 0 @@ -584,7 +712,7 @@ Sub gest_Click End Sub Sub checacredito - If l_total.Text = ".00" And L_CANT.Text = 1 Then + If l_total.Text = ".00" And (L_CANT.Text = 1 OR L_CANT.Text = 2) Then Guardado Else @@ -600,100 +728,37 @@ Sub checacredito x1.Position = 0 limite_credito = 0 If CREDITO = 1 And x1.GetString("CAT_CL_LIMITECREDITO") <> 0 Then '''' se debe de cambiar a si acepta o no credito, aparte de tener la bandera a credito - Msgbox2Async("EL CLIENTE TIENE CREDITO DISPONIBLE, UNA VEZ SELECCIONADA UNA OPCION NO SE PODRA MODIFICAR!!!!!","Forma de pago","","Credito","Efectivo",LoadBitmap(File.DirAssets,"alert2.png"),False) - Wait For Msgbox_Result (Result As Int) - If Result= DialogResponse.POSITIVE Then - Log(1) -' p_credito.Visible = True -' 'monto -' c=Starter.skmt.ExecQuery("select sum(HVD_COSTO_TOT) AS MONTO from HIST_VENTAS WHERE HVD_CLIENTE IN (SELECT CUENTA FROM CUENTAA) AND HVD_RECHAZO = 0 AND HVD_PARCIAL = 0") -' c.Position = 0 -' montopagare = c.GetString("MONTO") -' c.Close -' l_limite.Text = "Monto de la venta: $" & l_total.Text - Else If Result = DialogResponse.NEGATIVE Then - escreditoono = 0 - Log(2) - Tipoentrega = "CONTADO" - B_IMP_Click - banderaimp = 1 - Else If Result = DialogResponse.CANCEL Then + + If Subs.traeAlmacen = 81 Then + Log(12) escreditoono = 1 -' If l_total.Text.Replace(",","") <= NumberFormat2( x1.GetString("CAT_CL_LIMITECREDITO").Replace(",",""),0,2,2,False) Then limite_credito = x1.GetString("CAT_CL_LIMITECREDITO") - esPagoACreditoGuardamosPagare'' para brincar el r - Log(3) - '' descomentar -' Private cliente As String = Subs.traeCliente -' c = Starter.skmt.ExecQuery($"select CAT_CL_RUTA from kmt_info where cat_cl_codigo = '${cliente}'"$) -' If c.RowCount > 0 Then -' c.Position = 0 -' Private RUTA_PREVENTA = c.GetString("CAT_CL_RUTA") -' End If -' c = Starter.skmt.ExecQuery($"select distinct hvd_num_ticket from hist_ventas where hvd_cliente = '${cliente}'"$) -' If c.RowCount > 0 Then -' c.Position = 0 -' NOTA = c.GetString("HVD_NUM_TICKET") -' End If -' DateTime.DateFormat = "MM/dd/yyyy" -' sDate=DateTime.Date(DateTime.Now) -' sTime=DateTime.Time(DateTime.Now) -' ProgressDialogShow("Un momento por favor!!") -' Dim cmd As DBCommand -' cmd.Initialize -' cmd.Name = "insertaPagareGunaRep" -' cmd.Parameters = Array As Object(Subs.traeAlmacen, RUTA_PREVENTA, Subs.traeRutaReparto, cliente, l_total.Text.Replace(",",""), NOTA, sDate & " " & sTime) -' reqManager.ExecuteCommand(cmd, $"insertaPagare_${NOTA}"$) - '' fin descomentar + If l_total.Text <> ".00" Then + esPagoACreditoGuardamosPagare + End If -' Else -' MsgboxAsync("El cliente debe de dar un pago de "& (l_total.Text.Replace(",","") - x1.GetString("CAT_CL_LIMITECREDITO")) &"","Atención") -' Log(3) -' Tipoentrega = "CREDITO" -' DateTime.DateFormat = "dd/MM/yyyy" -' DateTime.TimeFormat = "HH:mm:ss" -' sDate=DateTime.Date(DateTime.Now) -' sTime=DateTime.Time(DateTime.Now) -' 'cliente -' c=Starter.skmt.ExecQuery("select CUENTA from cuentaa") -' c.Position = 0 -' cuenta = c.GetString("CUENTA") -' c.Close -' 'usuario -' c=Starter.skmt.ExecQuery("select usuario from usuarioa") -' c.Position = 0 -' usuario = c.GetString("USUARIO") -' c.Close -' 'Almacen -' c=Starter.skmt.ExecQuery("select ID_ALMACEN from CAT_ALMACEN") -' c.Position = 0 -' almacen = c.GetString("ID_ALMACEN") -' c.Close -' 'FECHA PREVENTA -' c=Starter.skmt.ExecQuery("select HVD_FECHA from HIST_VENTAS WHERE HVD_CLIENTE IN (SELECT CUENTA FROM CUENTAA)") -' c.Position = 0 -' fechaprev = c.GetString("HVD_FECHA") -' c.Close -' 'RUTAPREVENTA -' c=Starter.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA)") -' c.Position = 0 -' rutaprev = c.GetString("CAT_CL_RUTA") -' c.Close -' 'RUTA rep -' c=Starter.skmt.ExecQuery("select RUTAA from RUTAA") -' c.Position = 0 -' rutarep = c.GetString("RUTAA") -' c.Close -' 'monto -' c=Starter.skmt.ExecQuery("select sum(HVD_COSTO_TOT) AS MONTO from HIST_VENTAS WHERE HVD_CLIENTE IN (SELECT CUENTA FROM CUENTAA) AND HVD_RECHAZO = 0 AND HVD_PARCIAL = 0") -' c.Position = 0 -' montopagare = c.GetString("MONTO") -' c.Close -' Starter.skmt.ExecNonQuery2("INSERT INTO PAGARES (PA_ALMACEN, PA_RUTA_REP, PA_RUTAPREV, PA_FECHA_PREV, PA_CAPTURA, PA_MONTO, PA_USUARIO, PA_CLIENTE) VALUES(?,?,?,?,?,?,?,?) ", Array As Object (almacen,rutarep,rutaprev,fechaprev,(sDate),l_total.Text,usuario,cuenta)) -' B_IMP_Click -' banderaimp = 1 -' End If + Else + + + Msgbox2Async("EL CLIENTE TIENE CREDITO DISPONIBLE, UNA VEZ SELECCIONADA UNA OPCION NO SE PODRA MODIFICAR!!!!!","Forma de pago","","Credito","Efectivo",LoadBitmap(File.DirAssets,"alert2.png"),False) + Wait For Msgbox_Result (Result As Int) + If Result= DialogResponse.POSITIVE Then + Log(1) + Else If Result = DialogResponse.NEGATIVE Then + escreditoono = 0 + Log(2) + Tipoentrega = "CONTADO" + B_IMP_Click + banderaimp = 1 + Else If Result = DialogResponse.CANCEL Then + Log(12) + escreditoono = 1 + limite_credito = x1.GetString("CAT_CL_LIMITECREDITO") + esPagoACreditoGuardamosPagare + Log(3) + + End If End If Else Log(4) @@ -759,12 +824,20 @@ Sub esPagoACreditoGuardamosPagare banderaimp = 1 Else If l_total.Text.Replace(",","") <= limite_credito Then + DateTime.DateFormat = "dd/MM/yyyy" + DateTime.TimeFormat = "HH:mm:ss" + sDate=DateTime.Date(DateTime.Now) + sTime=DateTime.Time(DateTime.Now) Starter.skmt.ExecNonQuery2("INSERT INTO PAGARES (PA_ALMACEN, PA_RUTA_REP, PA_RUTAPREV, PA_FECHA_PREV, PA_CAPTURA, PA_MONTO, PA_USUARIO, PA_CLIENTE,PA_TICKET) VALUES(?,?,?,?,?,?,?,?,?) ", Array As Object (almacen,rutarep,rutaprev,fechaprev,(sDate),l_total.Text.Replace(",",""),usuario,cuenta,NOTA)) B_IMP_Click banderaimp = 1 Else + DateTime.DateFormat = "dd/MM/yyyy" + DateTime.TimeFormat = "HH:mm:ss" + sDate=DateTime.Date(DateTime.Now) + sTime=DateTime.Time(DateTime.Now) Log(limite_credito) - Msgbox2Async("Se debe de realizar un pago por " & NumberFormat2((l_total.Text.Replace(",","")-limite_credito),0,2,2,False) & " por que exede el limite de credito","Atención","","Aceptar","Cancelar",LoadBitmap(File.DirAssets,"alert2.png"),False) + Msgbox2Async("Se debe de realizar un pago por " & NumberFormat2((l_total.Text.Replace(",","")-limite_credito),0,2,2,False) & " por que excede el limite de credito","Atención","","Aceptar","Cancelar",LoadBitmap(File.DirAssets,"alert2.png"),False) Wait For Msgbox_Result (Result As Int) If Result= DialogResponse.CANCEL Then Starter.skmt.ExecNonQuery2("INSERT INTO PAGARES (PA_ALMACEN, PA_RUTA_REP, PA_RUTAPREV, PA_FECHA_PREV, PA_CAPTURA, PA_MONTO, PA_USUARIO, PA_CLIENTE,PA_TICKET) VALUES(?,?,?,?,?,?,?,?,?) ", Array As Object (almacen,rutarep,rutaprev,fechaprev,(sDate),l_total.Text.Replace(",",""),usuario,cuenta,NOTA)) @@ -875,7 +948,13 @@ Sub Guardado ' If mandamapa.RowCount > 0 Then ' StartActivity(MAPA_RUTAS) ' Else If mandamapa.RowCount = 0 Then - B4XPages.ShowPage("Principal") +' If (almacen = 81 Or almacen = 94) Then +' +' +' Else + + B4XPages.ShowPage("Principal") +' End If ' End If End Sub @@ -963,16 +1042,7 @@ End Sub Sub HIST_Click - Dim x2 As Cursor =Starter.skmt.ExecQuery("SELECT gestion FROM kmt_info where CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA)") - x2.Position = 0 - If x2.GetString("gestion") = 2 Then - Msgbox2Async("Ya se gestiono el cliente, no se pueden hacer modificaciones","Atención","","","Ok",LoadBitmap(File.DirAssets,"alert2.png"),False) - Wait For Msgbox_Result (Result As Int) - If Result= DialogResponse.NEGATIVE Then - B4XPages.ShowPage("Principal") - End If - Else - + Dim pagacheca2 As Cursor = Starter.skmt.ExecQuery("SELECT * FROM PAGARES WHERE PA_CLIENTE IN (SELECT CUENTA FROM CUENTAA)") If pagacheca2.RowCount > 0 Then @@ -986,7 +1056,7 @@ Sub HIST_Click Else - If Subs.traeAlmacen = 92 Then + If (Subs.traeAlmacen = 92 Or Subs.traeAlmacen = 94) Then Dim k As Cursor = Starter.skmt.ExecQuery("SELECT CUENTA from CUENTAA") k.Position = 0 @@ -1061,7 +1131,7 @@ Sub HIST_Click End If End If End If - End If + ' B4XPages.MainPage.historico.prodsMap.Initialize '' B4XPages.MainPage.historico.clv_pedido.Clear ' B4XPages.ShowPage("Historico") @@ -1073,7 +1143,8 @@ Sub B_IMP_Click c=Starter.skmt.ExecQuery("select USUARIO from usuarioa") c.Position=0 usuario = c.GetString("USUARIO") - DateTime.DateFormat = "MM/dd/yyyy" +' DateTime.DateFormat = "MM/dd/yyyy" + DateTime.DateFormat = "dd/MM/yyyy" sDate=DateTime.Date(DateTime.Now) sTime=DateTime.Time(DateTime.Now) c.Close @@ -1128,8 +1199,8 @@ Sub B_IMP_Click Do While Not(impresoraConectada) Or Not(Printer1.IsConnected) Sleep(1000) cont = cont + 1 - If cont = 2 Then Printer1.Connect - If cont > 4 Then impresoraConectada = True + If cont = 7 Then Printer1.Connect + If cont > 15 Then impresoraConectada = True Loop Sleep(500) impresoraConectada = False @@ -1558,7 +1629,7 @@ Printer1.WriteString(" " & CRLF) Printer1.WriteString(" " & CRLF) If almacen = "81" Then - Printer1.WriteString("Telefono de atención:" & CRLF) + Printer1.WriteString("Telefono de atencion:" & CRLF) Printer1.WriteString("" & CRLF) End If @@ -1627,7 +1698,7 @@ End Sub Sub Printer_Connected (Success As Boolean) If Success Then ' B_IMP.Enabled = True - PASA_IMP = "1" +' PASA_IMP = "1" Else ' B_IMP.Enabled = False If Msgbox2("", "Printer Error","Reprint","Cancel","",Null) = DialogResponse.POSITIVE Then 'ignore @@ -2310,7 +2381,8 @@ Sub imprime_abonopagare2 c=Starter.skmt.ExecQuery("select USUARIO from usuarioa") c.Position=0 usuario = c.GetString("USUARIO") - DateTime.DateFormat = "MM/dd/yyyy" +' DateTime.DateFormat = "MM/dd/yyyy" + DateTime.DateFormat = "dd/MM/yyyy" DateTime.TimeFormat = "HH:mm:ss" sDate=DateTime.Date(DateTime.Now) sTime=DateTime.Time(DateTime.Now) @@ -2375,6 +2447,8 @@ Sub imprime_abonopagare2 TAMANO = 0 ESPACIO = 22 BLANCO = " " + + Dim bmp As Bitmap bmp.InitializeResize(File.DirAssets, "logo-guna-18.jpg", 192, 192, True) 'ignore Dim myimage As AnImage = Printer1.ImageToBWIMage(bmp) @@ -2393,7 +2467,7 @@ Sub imprime_abonopagare2 c7.Close - + Printer1.WriteString("DISTRIBUIDORA ROCHA TULA PACHUCA" & CRLF) ' Printer1.WriteString(sucursal & CRLF) Printer1.WriteString(sDate & CRLF) @@ -2475,6 +2549,55 @@ Sub imprime_abonopagare2 c4.Close End If + Dim numpago As Int = c5.RowCount + 1 + + Dim tipopagotick As String = "" + If itemselect = "TRANSFERENCIA" Then + tipopagotick = "T" + Else If itemselect = "EFECTIVO" Then + tipopagotick = "E" + Else If itemselect = "CHEQUE" Then + tipopagotick = "C" + End If + + '' codigo de barras +' ImageView1.Bitmap = barcode.CODE128(notaabono&sDate&tipopagotick&numpago) + '' codigo de qr + B4XImageView1.SetBitmap(qr.Create(notaabono&sDate&tipopagotick&numpago)) + + + Dim Dirp As String = File.DirInternal + Dim Dir As String + Dim Dir2 As String + Try + File.MakeDir(Dirp,"/md") + Dir = "/md" + Log("creado en promotoria " & Dirp & Dir) + Catch + Dir = "" + Log("creado en raiz") + End Try + + Try + File.MakeDir(Dirp & Dir,"/reduccion") + Dir2 = "/reduccion" + Log("creado en promotoria " & Dirp & Dir & Dir2) + Catch + Dir = "" + Log("creado en raiz") + End Try + + '' codigo de barras +' Dim Out As OutputStream +' Out = File.OpenOutput(File.DirInternal & Dir & Dir2, "Test.png", False) +' barcode.CODE128(notaabono&sDate&tipopagotick&numpago).WriteToStream(Out, 100, "PNG") +' Out.Close + + '' codigo de qr + Dim Out As OutputStream + Out = File.OpenOutput(File.DirInternal & Dir & Dir2, "qr.png", False) + qr.Create(notaabono&sDate&tipopagotick&numpago).WriteToStream(Out, 100, "PNG") + Out.Close @@ -2483,7 +2606,7 @@ Sub imprime_abonopagare2 ' c.Position = 0 ' notaabono = c.GetString("NOTA") ' End If - Dim numpago As Int = c5.RowCount + 1 + Log(notaabono) Log(et_abono.Text) Printer1.WriteString("Comprobante de pago del pagare" & CRLF) @@ -2501,9 +2624,7 @@ Sub imprime_abonopagare2 Printer1.WriteString(" " & CRLF) Printer1.WriteString("------------------------------" & CRLF) Printer1.WriteString("-------------FIRMA------------" & CRLF) - Printer1.WriteString(" " & CRLF) - Printer1.WriteString(" " & CRLF) - Printer1.WriteString(" " & CRLF) + DateTime.DateFormat = "ddMMyyyy" sDate=DateTime.Date(DateTime.Now) itemselect = "EFECTIVO" @@ -2511,16 +2632,27 @@ Sub imprime_abonopagare2 ' Items.Add("TRANSFERENCIA") ' Items.Add("EFECTIVO") ' Items.Add("CHEQUE") - Dim tipopagotick As String = "" - If itemselect = "TRANSFERENCIA" Then - tipopagotick = "T" - Else If itemselect = "EFECTIVO" Then - tipopagotick = "E" - Else If itemselect = "CHEQUE" Then - tipopagotick = "C" - End If - Printer1.WriteBarCode("I",NOTA&sDate&tipopagotick&numpago) + + + + +' Dim bmp As Bitmap + '' bmp.InitializeResize(File.DirAssets, "logo-guna-18.jpg", 192, 192, True) 'ignore + + Dim bmp2 As Bitmap + bmp2.InitializeResize(File.DirInternal & Dir & Dir2, "qr.png", 192, 192, True) 'ignore +' bmp.Initialize(File.DirInternal & Dir & Dir2, "qr.png") 'ignore + Dim myimage2 As AnImage = Printer1.ImageToBWIMage(bmp2) + myimage2 = Printer1.DitherImage2D(myimage2, 128) + myimage2= Printer1.PackImage(myimage2) + Printer1.WriteString(CRLF) ' nudge the printer to show the user something is happening + Printer1.WriteString(Printer1.REVERSE) + Printer1.PrintImage(myimage2) + Printer1.WriteString(Printer1.UNREVERSE) + + +' Printer1.WriteBarCode("I",NOTA&sDate&tipopagotick&numpago) Printer1.WriteString(" " & CRLF) Printer1.WriteString(" " & CRLF) Printer1.WriteString(" " & CRLF) @@ -2584,11 +2716,19 @@ End Sub ' End If 'End Sub +'Saves the data received from PictureTaken event +Public Sub SavePictureToFile(Data() As Byte, Dir As String, FileName As String) + Dim out As OutputStream = File.OpenOutput(Dir, FileName, False) + out.WriteBytes(Data, 0, Data.Length) + out.Close +End Sub + Sub imprime_abonopagare c=Starter.skmt.ExecQuery("select USUARIO from usuarioa") c.Position=0 usuario = c.GetString("USUARIO") - DateTime.DateFormat = "MM/dd/yyyy" +' DateTime.DateFormat = "MM/dd/yyyy" + DateTime.DateFormat = "dd/MM/yyyy" DateTime.TimeFormat = "HH:mm:ss" sDate=DateTime.Date(DateTime.Now) sTime=DateTime.Time(DateTime.Now) @@ -2636,6 +2776,7 @@ Sub imprime_abonopagare If cont > 15 Then impresoraConectada = True Loop Sleep(500) + Log("asasdas") impresoraConectada = False Else ' If logger Then Log("conectando 2") @@ -2643,9 +2784,10 @@ Sub imprime_abonopagare Private cont As Int = 0 Do While Not(impresoraConectada) Or Not(Printer1.IsConnected) Sleep(1000) + Log("asasdas") cont = cont + 1 - If cont = 2 Then Printer1.Connect - If cont > 4 Then impresoraConectada = True + If cont = 7 Then Printer1.Connect + If cont > 15 Then impresoraConectada = True Loop Sleep(500) impresoraConectada = False @@ -2653,6 +2795,7 @@ Sub imprime_abonopagare TAMANO = 0 ESPACIO = 22 BLANCO = " " + Printer1.Justify = 0 Dim bmp As Bitmap bmp.InitializeResize(File.DirAssets, "logo-guna-18.jpg", 192, 192, True) 'ignore Dim myimage As AnImage = Printer1.ImageToBWIMage(bmp) @@ -2671,7 +2814,7 @@ Sub imprime_abonopagare c7.Close - + Printer1.WriteString(" " & CRLF) Printer1.WriteString("DISTRIBUIDORA ROCHA TULA PACHUCA" & CRLF) ' Printer1.WriteString(sucursal & CRLF) Printer1.WriteString(sDate & CRLF) @@ -2686,9 +2829,20 @@ Sub imprime_abonopagare Dim notaabono As String Dim saldopendiente As Double Dim saldopendiente2 As Double +' Items.Add("TRANSFERENCIA") +' Items.Add("EFECTIVO") +' Items.Add("CHEQUE") + Dim tipopagotick As String = "" + If itemselect = "TRANSFERENCIA" Then + tipopagotick = "T" + Else If itemselect = "EFECTIVO" Then + tipopagotick = "E" + Else If itemselect = "CHEQUE" Then + tipopagotick = "C" + End If If tipo_abonox = "abono" Then - + Log("AQUI ABONO") c = Starter.skmt.ExecQuery($"select distinct hvd_num_ticket from hist_ventas where hvd_cliente = '${la_cuenta.Text}' and HVD_PRONOMBRE <> 'Cobranza Pendiente' "$) If c.RowCount > 0 Then @@ -2754,21 +2908,76 @@ Sub imprime_abonopagare End If - +' bc.Initialize ' c = Starter.skmt.ExecQuery("SELECT NOTA FROM ABONOSP WHERE CLIENTE IN (SELECT CUENTA FROM CUENTAA)") ' If c.RowCount > 0 Then ' c.Position = 0 ' notaabono = c.GetString("NOTA") ' End If + DateTime.DateFormat = "ddMMyyyy" + sDate=DateTime.Date(DateTime.Now) Dim numpago As Int = c5.RowCount + 1 + + '' codigo de barras +' ImageView1.Bitmap = barcode.CODE128(notaabono&sDate&tipopagotick&numpago) + '' codigo de qr + B4XImageView1.SetBitmap(qr.Create(notaabono&sDate&tipopagotick&numpago)) + + + Dim Dirp As String = File.DirInternal + Dim Dir As String + Dim Dir2 As String + Try + File.MakeDir(Dirp,"/md") + Dir = "/md" + Log("creado en promotoria " & Dirp & Dir) + Catch + Dir = "" + Log("creado en raiz") + End Try + + Try + File.MakeDir(Dirp & Dir,"/reduccion") + Dir2 = "/reduccion" + Log("creado en promotoria " & Dirp & Dir & Dir2) + Catch + Dir = "" + Log("creado en raiz") + End Try + + '' codigo de barras +' Dim Out As OutputStream +' Out = File.OpenOutput(File.DirInternal & Dir & Dir2, "Test.png", False) +' barcode.CODE128(notaabono&sDate&tipopagotick&numpago).WriteToStream(Out, 100, "PNG") +' Out.Close + + '' codigo de qr + Dim Out As OutputStream + Out = File.OpenOutput(File.DirInternal & Dir & Dir2, "qr.png", False) + qr.Create(notaabono&sDate&tipopagotick&numpago).WriteToStream(Out, 100, "PNG") + Out.Close + Log(notaabono) Log(et_abono.Text) Printer1.WriteString("Comprobante de pago del pagare" & CRLF) Printer1.WriteString("Folio: " & Folio &"-"&(numpago)& CRLF) - Printer1.WriteString("Monto deuda: " & (NumberFormat(saldopendiente2 - saldopendiente3,0,2)) & CRLF) + + If tipo_abonox = "abono" Then + Printer1.WriteString("Monto deuda: " & (NumberFormat(saldopendiente - saldopendiente1,0,2)) & CRLF) + Else + Printer1.WriteString("Monto deuda: " & (NumberFormat(saldopendiente2 - saldopendiente3,0,2)) & CRLF) + End If + Printer1.WriteString("Monto abono: " & (NumberFormat(et_abono.Text,0,2)) & CRLF) - Printer1.WriteString("Restante "&Folio&": " &(NumberFormat(saldopendiente2-et_abono.Text - saldopendiente3,0,2)) & CRLF) + + If tipo_abonox = "abono" Then + Printer1.WriteString("Restante "&Folio&": " &(NumberFormat(saldopendiente-et_abono.Text ,0,2)) & CRLF) + Else + Printer1.WriteString("Restante "&Folio&": " &(NumberFormat(saldopendiente2-et_abono.Text - saldopendiente3,0,2)) & CRLF) + End If + DateTime.DateFormat = "MM/dd/yyyy" + sDate=DateTime.Date(DateTime.Now) Printer1.WriteString("Restante pagares: " &(NumberFormat(saldopendiente-et_abono.Text - saldopendiente1,0,2)) & CRLF) Printer1.WriteString("Fecha Abono: " & sDate & CRLF) Printer1.WriteString(" " & CRLF) @@ -2780,36 +2989,37 @@ Sub imprime_abonopagare Printer1.WriteString(" " & CRLF) Printer1.WriteString("------------------------------" & CRLF) Printer1.WriteString("-------------FIRMA------------" & CRLF) - Printer1.WriteString(" " & CRLF) - Printer1.WriteString(" " & CRLF) - Printer1.WriteString(" " & CRLF) - DateTime.DateFormat = "ddMMyyyy" - sDate=DateTime.Date(DateTime.Now) -' Items.Add("TRANSFERENCIA") -' Items.Add("EFECTIVO") -' Items.Add("CHEQUE") - Dim tipopagotick As String = "" - If itemselect = "TRANSFERENCIA" Then - tipopagotick = "T" - Else If itemselect = "EFECTIVO" Then - tipopagotick = "E" - Else If itemselect = "CHEQUE" Then - tipopagotick = "C" - End If - Printer1.WriteBarCode("I",notaabono&sDate&tipopagotick&numpago) + +' Dim bmp As Bitmap +'' bmp.InitializeResize(File.DirAssets, "logo-guna-18.jpg", 192, 192, True) 'ignore + + Dim bmp2 As Bitmap + bmp2.InitializeResize(File.DirInternal & Dir & Dir2, "qr.png", 192, 192, True) 'ignore +' bmp.Initialize(File.DirInternal & Dir & Dir2, "qr.png") 'ignore + Dim myimage2 As AnImage = Printer1.ImageToBWIMage(bmp2) + myimage2 = Printer1.DitherImage2D(myimage2, 128) + myimage2= Printer1.PackImage(myimage2) + Printer1.WriteString(CRLF) ' nudge the printer to show the user something is happening + Printer1.WriteString(Printer1.REVERSE) + Printer1.PrintImage(myimage2) + Printer1.WriteString(Printer1.UNREVERSE) + +' Printer1.WriteBarCode("I",notaabono&sDate&tipopagotick&numpago) Printer1.WriteString(" " & CRLF) Printer1.WriteString(" " & CRLF) Printer1.WriteString(" " & CRLF) - Sleep(1000) + + Sleep(2000) Printer1.DisConnect ProgressDialogHide + If Subs.traeAlmacen = "92" Then -''mayoreo + ''mayoreo If tipo_abonox = "abono" Then Msgbox2Async("Deseas imprimir de nuevo el ticket?", "ATENCION","SI","", "NO",LoadBitmap(File.DirAssets,"alert2.png"), False) @@ -2950,7 +3160,7 @@ Sub imprime_abonopagare End If End If -''mayoreo + ''mayoreo Else If tipo_abonox = "abono" Then @@ -3101,7 +3311,8 @@ Sub imprime_pagare c=Starter.skmt.ExecQuery("select USUARIO from usuarioa") c.Position=0 usuario = c.GetString("USUARIO") - DateTime.DateFormat = "MM/dd/yyyy" +' DateTime.DateFormat = "MM/dd/yyyy" + DateTime.DateFormat = "dd/MM/yyyy" sDate=DateTime.Date(DateTime.Now) sTime=DateTime.Time(DateTime.Now) c.Close @@ -3192,6 +3403,7 @@ Sub imprime_pagare ' Ticket = c6.GetString("HVD_NUM_TICKET") ' End If ' c6.Close + DateTime.DateFormat = "dd/MM/yyyy" DateTime.TimeFormat = "HH:mm:ss" sDate=DateTime.Date(DateTime.Now) @@ -3290,7 +3502,7 @@ Sub imprime_pagare Printer1.Justify = 0 s.Close Printer1.WriteString(" " & CRLF) - s=Starter.skmt.ExecQuery($"select HVD_PRONOMBRE, HVD_CANT, length(HVD_CANT) as L_CANT, HVD_COSTO_TOT, length(HVD_COSTO_TOT) as L_COSTOU,HVD_PROID, HVD_CODPROMO,IFNULL(HVD_RECHAZOCANT,0) AS HVD_RECHAZOCANT FROM HIST_VENTAS WHERE HVD_CLIENTE IN (Select CUENTA from cuentaa) AND HVD_RECHAZO = 0 AND HVD_CODPROMO <> '${Subs.traeAlmacen}' order by HVD_CODPROMO, ESPROMO DESC, HVD_PROID"$) + s=Starter.skmt.ExecQuery($"select HVD_PRONOMBRE, HVD_CANT, length(HVD_CANT) as L_CANT, HVD_COSTO_TOT, length(HVD_COSTO_TOT) as L_COSTOU,HVD_PROID, HVD_CODPROMO,IFNULL(HVD_RECHAZOCANT,0) AS HVD_RECHAZOCANT FROM HIST_VENTAS WHERE HVD_CLIENTE IN (Select CUENTA from cuentaa) AND HVD_RECHAZO = 0 and HVD_PRONOMBRE <> 'Cobranza Pendiente' AND HVD_CODPROMO <> '${Subs.traeAlmacen}' order by HVD_CODPROMO, ESPROMO DESC, HVD_PROID"$) If S.RowCount>0 Then Printer1.WriteString("-------PROMOS ENTREGA--------" & CRLF) Printer1.WriteString("Cant. Precio Importe" & CRLF) @@ -3353,13 +3565,70 @@ Sub imprime_pagare Printer1.WriteString("" & CRLF) Printer1.WriteString("______________________________" & CRLF) - Printer1.WriteString(" " & CRLF) - Printer1.WriteString(" " & CRLF) - Printer1.WriteString(" " & CRLF) + DateTime.DateFormat = "ddMMyyyy" sDate=DateTime.Date(DateTime.Now) ' Printer1.WriteString("JHGHGH " & CRLF) - Printer1.WriteBarCode("I",la_cuenta.Text&sDate) + + + + + + '' codigo de barras +' ImageView1.Bitmap = barcode.CODE128(notaabono&sDate&tipopagotick&numpago) + '' codigo de qr + B4XImageView1.SetBitmap(qr.Create(la_cuenta.Text&sDate)) + + + Dim Dirp As String = File.DirInternal + Dim Dir As String + Dim Dir2 As String + Try + File.MakeDir(Dirp,"/md") + Dir = "/md" + Log("creado en promotoria " & Dirp & Dir) + Catch + Dir = "" + Log("creado en raiz") + End Try + + Try + File.MakeDir(Dirp & Dir,"/reduccion") + Dir2 = "/reduccion" + Log("creado en promotoria " & Dirp & Dir & Dir2) + Catch + Dir = "" + Log("creado en raiz") + End Try + + '' codigo de barras +' Dim Out As OutputStream +' Out = File.OpenOutput(File.DirInternal & Dir & Dir2, "Test.png", False) +' barcode.CODE128(la_cuenta.Text&sDate).WriteToStream(Out, 100, "PNG") +' Out.Close + + '' codigo de qr + Dim Out As OutputStream + Out = File.OpenOutput(File.DirInternal & Dir & Dir2, "qr.png", False) + qr.Create(la_cuenta.Text&sDate).WriteToStream(Out, 100, "PNG") + Out.Close + + + + + + Dim bmp2 As Bitmap + bmp2.InitializeResize(File.DirInternal & Dir & Dir2, "qr.png", 192, 192, True) 'ignore +' bmp.Initialize(File.DirInternal & Dir & Dir2, "qr.png") 'ignore + Dim myimage2 As AnImage = Printer1.ImageToBWIMage(bmp2) + myimage2 = Printer1.DitherImage2D(myimage2, 128) + myimage2= Printer1.PackImage(myimage2) + Printer1.WriteString(CRLF) ' nudge the printer to show the user something is happening + Printer1.WriteString(Printer1.REVERSE) + Printer1.PrintImage(myimage2) + Printer1.WriteString(Printer1.UNREVERSE) + +' Printer1.WriteBarCode("I",la_cuenta.Text&sDate) Printer1.WriteString(" " & CRLF) Printer1.WriteString(" " & CRLF) @@ -3393,6 +3662,19 @@ End Sub Private Sub b_cancel_pagare_Click tipo_abonox = "abono" + + Dim Items As List + Items.Initialize + + Items.Add("SELECCIONA UNA OPCION") + Items.Add("TRANSFERENCIA") + Items.Add("EFECTIVO") + Items.Add("CHEQUE") + + cb_tipopago.SetItems(Items) + + itemselect= "SELECCIONA UNA OPCION" + ' Msgbox2Async($"¿Que deseas realizar?"$,"Atención", "","", "Abono pagare", Null, True) ' Wait For Msgbox_Result (resultado As Int) ' If resultado = DialogResponse.POSITIVE Then @@ -3516,7 +3798,8 @@ Sub imprime_cancelarpagare c=Starter.skmt.ExecQuery("select USUARIO from usuarioa") c.Position=0 usuario = c.GetString("USUARIO") - DateTime.DateFormat = "MM/dd/yyyy" +' DateTime.DateFormat = "MM/dd/yyyy" + DateTime.DateFormat = "dd/MM/yyyy" sDate=DateTime.Date(DateTime.Now) sTime=DateTime.Time(DateTime.Now) c.Close @@ -4215,7 +4498,8 @@ Private Sub HIST_LongClick c=Starter.skmt.ExecQuery("select USUARIO from usuarioa") c.Position=0 usuario = c.GetString("USUARIO") - DateTime.DateFormat = "MM/dd/yyyy" +' DateTime.DateFormat = "MM/dd/yyyy" + DateTime.DateFormat = "dd/MM/yyyy" sDate=DateTime.Date(DateTime.Now) sTime=DateTime.Time(DateTime.Now) c.Close @@ -4309,11 +4593,12 @@ Private Sub HIST_LongClick For i=0 To S.RowCount -1 S.Position=i Log(s.GetString("HVD_RECHAZO")) + If s.GetString("HVD_CANT") - s.GetString("HVD_RECHAZOCANT") > 0 Then If s.GetString("HVD_CODPROMO") = Subs.traeAlmacen Then Printer1.Justify = 0 Printer1.WriteString((s.GetString("HVD_CANT") - s.GetString("HVD_RECHAZOCANT") )&" "&s.GetString("HVD_PRONOMBRE") & CRLF) - + Printer1.WriteString(" " & CRLF) ' Dim punit As String = NumberFormat2((s.GETSTRING("HVD_COSTO_TOT")/s.GetString("HVD_CANT")),0,2,2,False) ' TAMANO = punit.Length + TAMANO @@ -4339,7 +4624,7 @@ Private Sub HIST_LongClick Else If s.GetString("HVD_RECHAZO") = 1 Then Printer1.Justify = 0 Printer1.WriteString((s.GetString("HVD_CANT") - s.GetString("HVD_RECHAZOCANT")) &" "&s.GetString("HVD_PRONOMBRE") & CRLF) - + Printer1.WriteString(" " & CRLF) ' Private vc5 As Cursor = Starter.skmt.ExecQuery($"select iFNULL(CAT_GP_PRECIO,0) AS CAT_GP_PRECIO from CAT_GUNAPROD where CAT_GP_ID = '${s.GetString("HVD_PROID")}'"$) ' vc5.Position = 0 ' Dim punit As String = NumberFormat2((vc5.GetString("CAT_GP_PRECIO")),0,2,2,False) @@ -4388,6 +4673,7 @@ Private Sub HIST_LongClick Printer1.WriteString("* "&s.GetString("HVD_PRONOMBRE") & CRLF) Else Printer1.WriteString((s.GetString("HVD_CANT") - s.GetString("HVD_RECHAZOCANT"))&" "&s.GetString("HVD_PRONOMBRE") & CRLF) + Printer1.WriteString(" " & CRLF) End If ' Dim punit As String =NumberFormat2((s.GETSTRING("HVD_COSTO_TOT")/s.GetString("HVD_CANT")),0,2,2,False) ' TAMANO = punit.Length + TAMANO @@ -4427,4 +4713,5 @@ Private Sub HIST_LongClick Printer1.DisConnect ProgressDialogHide ' Guardado -End Sub \ No newline at end of file +End Sub + diff --git a/B4A/C_DetalleVenta.bas b/B4A/C_DetalleVenta.bas index 25ad0f4..a75d88b 100644 --- a/B4A/C_DetalleVenta.bas +++ b/B4A/C_DetalleVenta.bas @@ -86,6 +86,9 @@ 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) @@ -308,6 +311,8 @@ Sub B4XPage_Appear Else L_CANT.Text = NumberFormat2((arti + arti1 +arti2 + arti3),0,0,0,True) End If + + End Sub Sub GPS_LocationChanged (Location1 As Location) @@ -503,6 +508,20 @@ Sub CreateListItem2(Text As String, precioU As String, inv As Int, inv2 As Int, End Sub Sub b_prodMenos_Click + + Dim x2 As Cursor =Starter.skmt.ExecQuery("SELECT gestion FROM kmt_info where CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA)") + x2.Position = 0 + If x2.GetString("gestion") = 2 Then + MsgboxAsync("Ya se gestiono el cliente, no se pueden hacer modificaciones","Atención") +' Wait For Msgbox_Result (result2 As Int) +' If result= DialogResponse.NEGATIVE Then +' B4XPages.ShowPage("Principal") +' End If + +' b_prodMas.Enabled = False +' b_prodMenos.Enabled = False + Else + etCantHasFocus = False Log("etCantHasFocus=" & etCantHasFocus) LogColor("b_prodMenos_Click", Colors.Magenta) @@ -637,9 +656,26 @@ Sub b_prodMenos_Click ' L_CANT.Text = cym.Get("cantidad") ' L_TOTAL.Text = Round2(cym.Get("monto"), 2) ' cuentaProds("-") + End If End Sub Sub b_prodMas_Click + + Dim x2 As Cursor =Starter.skmt.ExecQuery("SELECT gestion FROM kmt_info where CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA)") + x2.Position = 0 + If x2.GetString("gestion") = 2 Then + MsgboxAsync("Ya se gestiono el cliente, no se pueden hacer modificaciones","Atención") +' Wait For Msgbox_Result (result2 As Int) +' If result= DialogResponse.NEGATIVE Then +' B4XPages.ShowPage("Principal") +' End If + +' b_prodMas.Enabled = False +' b_prodMenos.Enabled = False + Else + + + etCantHasFocus = False ' Log("etCantHasFocus=" & etCantHasFocus) LogColor("b_prodMas_Click", Colors.Magenta) @@ -728,6 +764,8 @@ Sub b_prodMas_Click ' If cantoriginal <= esteTag.Get(1) Then ' L_CANT.Text = L_CANT.Text + 1 ' End If + + End If End Sub Sub cuentaProds(accion As String) @@ -1018,12 +1056,25 @@ Private Sub l_pCantC_Click End Sub Private Sub b_revversar_Click - Private c3 As Cursor = Starter.skmt.ExecQuery("SELECT * FROM PEDIDO WHERE PE_CLIENTEOR IN (SELECT CUENTA FROM CUENTAA)") - If c3.RowCount = 0 Then - Starter.skmt.ExecNonQuery($"update HIST_VENTAS set HVD_RECHAZO = 0, HVD_RECHAZOCANT = 0, BCAJAS = BCAJAS_OR, CANTC = CANTC_OR WHERE HVD_cliente in (Select CUENTA from cuentaa)"$) - B4XPage_Appear + Dim x2 As Cursor =Starter.skmt.ExecQuery("SELECT gestion FROM kmt_info where CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA)") + x2.Position = 0 + If x2.GetString("gestion") = 2 Then + MsgboxAsync("Ya se gestiono el cliente, no se pueden hacer modificaciones","Atención") +' Wait For Msgbox_Result (result2 As Int) +' If result= DialogResponse.NEGATIVE Then +' B4XPages.ShowPage("Principal") +' End If + +' b_prodMas.Enabled = False +' b_prodMenos.Enabled = False Else - MsgboxAsync("Hay productos que ya se vendieron, no se puede regresar la venta","Atención") + Private c3 As Cursor = Starter.skmt.ExecQuery("SELECT * FROM PEDIDO WHERE PE_CLIENTEOR IN (SELECT CUENTA FROM CUENTAA)") + If c3.RowCount = 0 Then + Starter.skmt.ExecNonQuery($"update HIST_VENTAS set HVD_RECHAZO = 0, HVD_RECHAZOCANT = 0, BCAJAS = BCAJAS_OR, CANTC = CANTC_OR WHERE HVD_cliente in (Select CUENTA from cuentaa)"$) + B4XPage_Appear + Else + MsgboxAsync("Hay productos que ya se vendieron, no se puede regresar la venta","Atención") + End If End If End Sub diff --git a/B4A/C_Principal.bas b/B4A/C_Principal.bas index 0a435f5..d653bbf 100644 --- a/B4A/C_Principal.bas +++ b/B4A/C_Principal.bas @@ -136,6 +136,7 @@ Sub Class_Globals Private PB_carga2 As ProgressBar Private l_carga2 As Label 'fin carga + Private b_impresion_rec As Button End Sub 'You can add more parameters here. @@ -826,6 +827,7 @@ Sub Subir_Click ' envioinfo ' Else envioinfo + imp_LIQUIDACION ' End If ' c.Close @@ -1223,6 +1225,11 @@ Sub cargaGeneral reqManager.ExecuteQuery(cmd , 0, "gunaprod") Log($"Pedimos gunaprod - ${ALMACEN}, ${e_ruta.text}"$) reqs.Add("gunaprod") + + cmd.Initialize + cmd.Name = "select_GEOCERCA_GUNA_VN" + cmd.Parameters = Array As Object(ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "GEOCERCA") If ALMACEN = "81" Then @@ -1322,6 +1329,17 @@ Sub JobDone(Job As HttpJob) End If End If + If Job.JobName = "DBRequest" Then + Dim result As DBResult = reqManager.HandleJob(Job) + If result.Tag = "GEOCERCA" Then 'query tag + Starter.skmt.ExecNonQuery("DELETE FROM GEOCERCA") + For Each records() As Object In result.Rows + Dim CAT_AL_GEOCERCA As String = records(result.Columns.Get("CAT_AL_GEOCERCA")) + Starter.skmt.ExecNonQuery2("INSERT INTO GEOCERCA(ACTIVA) VALUES (?)", Array As Object (CAT_AL_GEOCERCA)) + Next + End If + End If + If Job.JobName = "DBRequest" Then Dim result As DBResult = reqManager.HandleJob(Job) If result.Tag = "select_abonosp" Then 'query tag @@ -1994,6 +2012,7 @@ Sub e_ruta_EnterPressed Starter.skmt.ExecNonQuery("delete from HIST_REPARTO_GEO") Starter.skmt.ExecNonQuery("delete from pedido_cliente") Starter.skmt.ExecNonQuery("delete from PAGARES") + Starter.skmt.ExecNonQuery("DELETE FROM GEOCERCA") Starter.skmt.ExecNonQuery("delete from CHECADO_CHECK") Starter.skmt.ExecNonQuery("delete from CHECKLIST2") Starter.skmt.ExecNonQuery("delete from pedido") @@ -2304,15 +2323,23 @@ End Sub Private Sub b_rechazos_Click Dim label1 As Label label1 = lv_prod_Prin.SingleLineLayout.Label - label1.TextSize = 20 + label1.TextSize = 18 label1.TextColor = Colors.White p_prod.Width = Root.Width p_prod.Height = Root.Height lv_prod_Prin.Width = Root.Width - b_regreso.Left = (p_prod.Width - b_regreso.Width) / 2 +' b_regreso.Left = (p_prod.Width - b_regreso.Width) / 2 b_regreso.Top = p_prod.Height - b_regreso.Height + + b_impresion_rec.Top = p_prod.Height - b_impresion_rec.Height ' label1.TextSize = 20 label1.Typeface = Typeface.CreateNew(Typeface.DEFAULT_BOLD, Typeface.STYLE_BOLD) + + If l_ctast.Text = "0" Then + b_impresion_rec.Enabled = True + Else If l_ctast.Text <> "0" Then + b_impresion_rec.Enabled = False + End If ' lv_prod_Prin.Left = p_prod.Width / 2 lv_prod_Prin.Width = Root.Width - (Root.Width * .10) @@ -2320,7 +2347,7 @@ Private Sub b_rechazos_Click Subs.centraListView(lv_prod_Prin,Root.Width) p_prod.Visible = True p_prod.BringToFront - Private c As Cursor = Starter.skmt.ExecQuery("select HVD_PRONOMBRE, IFNULL(SUM(HVD_RECHAZOCANT), 0) AS HVD_RECHAZOCANT, HVD_PROID from HIST_VENTAS WHERE hvd_rechazo <> 2 and HVD_RECHAZOCANT > 0 GROUP BY HVD_PROID order by HVD_PRONOMBRE asc") + Private c As Cursor = Starter.skmt.ExecQuery("select HVD_PRONOMBRE, IFNULL(SUM(HVD_RECHAZOCANT), 0) AS HVD_RECHAZOCANT, HVD_PROID from HIST_VENTAS WHERE hvd_rechazo <> 2 and HVD_RECHAZOCANT > 0 and HVD_PRONOMBRE <> 'Cobranza Pendiente' GROUP BY HVD_PROID order by HVD_PRONOMBRE asc") lv_prod_Prin.SingleLineLayout.Label.TextColor = Colors.White lv_prod_Prin.Clear If c.RowCount > 0 Then @@ -2339,8 +2366,10 @@ Private Sub b_rechazos_Click If ( c.GetInt("HVD_RECHAZOCANT") - resta) <= 0 Then Else +' If c.GetString("HVD_PRONOMBRE") <> "Cobranbra Pendiente" Then itemText = $"${c.GetString("HVD_PRONOMBRE")} ${CRLF}Inventario: ${(c.GetInt("HVD_RECHAZOCANT") - resta)}"$ lv_prod_Prin.AddSingleLine(itemText) +' End If End If Next Else @@ -2883,4 +2912,275 @@ Private Sub ImageView1_LongClick d.Position=0 cuantos_noventa = D.GetString("CUANTOS_NOVENTA") d.Close +End Sub + +Private Sub b_impresion_rec_Click + Dim totalentrega As Int + Dim totalrechazo As Int + Dim totalpiezas As Int + Dim sDate, sTime As String + c=Starter.skmt.ExecQuery("select USUARIO from usuarioa") + c.Position=0 + usuario = c.GetString("USUARIO") +' DateTime.DateFormat = "MM/dd/yyyy" + DateTime.DateFormat = "dd/MM/yyyy" + DateTime.TimeFormat="HH:mm:ss" + sDate=DateTime.Date(DateTime.Now) + sTime=DateTime.Time(DateTime.Now) + c.Close +' c=Starter.skmt.ExecQuery2("SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION =?", Array As String ("SUCURSAL")) +' c.Position = 0 +' sucursal = c.GetString("CAT_VA_VALOR") +' c.Close + + ProgressDialogShow("Imprimiendo, un momento ...") + Printer1.DisConnect + If Not(Printer1.IsConnected) Then +' Log("Conectando a impresora ...") + Printer1.Connect + Private cont As Int = 0 + Do While Not(impresoraConectada) + Sleep(1000) +' Log("++++++ " & cont) + cont = cont + 1 + If cont = 2 Then Printer1.Connect 'Tratamos de reconectar + If cont > 3 Then impresoraConectada = True + Loop + Sleep(500) + impresoraConectada = False + Else +' Log("conectando 2") + Printer1.Connect + Private cont As Int = 0 + Do While Not(impresoraConectada) Or Not(Printer1.IsConnected) + Sleep(1000) +' Log("****** " & cont) + cont = cont + 1 + If cont = 2 Then Printer1.Connect + If cont > 3 Then impresoraConectada = True + Loop + Sleep(500) + impresoraConectada = False + End If + + TAMANO = 0 + ESPACIO = 28 + BLANCO = " " + + Printer1.WriteString("gUNA Distribuciones" & CRLF) + Printer1.WriteString(sDate & " " &sTime & CRLF) + Printer1.WriteString(" " & CRLF) + Printer1.WriteString("------------RECHAZO-----------" & CRLF) + + Private c As Cursor = Starter.skmt.ExecQuery("select HVD_PRONOMBRE, IFNULL(SUM(HVD_RECHAZOCANT), 0) AS HVD_RECHAZOCANT, IFNULL(SUM(HVD_CANT), 0) AS HVD_CANT, (IFNULL(SUM(HVD_CANT), 0) - IFNULL(SUM(HVD_RECHAZOCANT), 0)) as total, HVD_PROID from HIST_VENTAS where HVD_RECHAZO = 1 AND HVD_PRONOMBRE <> 'Cobranza Pendiente' GROUP BY HVD_PROID order by HVD_PRONOMBRE asc") + If c.RowCount > 0 Then + For i = 0 To c.RowCount - 1 + c.Position = i + Printer1.WriteString(" " & CRLF) + + Private c3 As Cursor=Starter.skmt.ExecQuery($"select Ifnull(sum(PE_CANT),0) AS PE_CANT from PEDIDO WHERE PE_PROID ='${c.GetString("HVD_PROID")}'"$) + Private resta As String = 0 + + If c3.RowCount > 0 Then + c3.Position = 0 + resta = c3.GetString("PE_CANT") + Else + resta = 0 + End If + Printer1.Justify = 0 + Printer1.WriteString(c.GetString("HVD_PRONOMBRE") & CRLF) +' Printer1.Justify = 0 +' Printer1.WriteString("TP: "& c.GetInt("HVD_CANT")&" ") +' Printer1.Justify = 1 +' Printer1.WriteString(" TE: " & (c.GetInt("total") + resta)&" ") +' Printer1.Justify = 2 + Printer1.WriteString("RECHAZO: " & (c.GetInt("HVD_RECHAZOCANT") - resta)&" ") + Printer1.Justify = 0 + Printer1.WriteString(" " & CRLF) +' Printer1.WriteString(" " & CRLF) + +' itemText2 = $"${c.GetString("HVD_PRONOMBRE")} ${CRLF} TP: ${(c.GetInt("HVD_CANT"))} TE: ${( c.GetInt("total") + resta)} TR: ${(c.GetInt("HVD_RECHAZOCANT") - resta)}"$ + totalentrega = totalentrega + c.GetInt("total") + resta + totalrechazo = totalrechazo + c.GetInt("HVD_RECHAZOCANT") - resta + totalpiezas = totalpiezas + c.GetInt("HVD_CANT") +' Log(itemText2) + + Next + End If + c.Close + Printer1.WriteString(" " & CRLF) + Printer1.WriteString(" " & CRLF) + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString(" " & CRLF) +' Printer1.WriteString("Total Piezas: "& totalpiezas & CRLF) +' Printer1.WriteString("Total Entrega: "& totalentrega & CRLF) + Printer1.WriteString("Total Rechazo: "& totalrechazo & CRLF) + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString(" " & CRLF) + Printer1.WriteString(" " & CRLF) + Printer1.WriteString(" " & CRLF) + Sleep(1000) + Printer1.DisConnect + + ProgressDialogHide +End Sub + +Sub imp_LIQUIDACION + + ProgressDialogShow("Imprimiendo, un momento ...") + Printer1.DisConnect + If Not(Printer1.IsConnected) Then +' If logger Then Log("conectando 1") + Printer1.Connect + Private cont As Int = 0 + Do While Not(impresoraConectada) + Sleep(1000) + cont = cont + 1 + If cont = 7 Then Printer1.Connect 'Tratamos de reconectar + If cont > 15 Then impresoraConectada = True + Loop + Sleep(500) + impresoraConectada = False + Else +' If logger Then Log("conectando 2") + Printer1.Connect + Private cont As Int = 0 + Do While Not(impresoraConectada) Or Not(Printer1.IsConnected) + Sleep(1000) + cont = cont + 1 + If cont = 2 Then Printer1.Connect + If cont > 4 Then impresoraConectada = True + Loop + Sleep(500) + impresoraConectada = False + End If + + TAMANO = 0 + ESPACIO = 29 + BLANCO = " " + Printer1.Justify = 0 + Dim sDate, sTime As String + DateTime.DateFormat = "dd/MM/yyyy" + DateTime.TimeFormat = "HH:mm:ss" + sDate = DateTime.Date(DateTime.Now) + sTime = DateTime.Time(DateTime.Now) + Printer1.WriteString("Fecha: " &sDate & CRLF) + Printer1.WriteString("Hora: " &sTime & CRLF) + Printer1.WriteString("Ruta: " & l_ruta.Text & CRLF) + Printer1.WriteString("Usuario: " & Subs.dameUsuarioDeDB & CRLF) + Printer1.WriteString("----------LIQUIDACION----------" & CRLF) + Printer1.WriteString("--------------------------------" & CRLF) + + Printer1.WriteString("Monto entregado: $" & NumberFormat2(L_MONTOE.Text,0,2,2,True) & CRLF) + Printer1.WriteString(" " & CRLF) + Printer1.WriteString("Monto rechazado: $" & NumberFormat2(l_rechazo.Text,0,2,2,True) & CRLF) + Printer1.WriteString(" " & CRLF) + Printer1.WriteString("Pagares cobrados: $" & NumberFormat2(l_pagarescobrados.Text,0,2,2,True) & CRLF) + Printer1.WriteString(" " & CRLF) + If l_pagarescobrados.Text > 0 Then + Printer1.WriteString("--------------------------------" & CRLF) + Printer1.WriteString(" Cliente Abono" & CRLF) + Printer1.WriteString("--------------------------------" & CRLF) +' Printer1.WriteString( CRLF) + Dim abonoscreditos As Cursor = Starter.skmt.ExecQuery("SELECT a_abono, length(a_abono) as L_abono , length(a_cliente) as L_cliente , a_cliente FROM ABONOS ORDER BY a_cliente") + For g = 0 To abonoscreditos.RowCount -1 + abonoscreditos.Position = g + + TAMANO = abonoscreditos.GetInt("L_abono") + TAMANO + ESPACIO = (ESPACIO - TAMANO)/2 +' Log(ESPACIO) + For j =0 To ESPACIO -1 + BLANCO = " " & BLANCO + Next + Printer1.Justify = 0 + Printer1.WriteString( abonoscreditos.GetString("a_cliente") & BLANCO) + Printer1.Justify = 1 + Printer1.WriteString( NumberFormat2(abonoscreditos.GetString("a_abono"),0,2,2,True)) + Printer1.WriteString( CRLF) + TAMANO = 0 + ESPACIO = 29 + BLANCO = " " + Printer1.Justify = 0 + Next + Printer1.WriteString("--------------------------------" & CRLF) + Printer1.WriteString( CRLF) + End If + Printer1.WriteString(" " & CRLF) + Printer1.WriteString("Pagares nuevos: $" & NumberFormat2(l_pagaresnuevos.Text,0,2,2,True) & CRLF) + + If l_pagaresnuevos.Text > 0 Then + Printer1.WriteString("--------------------------------" & CRLF) + Printer1.WriteString(" Cliente Pagare" & CRLF) + Printer1.WriteString("--------------------------------" & CRLF) +' Printer1.WriteString( CRLF) + Dim abonoscreditos As Cursor = Starter.skmt.ExecQuery("SELECT PA_MONTO, length(PA_MONTO) as L_PA_MONTO , length(PA_CLIENTE) as L_cliente , PA_CLIENTE FROM PAGARES ORDER BY PA_CLIENTE") + For g = 0 To abonoscreditos.RowCount -1 + abonoscreditos.Position = g + + TAMANO = abonoscreditos.GetInt("L_PA_MONTO") + TAMANO + ESPACIO = (ESPACIO - TAMANO)/2 +' Log(ESPACIO) + For j =0 To ESPACIO -1 + BLANCO = " " & BLANCO + Next + Printer1.Justify = 0 + Printer1.WriteString( abonoscreditos.GetString("PA_CLIENTE") & BLANCO) + Printer1.Justify = 1 + Printer1.WriteString( NumberFormat2(abonoscreditos.GetString("PA_MONTO"),0,2,2,True)) + Printer1.WriteString( CRLF) + TAMANO = 0 + ESPACIO = 29 + BLANCO = " " + Printer1.Justify = 0 + Next + Printer1.WriteString("--------------------------------" & CRLF) + Printer1.WriteString( CRLF) + End If + Printer1.WriteString(" " & CRLF) + Dim abonoscreditosefe As Cursor = Starter.skmt.ExecQuery("SELECT SUM(IFNULL(a_abono,0)) AS ABONO FROM ABONOS WHERE TIPO_PAGO = 'EFECTIVO' ORDER BY a_cliente") + abonoscreditosefe.Position = 0 + Dim abonoscreditostrans As Cursor = Starter.skmt.ExecQuery("SELECT SUM(IFNULL(a_abono,0)) AS ABONO FROM ABONOS WHERE TIPO_PAGO = 'TRANSFERENCIA' ORDER BY a_cliente") + abonoscreditostrans.Position = 0 + Dim abonoscreditosche As Cursor = Starter.skmt.ExecQuery("SELECT SUM(IFNULL(a_abono,0)) AS ABONO FROM ABONOS WHERE TIPO_PAGO = 'CHEQUE' ORDER BY a_cliente") + abonoscreditosche.Position = 0 + Log(NumberFormat2(abonoscreditosefe.GetDouble("ABONO"),0,2,2,False) ) + + Printer1.WriteString("Monto efectivo: $" & NumberFormat2((l_montoaliquidar.Text - abonoscreditosche.GetDouble("ABONO") - abonoscreditostrans.GetDouble("ABONO")),0,2,2,True) & CRLF) + Printer1.WriteString(" " & CRLF) + Printer1.WriteString("Monto cheque: $" & NumberFormat2(abonoscreditosche.GetDouble("ABONO"),0,2,2,True) & CRLF) + Printer1.WriteString(" " & CRLF) + Printer1.WriteString("Monto transferencia: $" & NumberFormat2(abonoscreditostrans.GetDouble("ABONO"),0,2,2,True) & CRLF) + Printer1.WriteString(" " & CRLF) + Printer1.WriteString("Monto a liquidar: $" & NumberFormat2(l_montoaliquidar.Text,0,2,2,True) & CRLF) + + + +' Dim sumainv As Cursor = Starter.skmt.ExecQuery("SELECT SUM(HVD_CANT) AS CANTIDAD FROM HIST_VENTAS WHERE HVD_CODPROMO <> HVD_PROID") +' sumainv.Position = 0 +' +' Printer1.WriteString("------------------------------" & CRLF) +' Printer1.WriteString("Total piezas: " & sumainv.GetString("CANTIDAD")& CRLF) + Printer1.WriteString("------------------------------" & CRLF) + Printer1.Justify = 0 + Printer1.WriteString(" " & CRLF) + Printer1.WriteString(" " & CRLF) + Printer1.WriteString(" " & CRLF) + Printer1.WriteString(" " & CRLF) + Sleep(1000) + Printer1.DisConnect + ProgressDialogHide + + + Msgbox2Async("Deseas imprimir de nuevo el ticket?", "ATENCION","SI","", "NO",LoadBitmap(File.DirAssets,"alert2.png"), False) + Wait For Msgbox_Result (resultado As Int) + If resultado = DialogResponse.POSITIVE Then + imp_LIQUIDACION + Else + + End If +End Sub + +Private Sub connecta_LongClick + imp_LIQUIDACION End Sub \ No newline at end of file diff --git a/B4A/Files/cliente.bal b/B4A/Files/cliente.bal index 10fa1842d6001a28603b148a81fb047f51999b96..db937f6cba2288502e23a2316099cb831a04239a 100644 GIT binary patch delta 1705 zcmaKsOH30%7{_-OTG*BrXpvHiKmmEkLr_qB08$h!f;>b-QK6IyO=!135kf*5yqGA6 z^wW4$<3;fik|uiaY~n#Zc}5cxFC3JcL9u?bQ24;;;XnQD_n6t8>3^<25uYxII+Y*@ zcO^m4;P2%*-D08+!B*aB_c;1p9d6fH+1yG_ycUDb-fq9!C;J@zGNiK!J@448f=4V% z8-pSD)$S{@Uk<%tuSC`glhLmW5;1H*?LbALqEX2x6DkE|jxab>8G%T}PK-u6(~&b! znJ6paEaYrd4r&+ST*7&T^9dIa-o42Ip>Xp-C?Z@;xP2y1jqn-5?S#(~?jU?l5b8G;=p>2rgf9^8B7BkXrBFd^ z6=MmZe(9@j%|5c%?;7_vxxAy`G3A&tvAVb1QQ{hRczlDdl3vHKQ|@!YGn2*14N`A! zY~ccEXF2ix5~9v&NZ_}VeI&96!1yhldIjqxBTU~&t^SFq4$sfe|3Y9W;R{My#o;%HFb+Jf5|;QQQ%ca=YgJI| z%{TH8cbQrUhr`@rEDCyTX&Mm|Q7Bv~(PCsiSnf@MW{(6dH>JWxOmJ67MjW{RC0@?G z5y$Tk=_3y7E5eYa!0`P?I9izt;}#Ti!!l$Ct(syLhE>Yt5|zpmeUXZ{m`LN1YdG+0 zhIs{8a+@I`EgqJg^`e?VjmNBci7BP?HavvnB))PIN_jJ7sT2|B29jZ+QV$>8lJ}ud z=GIm|UcxyyKOXy5XYSW1XTvvj>)B|qRyiAfJN@%)H26l-rO*?|6}1f5lsTAfi0nT2 zW({WTmL>TMko|_|H)BKZW+#{!$D0eW(*XCtkPx@63(AU((BhQfTaCnY@CodpbjM) zXhDYUZ*oDCNt)5$#vDAPbLu$t96u)jHreGGDmWYRwcPS?f}Bm922O~xnG@zTf+OH2 za1^`++zgI^w^p1N+bRvw0^Sa81-F6Q!5!co;GN)I;N4~CSKqP|2KIpWg7<;4#u*e z`N`SDFSbjRN~PZn$q`>UMoEdAhT55u;S`IiUn`gJ`CF}`?!-n~YVp$WO&0?+mJa9Fa~z2Mk*^W#^?v} zlZnV=^pQc9Fx>mxaIjr6oUBkb6BA>Cni#Vf_rb(3`e9jOG#cZ4&TV^p+AQh+^motm z+;g7O^FOESH{ss*kgHXxREGqW%0S<36S>w6IRrgopf?!qc{>~!8k%rhaw(qZ8x9Ok z_#FR=9=AuJ|dQfnfGEba^R2Sctb7NW}7_nSk(K^I=ooEy>56YJSXN^%~@n~2S% z&7^$N7SdMIHc~RbfVhxkA#LZlh~r|8OHw?d+CdMcBr9nr$7LLsbG(bVg0!1tuE_Hcnpj;n~PNj0Qe(o>|TNiL4-IIicof#XJw-5h&per3>SIBw#& znPV@4rBPR#ZK*eb-%-L9I#q(yk0OJ zr;3;&JV@(I1BCJAS# zIZI-9g-SR_joi(ymGi9U0yP&&x<~hZynl%RSo|^rI}Q6OfpCSIt0di{cNhPeV?Ccy zbB&~>6uQ5Zk=V7&X2Q^x?fA$8YFne1G z^^A5o;B&mywS>dnPK;Fwc-fx^U*NL;7A)g{-vYOBPl46I{-xyEZ_68WzdHaTuGw1U z6BCu)7iI2KpVi=3b?0G4G2lvCxlv|7SXGY6YFdKKNk`;Sg7H?2kqqS{j7B#J< i=cdehhf;i|J89u)>WJNy!*?^nidiF8t^CO%bNvsTKdfB< delta 1344 zcmZ9MNla5w6o%iWKzJg3X$7pMAXp})KpDh=GEY(w0TrPX+9FLP5J13lK;r^qVoY2}bYn1TTq{OgYE(S;mEqRKf8KY`xx?S{-tFRBvM@^md^nD~ z=*MxJ@R`#apbg*=>Mgbt_O?!2dvCU;w=qHR$6T%@&(>l&)Y{V7I`txfxV&Ebr}$#N z#8z)_PK9q?cBqrN6yBI>vvqXP=jjf6yB_?#M;r8R4DVrhFT?v7-p_D4!v=;k7|sl523g2!tfaooXYwR%b6Bj{Ve+>=>dg0$Yt_(HN=xEkkFtNdOTN&)`sT&T2UJIb7yon4+ ze#0twq$R_4D5_|3T*v*rQ2a248z_21IQ}LEDNQfXEt(m@a2w^jviR=P9Rxz_qZD+6 z68&5sZ3(Zep*!Td3aO6G&+SJLS>gX9lCUF}z%pXq^COzj$U3v&{RmEa`WiA2N zF$;D9TL-F2BXm}cl4+?snbo{7{om5c>Z?R_zmsS(1H*bP7)?q+^q4jc)&@PC4fhjA zOoYIfYWgO8V7?{|%qBU=%n@W3qRew-4w51?0L%(X~qW WW01q7P6bx89NOyAK~p2gUjG9RVGU9M diff --git a/B4A/Files/principal.bal b/B4A/Files/principal.bal index d7bd71d622ae9a4876362e6c3634d9f015e786aa..c04ca71c9976a066733d632ad8deadb0da7b099b 100644 GIT binary patch delta 1439 zcmajf%X3Rn90%}wu4E={ljb2wlSUqW1f}X#k5)@cJwhXCP^Bd#f|N#;g+)ikf`u76 zogXTZjM%a=F=N44*jO+&Y%%@-kDak#{B9!YH-oYG-h9se-Fwb2_s+RLpUbab$U3zo zN#AsmRLj4oXLPaodPX#o7@wGopG%xcMkeF2hZA*bF+x-7H>r7CRdFmFE2n{D1KZh+ z90z9s*vT&6>w@!cum{`(Zk}^WYMC2It!yu6A!iYIF}Mx91iTd74qgWC052~(Ra$HX z6jp*)fmee&!E3;4!Rx^5!Cl~PUcd5>H-LMFDJDdkabg~B%Q zcJL0cAG{O13p@Z0uy=EUoDg_Wl2VmIm70dZr#lDQX6bE-a9R!G>7@R6NLQ`I1G+}8^KM# zofPwVv4FFX(+q9_F9I(Hw}O{|qu{0BW#Bf`$x`FxP*?$830?(m2d@UN0j~vjfIGqK zxPRr_cY(XXJ>d1=4d58K7rYVN2j29{N#keV423P=t>A6oICwjF2e_X-z}d+e1n&ax z79uHzcw-M|FQ@E%;QinO;Dg`DMB;!z=vRu)2xfRBNXgHN#enmEZh1s-Fc z=A7Z2<0di3sT_7Y*im=|j5P@8R2u(ZtKJF;rP+ zEPd3L@kZ-;Qx(o~-T1SR=lR7P(pTM>E@nPT{jc%#>Qklh{5;-Q8pxJL%Vz%=?aDvL z3jBYpKy^bND^?uKcS?G4-$PFu{q$zSN)NAFX|CWVEvHEb{U|icAYGk|(}f2kKLL&* BqwfF! diff --git a/B4A/Tracker.bas b/B4A/Tracker.bas index c4042e3..5364048 100644 --- a/B4A/Tracker.bas +++ b/B4A/Tracker.bas @@ -192,47 +192,116 @@ Public Sub StopFLP End Sub Sub flp_LocationChanged (Location1 As Location) - Starter.trackerActividad = Subs.fechaKMT(DateTime.Now) - UUGCoords = Location1 -' If Main.logger Then Log("SmallestDisplacement="&actualLR.GetSmallestDisplacement) - CallSub2(Starter, "GPS_LocationChanged", Location1) -' CallSub2(gestion, "GPS_LocationChanged", Location1) -' CallSubDelayed2(gestion, "GPS_LocationChanged", Location1) +' Starter.trackerActividad = Subs.fechaKMT(DateTime.Now) +' UUGCoords = Location1 +'' If Main.logger Then Log("SmallestDisplacement="&actualLR.GetSmallestDisplacement) +' CallSub2(Starter, "GPS_LocationChanged", Location1) +'' CallSub2(gestion, "GPS_LocationChanged", Location1) +'' CallSubDelayed2(gestion, "GPS_LocationChanged", Location1) +' B4XPages.MainPage.lat_gps = Location1.Latitude +' B4XPages.MainPage.lon_gps = Location1.Longitude +''/////// para la ultima ubicacion FL +' Dim sDate,sTime As String +' DateTime.DateFormat = "MM/dd/yyyy" +' sDate=DateTime.Date(DateTime.Now) +' sTime=DateTime.Time(DateTime.Now) +' Try +' Starter.skmt.ExecNonQuery("DELETE FROM HIST_GPS") +' Starter.skmt.ExecNonQuery2("INSERT INTO HIST_GPS (HGDATE, HGLAT, HGLON) VALUES(?,?,?) ", Array As Object (sDate & sTime, B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps)) +' Catch +' If B4XPages.MainPage.logger Then Log("Error al borrar o insertar nuevas coordendas en HIST_GPS") +' End Try +''/////// +' Dim coords As String = Location1.Latitude&","&Location1.Longitude&","&formatoFecha(Location1.Time) +' Log("Loc changed : "&Location1.Latitude&","&Location1.Longitude) +' If B4XPages.MainPage.logger Then Log("Mandamos Ubicacion") +' If B4XPages.MainPage.logger Then Log(locRequest) +' ' Solo mandamos la ubicacion si la precision es menor a XX mts +' If Location1.Accuracy < 100 Then +' Subs.guardaInfoEnBD(coords)'Escribimos coordenadas y fecha en BD +'' CallSubDelayed2(FirebaseMessaging,"mandamosLoc",coords) +' Subs.mandamosLoc(coords) +' End If +' Dim origFormat As String = DateTime.TimeFormat 'Guardamos formato de fecha +' DateTime.TimeFormat = "HHmmss" ' Modificamos formato de fecha +' Dim minsDif As Int = DateTime.Time(DateTime.Now) - B4XPages.MainPage.ultimaActualizacionGPS +'' If Main.logger Then Log("UltimaAct="&Main.ultimaActualizacionGPS&" MinsDif="&minsDif) +' If Location1.Accuracy < 100 And minsDif > 240 Then 'Si precision de 100 y 4 min transcurridos manda a web +' If B4XPages.MainPage.logger Then Log("actualizamos Ubicacion Web") +' CallSubDelayed(Starter, "ENVIA_ULTIMA_GPS") +' End If +' DateTime.TimeFormat = origFormat 'Regresamos formato de fecha original +' 'Revisamos servicios +' Subs.monitor + + ' ToastMessageShow("Loc changed", False) +' Log($"Loc changed:${Location1.Longitude},${Location1.Latitude}"$) B4XPages.MainPage.lat_gps = Location1.Latitude B4XPages.MainPage.lon_gps = Location1.Longitude -'/////// para la ultima ubicacion FL + UUGCoords = Location1 +' Log("SmallestDisplacement="&actualLR.GetSmallestDisplacement) +' If DateTime.Now > LastUpdateTime + 10 * DateTime.TicksPerSecond Then +' Dim n As Notification = CreateNotification($"$2.5{Location1.Latitude} / $2.5{Location1.Longitude}"$) +' n.Notify(nid) +' LastUpdateTime = DateTime.Now +' End If + '/////// para la ultima localización FL Dim sDate,sTime As String DateTime.DateFormat = "MM/dd/yyyy" sDate=DateTime.Date(DateTime.Now) sTime=DateTime.Time(DateTime.Now) - Try - Starter.skmt.ExecNonQuery("DELETE FROM HIST_GPS") - Starter.skmt.ExecNonQuery2("INSERT INTO HIST_GPS (HGDATE, HGLAT, HGLON) VALUES(?,?,?) ", Array As Object (sDate & sTime, B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps)) - Catch - If B4XPages.MainPage.logger Then Log("Error al borrar o insertar nuevas coordendas en HIST_GPS") - End Try -'/////// +' If Not(Starter.skmt.IsInitialized) Then Starter.skmt.Initialize(Starter.ruta,"kmt.db", True) +' Try +' B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO HIST_GPS (HGDATE, HGLAT, HGLON) VALUES(?,?,?) ", Array As Object (sDate & sTime, B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps)) +' B4XPages.MainPage.skmt.ExecNonQuery("DELETE FROM HIST_GPS") +' Catch +' LogColor(LastException, Colors.Red) +' End Try + '/////// Dim coords As String = Location1.Latitude&","&Location1.Longitude&","&formatoFecha(Location1.Time) - Log("Loc changed : "&Location1.Latitude&","&Location1.Longitude) - If B4XPages.MainPage.logger Then Log("Mandamos Ubicacion") - If B4XPages.MainPage.logger Then Log(locRequest) +' Log("Loc changed : "&Location1.Latitude&","&Location1.Longitude&"|"&B4XPages.MainPage.usuario&"|") +' Log("Mandamos Ubicacion") +' Log(FirebaseMessaging.locRequest) ' Solo mandamos la ubicacion si la precision es menor a XX mts If Location1.Accuracy < 100 Then - Subs.guardaInfoEnBD(coords)'Escribimos coordenadas y fecha en BD ' CallSubDelayed2(FirebaseMessaging,"mandamosLoc",coords) - Subs.mandamosLoc(coords) End If - Dim origFormat As String = DateTime.TimeFormat 'Guardamos formato de fecha - DateTime.TimeFormat = "HHmmss" ' Modificamos formato de fecha - Dim minsDif As Int = DateTime.Time(DateTime.Now) - B4XPages.MainPage.ultimaActualizacionGPS -' If Main.logger Then Log("UltimaAct="&Main.ultimaActualizacionGPS&" MinsDif="&minsDif) - If Location1.Accuracy < 100 And minsDif > 240 Then 'Si precision de 100 y 4 min transcurridos manda a web - If B4XPages.MainPage.logger Then Log("actualizamos Ubicacion Web") - CallSubDelayed(Starter, "ENVIA_ULTIMA_GPS") + + CallSub2(Starter, "GPS_LocationChanged", Location1) + CallSub2(B4XPages.MainPage.cliente, "GPS_LocationChanged", Location1) +' CallSub2(gestion, "GPS_LocationChanged", Location1) + If B4XPages.MainPage.cliente.IsInitialized Then + CallSub2(B4XPages.GetPage("Cliente"), "GPS_LocationChanged", Location1) End If - DateTime.TimeFormat = origFormat 'Regresamos formato de fecha original - 'Revisamos servicios - Subs.monitor +' CallSub2(nuevocliente, "GPS_LocationChanged", Location1) + +End Sub + +Public Sub StartFLP2 + Private logger As Boolean = True + If logger Then Log("StartFLP2 - flpStarted="&flpStarted) + Do While FLP.IsConnected = False + Sleep(500) + If logger Then Log("kll - sleeping") + Loop + dameUltimaUbicacionConocida 'Regresamos ultima ubicacion conocida + FLP.RequestLocationUpdates(CreateLocationRequest2) 'Buscamos ubicacion 2 peticiones + If logger Then LogColor("Buscamos ubicacion (movimientoMinimo = "&actualLR.GetSmallestDisplacement&")", Colors.Magenta) +' If logger Then Log(actualLR.GetSmallestDisplacement) +End Sub + +Private Sub CreateLocationRequest2 As LocationRequest + Private logger As Boolean = True + If logger Then Log("Iniciamos CreateLocationRequest2") + Dim lr As LocationRequest + lr.Initialize + lr.SetInterval(1000) 'Intervalo deseado para actualizaciones de ubicacion + lr.SetFastestInterval(lr.GetInterval / 2) 'Intervalo minimo para actualizaciones de ubicacion + lr.setNumUpdates(2) 'Solicitamos solo 2 actualizaciones con estos parametros + lr.SetSmallestDisplacement(1) 'Solo registra cambio de ubicacion si es mayor a XX mts + lr.SetPriority(lr.Priority.PRIORITY_HIGH_ACCURACY) + actualLR=lr + Return lr End Sub Sub CreateNotification (Body As String) As Notification 'ignore diff --git a/B4A/barcodeGenerator.bas b/B4A/barcodeGenerator.bas new file mode 100644 index 0000000..8c361f1 --- /dev/null +++ b/B4A/barcodeGenerator.bas @@ -0,0 +1,710 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Class +Version=12.2 +@EndOfDesignText@ +'version 1.02 +Sub Class_Globals + Private xui As XUI + Public cvs As B4XCanvas + Private xview As B4XView +End Sub + +Public Sub Initialize + Dim xview As B4XView = xui.CreatePanel(Null) + xview.SetLayoutAnimated(0, 0, 0, 1050dip, 300dip) + xview.Color = xui.Color_White +End Sub + + +#Region EAN13 + +Public Sub EAN13(codigo As String) As B4XBitmap + cvs.Initialize(xview) + cvs.ClearRect(cvs.TargetRect) + + If codigo.Length=12 Then codigo = "0" & codigo + + If codigo.Length=13 Then + + Dim novoCodigo As String = preparaEAN13(codigo) + + If novoCodigo<>"" Then + + 'Dim canvas As B4XCanvas + Dim alturaPainel As Int = xview.Height + Dim larguraPainel As Int = xview.Width + Dim larguraCodigo As Int = xview.Width - 100dip + + 'Calcula as dimensões dos elementos do código de barras' + Dim alturaNumero As Int = 40dip 'altura dos números abaixo do código' + Dim larguraBarra As Int = larguraCodigo / 95 'largura de cada barra' + Dim alturaBarra As Int = alturaPainel - alturaNumero'altura das barras' + + 'Desenha as barras e os números do código de barras' + Dim rect As B4XRect + rect.Initialize(0, 0, larguraPainel, alturaPainel) + + cvs.DrawRect(rect, xui.Color_White, True, 0) 'fundo branco' + + Dim larguraAtual As Int = 50dip + + For i=0 To novoCodigo.Length-1 + Dim cor As Int = xui.Color_Black + If novoCodigo.CharAt(i) = "0" Then cor = xui.Color_White + If novoCodigo.CharAt(i) = "2" Then + cvs.DrawLine(larguraAtual, 0, larguraAtual, alturaBarra, cor, larguraBarra) + Else + cvs.DrawLine(larguraAtual, 0, larguraAtual, alturaBarra - alturaNumero, cor, larguraBarra) + End If + + larguraAtual = larguraAtual + larguraBarra + Next + + 'Desenha o número abaixo do código de barras' + Dim fonte As B4XFont = xui.CreateFontAwesome(63) + + Dim sb As StringBuilder + sb.Initialize + + For i=1 To codigo.Length + Dim codigoCaracter As String = codigo.CharAt(i-1) + sb.Append(codigoCaracter) + + If i=1 Then + sb.Append(" ") + Else If i=7 Then + sb.Append(" ") + Else If i=13 Then + 'nao adiciona nada + Else + sb.Append(" ") + End If + Next + + cvs.DrawText(sb.ToString, 1dip, alturaBarra+10dip, fonte, xui.Color_Black, "LEFT") + + End If + + End If + cvs.Invalidate + Dim res As B4XBitmap = cvs.CreateBitmap + cvs.Release + Return res +End Sub + +Private Sub preparaEAN13(codigo As String) As String + + Dim primeiroDigito As String = codigo.SubString2(0,1) + Dim primeiroGrupo As String = codigo.SubString2(1,7) + Dim segundoGrupo As String = codigo.SubString2(7,13) + + Dim sequenciaNovo As String = "" + Dim codigoNovo As String = "-" & primeiroGrupo & "=" & segundoGrupo & "-" + + If primeiroDigito="0" Then sequenciaNovo="-LLLLLL=RRRRRR-" + If primeiroDigito="1" Then sequenciaNovo="-LLGLGG=RRRRRR-" + If primeiroDigito="2" Then sequenciaNovo="-LLGGLG=RRRRRR-" + If primeiroDigito="3" Then sequenciaNovo="-LLGGGL=RRRRRR-" + If primeiroDigito="4" Then sequenciaNovo="-LGLLGG=RRRRRR-" + If primeiroDigito="5" Then sequenciaNovo="-LGGLLG=RRRRRR-" + If primeiroDigito="6" Then sequenciaNovo="-LGGGLL=RRRRRR-" + If primeiroDigito="7" Then sequenciaNovo="-LGLGLG=RRRRRR-" + If primeiroDigito="8" Then sequenciaNovo="-LGLGGL=RRRRRR-" + If primeiroDigito="9" Then sequenciaNovo="-LGGLGL=RRRRRR-" + + Dim sb As StringBuilder + sb.Initialize + + For i=0 To codigoNovo.Length-1 + Dim digitoGrupo As String = codigoNovo.CharAt(i) + Dim sequenciaGrupo As String = sequenciaNovo.CharAt(i) + + If sequenciaGrupo="L" Then + If digitoGrupo="0" Then sb.Append("0001101") + If digitoGrupo="1" Then sb.Append("0011001") + If digitoGrupo="2" Then sb.Append("0010011") + If digitoGrupo="3" Then sb.Append("0111101") + If digitoGrupo="4" Then sb.Append("0100011") + If digitoGrupo="5" Then sb.Append("0110001") + If digitoGrupo="6" Then sb.Append("0101111") + If digitoGrupo="7" Then sb.Append("0111011") + If digitoGrupo="8" Then sb.Append("0110111") + If digitoGrupo="9" Then sb.Append("0001011") + else If sequenciaGrupo="G" Then + If digitoGrupo="0" Then sb.Append("0100111") + If digitoGrupo="1" Then sb.Append("0110011") + If digitoGrupo="2" Then sb.Append("0011011") + If digitoGrupo="3" Then sb.Append("0100001") + If digitoGrupo="4" Then sb.Append("0011101") + If digitoGrupo="5" Then sb.Append("0111001") + If digitoGrupo="6" Then sb.Append("0000101") + If digitoGrupo="7" Then sb.Append("0010001") + If digitoGrupo="8" Then sb.Append("0001001") + If digitoGrupo="9" Then sb.Append("0010111") + Else If sequenciaGrupo="R" Then + If digitoGrupo="0" Then sb.Append("1110010") + If digitoGrupo="1" Then sb.Append("1100110") + If digitoGrupo="2" Then sb.Append("1101100") + If digitoGrupo="3" Then sb.Append("1000010") + If digitoGrupo="4" Then sb.Append("1011100") + If digitoGrupo="5" Then sb.Append("1001110") + If digitoGrupo="6" Then sb.Append("1010000") + If digitoGrupo="7" Then sb.Append("1000100") + If digitoGrupo="8" Then sb.Append("1001000") + If digitoGrupo="9" Then sb.Append("1110100") + Else If sequenciaGrupo="-" Then + sb.Append("202") + Else If sequenciaGrupo="=" Then + sb.Append("02020") + End If + Next + + Return sb.ToString +End Sub + +#End Region + + +#Region UPCA + +Public Sub UPCA(codigo As String) As B4XBitmap + cvs.Initialize(xview) + cvs.ClearRect(cvs.TargetRect) + + If codigo.Length=11 Then codigo = "0" & codigo + + If codigo.Length=12 Then + + Dim novoCodigo As String = preparaUPCA(codigo) + + If novoCodigo<>"" Then + + 'Dim canvas As B4XCanvas + Dim alturaPainel As Int = xview.Height + Dim larguraPainel As Int = xview.Width + Dim larguraCodigo As Int = xview.Width - 100dip + + 'Calcula as dimensões dos elementos do código de barras' + Dim alturaNumero As Int = 40dip 'altura dos números abaixo do código' + Dim larguraBarra As Int = larguraCodigo / 95 'largura de cada barra' + Dim alturaBarra As Int = alturaPainel - alturaNumero'altura das barras' + + 'Desenha as barras e os números do código de barras' + Dim rect As B4XRect + rect.Initialize(0, 0, larguraPainel, alturaPainel) + + cvs.DrawRect(rect, xui.Color_White, True, 0) 'fundo branco' + + Dim larguraAtual As Int = 50dip + + For i=0 To novoCodigo.Length-1 + Dim cor As Int = xui.Color_Black + If novoCodigo.CharAt(i) = "0" Then cor = xui.Color_White + If novoCodigo.CharAt(i) = "2" Then + cvs.DrawLine(larguraAtual, 0, larguraAtual, alturaBarra, cor, larguraBarra) + Else + cvs.DrawLine(larguraAtual, 0, larguraAtual, alturaBarra - alturaNumero, cor, larguraBarra) + End If + + larguraAtual = larguraAtual + larguraBarra + Next + + 'Desenha o número abaixo do código de barras' + Dim fonte As B4XFont = xui.CreateFontAwesome(63) + + Dim sb As StringBuilder + sb.Initialize + + For i=1 To codigo.Length + Dim codigoCaracter As String = codigo.CharAt(i-1) + sb.Append(codigoCaracter) + + If i=1 Then + sb.Append(" ") + Else If i=6 Then + sb.Append(" ") + Else If i=11 Then + sb.Append(" ") + Else If i=12 Then + 'nao adiciona nada + Else + sb.Append(" ") + End If + Next + + cvs.DrawText(sb.ToString, 1dip, alturaBarra+10dip, fonte, xui.Color_Black, "LEFT") + + End If + + End If + cvs.Invalidate + Dim res As B4XBitmap = cvs.CreateBitmap + cvs.Release + Return res +End Sub + +Private Sub preparaUPCA(codigo As String) As String + + Dim primeiroGrupo As String = codigo.SubString2(0,6) + Dim segundoGrupo As String = codigo.SubString2(6,12) + + Dim sequenciaNovo As String = "-JLLLLL=RRRRRS-" + Dim codigoNovo As String = "-" & primeiroGrupo & "=" & segundoGrupo & "-" + + Dim sb As StringBuilder + sb.Initialize + + For i=0 To codigoNovo.Length-1 + Dim digitoGrupo As String = codigoNovo.CharAt(i) + Dim sequenciaGrupo As String = sequenciaNovo.CharAt(i) + + If sequenciaGrupo="L" Then + If digitoGrupo="0" Then sb.Append("0001101") + If digitoGrupo="1" Then sb.Append("0011001") + If digitoGrupo="2" Then sb.Append("0010011") + If digitoGrupo="3" Then sb.Append("0111101") + If digitoGrupo="4" Then sb.Append("0100011") + If digitoGrupo="5" Then sb.Append("0110001") + If digitoGrupo="6" Then sb.Append("0101111") + If digitoGrupo="7" Then sb.Append("0111011") + If digitoGrupo="8" Then sb.Append("0110111") + If digitoGrupo="9" Then sb.Append("0001011") + Else If sequenciaGrupo="J" Then + If digitoGrupo="0" Then sb.Append("0001101".Replace("1","2")) + If digitoGrupo="1" Then sb.Append("0011001".Replace("1","2")) + If digitoGrupo="2" Then sb.Append("0010011".Replace("1","2")) + If digitoGrupo="3" Then sb.Append("0111101".Replace("1","2")) + If digitoGrupo="4" Then sb.Append("0100011".Replace("1","2")) + If digitoGrupo="5" Then sb.Append("0110001".Replace("1","2")) + If digitoGrupo="6" Then sb.Append("0101111".Replace("1","2")) + If digitoGrupo="7" Then sb.Append("0111011".Replace("1","2")) + If digitoGrupo="8" Then sb.Append("0110111".Replace("1","2")) + If digitoGrupo="9" Then sb.Append("0001011".Replace("1","2")) + Else If sequenciaGrupo="R" Then + If digitoGrupo="0" Then sb.Append("1110010") + If digitoGrupo="1" Then sb.Append("1100110") + If digitoGrupo="2" Then sb.Append("1101100") + If digitoGrupo="3" Then sb.Append("1000010") + If digitoGrupo="4" Then sb.Append("1011100") + If digitoGrupo="5" Then sb.Append("1001110") + If digitoGrupo="6" Then sb.Append("1010000") + If digitoGrupo="7" Then sb.Append("1000100") + If digitoGrupo="8" Then sb.Append("1001000") + If digitoGrupo="9" Then sb.Append("1110100") + Else If sequenciaGrupo="S" Then + If digitoGrupo="0" Then sb.Append("1110010".Replace("1","2")) + If digitoGrupo="1" Then sb.Append("1100110".Replace("1","2")) + If digitoGrupo="2" Then sb.Append("1101100".Replace("1","2")) + If digitoGrupo="3" Then sb.Append("1000010".Replace("1","2")) + If digitoGrupo="4" Then sb.Append("1011100".Replace("1","2")) + If digitoGrupo="5" Then sb.Append("1001110".Replace("1","2")) + If digitoGrupo="6" Then sb.Append("1010000".Replace("1","2")) + If digitoGrupo="7" Then sb.Append("1000100".Replace("1","2")) + If digitoGrupo="8" Then sb.Append("1001000".Replace("1","2")) + If digitoGrupo="9" Then sb.Append("1110100".Replace("1","2")) + Else If sequenciaGrupo="-" Then + sb.Append("202") + Else If sequenciaGrupo="=" Then + sb.Append("02020") + End If + Next + + Return sb.ToString +End Sub + +#End Region + + +#Region CODE128 + +Public Sub CODE128(codigo As String) As B4XBitmap + cvs.Initialize(xview) + cvs.ClearRect(cvs.TargetRect) + + Dim novoCodigo As String = preparaCODE128(codigo) + + If novoCodigo<>"" Then + + 'Dim canvas As B4XCanvas + Dim alturaPainel As Int = xview.Height + Dim larguraPainel As Int = xview.Width + Dim larguraCodigo As Int = xview.Width - 100dip + + 'Calcula as dimensões dos elementos do código de barras' + Dim alturaNumero As Int = 40dip 'altura dos números abaixo do código' + Dim larguraBarra As Int = larguraCodigo / ((codigo.Length*11)+11+11+13) 'largura de cada barra' + Dim alturaBarra As Int = alturaPainel - alturaNumero'altura das barras' + + + 'Desenha as barras e os números do código de barras' + Dim rect As B4XRect + rect.Initialize(0, 0, larguraPainel, alturaPainel) + + cvs.DrawRect(rect, xui.Color_White, True, 0) 'fundo branco' + + Dim larguraAtual As Int = 50dip + + For i=0 To novoCodigo.Length-1 + Dim cor As Int = xui.Color_Black + If novoCodigo.CharAt(i) = "0" Then cor = xui.Color_White + If novoCodigo.CharAt(i) = "2" Then + cvs.DrawLine(larguraAtual, 0, larguraAtual, alturaBarra, cor, larguraBarra) + Else If novoCodigo.CharAt(i) = "3" Then + cvs.DrawLine(larguraAtual, 0, larguraAtual, alturaBarra, xui.Color_Blue, larguraBarra) + Else + cvs.DrawLine(larguraAtual, 0, larguraAtual, alturaBarra - alturaNumero, cor, larguraBarra) + End If + + larguraAtual = larguraAtual + larguraBarra + Next + + 'Desenha o número abaixo do código de barras' + Dim fonte As B4XFont = xui.CreateFontAwesome(63) + + cvs.DrawText(codigo, cvs.TargetRect.CenterX, alturaBarra+10dip, fonte, xui.Color_Black, "CENTER") + + End If + + cvs.Invalidate + Dim res As B4XBitmap = cvs.CreateBitmap + cvs.Release + Return res +End Sub + +Private Sub preparaCODE128(codigo As String) As String + + Dim codigoNovo As String = codigo + + Dim sb As StringBuilder + sb.Initialize + + sb.Append("11010010000") ' iniciar codigo b + + Dim somatoria As Int = 104 ' valor do inicio + + For i=0 To codigoNovo.Length-1 + Dim digitoGrupo As String = codigoNovo.CharAt(i) + + Dim multiplicador As Int = (i+1) + Dim valorDigito As Int = valorDigitoCODE128(digitoGrupo) + Dim valorDigitoMultiplicado As Int = (multiplicador*valorDigito) + somatoria = (somatoria + valorDigitoMultiplicado) + + sb.Append(sequenciaDigitoCODE128(digitoGrupo)) + Next + + Dim checksum As Int = (somatoria Mod 103) + Dim checksumDigito As String = codigoDigitoCODE128(checksum) + + sb.Append(sequenciaDigitoCODE128(checksumDigito)) + + sb.Append("1100011101011") 'fim do codigo + + Return sb.ToString +End Sub + +Private Sub sequenciaDigitoCODE128(digitoGrupo As String) As String + If digitoGrupo=" " Then Return "11011001100" + If digitoGrupo="!" Then Return "11001101100" + If digitoGrupo=$"""$ Then Return "11001100110" + If digitoGrupo="#" Then Return "10010011000" + If digitoGrupo="$" Then Return "10010001100" + If digitoGrupo="%" Then Return "10001001100" + If digitoGrupo="&" Then Return "10011001000" + If digitoGrupo="'" Then Return "10011000100" + If digitoGrupo="(" Then Return "10001100100" + If digitoGrupo=")" Then Return "11001001000" + If digitoGrupo="*" Then Return "11001000100" + If digitoGrupo="+" Then Return "11000100100" + If digitoGrupo="," Then Return "10110011100" + If digitoGrupo="-" Then Return "10011011100" + If digitoGrupo="." Then Return "10011001110" + If digitoGrupo="/" Then Return "10111001100" + If digitoGrupo="0" Then Return "10011101100" + If digitoGrupo="1" Then Return "10011100110" + If digitoGrupo="2" Then Return "11001110010" + If digitoGrupo="3" Then Return "11001011100" + If digitoGrupo="4" Then Return "11001001110" + If digitoGrupo="5" Then Return "11011100100" + If digitoGrupo="6" Then Return "11001110100" + If digitoGrupo="7" Then Return "11101101110" + If digitoGrupo="8" Then Return "11101001100" + If digitoGrupo="9" Then Return "11100101100" + If digitoGrupo=":" Then Return "11100100110" + If digitoGrupo=";" Then Return "11101100100" + If digitoGrupo="<" Then Return "11100110100" + If digitoGrupo="=" Then Return "11100110010" + If digitoGrupo=">" Then Return "11011011000" + If digitoGrupo="?" Then Return "11011000110" + If digitoGrupo="@" Then Return "11000110110" + If digitoGrupo="A" Then Return "10100011000" + If digitoGrupo="B" Then Return "10001011000" + If digitoGrupo="C" Then Return "10001000110" + If digitoGrupo="D" Then Return "10110001000" + If digitoGrupo="E" Then Return "10001101000" + If digitoGrupo="F" Then Return "10001100010" + If digitoGrupo="G" Then Return "11010001000" + If digitoGrupo="H" Then Return "11000101000" + If digitoGrupo="I" Then Return "11000100010" + If digitoGrupo="J" Then Return "10110111000" + If digitoGrupo="K" Then Return "10110001110" + If digitoGrupo="L" Then Return "10001101110" + If digitoGrupo="M" Then Return "10111011000" + If digitoGrupo="N" Then Return "10111000110" + If digitoGrupo="O" Then Return "10001110110" + If digitoGrupo="P" Then Return "11101110110" + If digitoGrupo="Q" Then Return "11010001110" + If digitoGrupo="R" Then Return "11000101110" + If digitoGrupo="S" Then Return "11011101000" + If digitoGrupo="T" Then Return "11011100010" + If digitoGrupo="U" Then Return "11011101110" + If digitoGrupo="V" Then Return "11101011000" + If digitoGrupo="W" Then Return "11101000110" + If digitoGrupo="X" Then Return "11100010110" + If digitoGrupo="Y" Then Return "11101101000" + If digitoGrupo="Z" Then Return "11101100010" + If digitoGrupo="[" Then Return "11100011010" + If digitoGrupo="\" Then Return "11101111010" + If digitoGrupo="]" Then Return "11001000010" + If digitoGrupo="^" Then Return "11110001010" + If digitoGrupo="_" Then Return "10100110000" + If digitoGrupo="`" Then Return "10100001100" + If digitoGrupo="a" Then Return "10010110000" + If digitoGrupo="b" Then Return "10010000110" + If digitoGrupo="c" Then Return "10000101100" + If digitoGrupo="d" Then Return "10000100110" + If digitoGrupo="e" Then Return "10110010000" + If digitoGrupo="f" Then Return "10110000100" + If digitoGrupo="g" Then Return "10011010000" + If digitoGrupo="h" Then Return "10011000010" + If digitoGrupo="i" Then Return "10000110100" + If digitoGrupo="j" Then Return "10000110010" + If digitoGrupo="k" Then Return "11000010010" + If digitoGrupo="l" Then Return "11001010000" + If digitoGrupo="m" Then Return "11110111010" + If digitoGrupo="n" Then Return "11000010100" + If digitoGrupo="o" Then Return "10001111010" + If digitoGrupo="p" Then Return "10100111100" + If digitoGrupo="q" Then Return "10010111100" + If digitoGrupo="r" Then Return "10010011110" + If digitoGrupo="s" Then Return "10111100100" + If digitoGrupo="t" Then Return "10011110100" + If digitoGrupo="u" Then Return "10011110010" + If digitoGrupo="v" Then Return "11110100100" + If digitoGrupo="w" Then Return "11110010100" + If digitoGrupo="x" Then Return "11110010010" + If digitoGrupo="y" Then Return "11011011110" + If digitoGrupo="z" Then Return "11011110110" + If digitoGrupo="{" Then Return "11110110110" + If digitoGrupo="|" Then Return "10101111000" + If digitoGrupo="}" Then Return "10100011110" + If digitoGrupo="~" Then Return "10001011110" + + Return "" +End Sub + +Private Sub valorDigitoCODE128(digitoGrupo As String) As Int + + If digitoGrupo=" " Then Return 0 + If digitoGrupo="!" Then Return 1 + If digitoGrupo=$"""$ Then Return 2 + If digitoGrupo="#" Then Return 3 + If digitoGrupo="$" Then Return 4 + If digitoGrupo="%" Then Return 5 + If digitoGrupo="&" Then Return 6 + If digitoGrupo="'" Then Return 7 + If digitoGrupo="(" Then Return 8 + If digitoGrupo=")" Then Return 9 + If digitoGrupo="*" Then Return 10 + If digitoGrupo="+" Then Return 11 + If digitoGrupo="," Then Return 12 + If digitoGrupo="-" Then Return 13 + If digitoGrupo="." Then Return 14 + If digitoGrupo="/" Then Return 15 + If digitoGrupo="0" Then Return 16 + If digitoGrupo="1" Then Return 17 + If digitoGrupo="2" Then Return 18 + If digitoGrupo="3" Then Return 19 + If digitoGrupo="4" Then Return 20 + If digitoGrupo="5" Then Return 21 + If digitoGrupo="6" Then Return 22 + If digitoGrupo="7" Then Return 23 + If digitoGrupo="8" Then Return 24 + If digitoGrupo="9" Then Return 25 + If digitoGrupo=":" Then Return 26 + If digitoGrupo=";" Then Return 27 + If digitoGrupo="<" Then Return 28 + If digitoGrupo="=" Then Return 29 + If digitoGrupo=">" Then Return 30 + If digitoGrupo="?" Then Return 31 + If digitoGrupo="@" Then Return 32 + If digitoGrupo="A" Then Return 33 + If digitoGrupo="B" Then Return 34 + If digitoGrupo="C" Then Return 35 + If digitoGrupo="D" Then Return 36 + If digitoGrupo="E" Then Return 37 + If digitoGrupo="F" Then Return 38 + If digitoGrupo="G" Then Return 39 + If digitoGrupo="H" Then Return 40 + If digitoGrupo="I" Then Return 41 + If digitoGrupo="J" Then Return 42 + If digitoGrupo="K" Then Return 43 + If digitoGrupo="L" Then Return 44 + If digitoGrupo="M" Then Return 45 + If digitoGrupo="N" Then Return 46 + If digitoGrupo="O" Then Return 47 + If digitoGrupo="P" Then Return 48 + If digitoGrupo="Q" Then Return 49 + If digitoGrupo="R" Then Return 50 + If digitoGrupo="S" Then Return 51 + If digitoGrupo="T" Then Return 52 + If digitoGrupo="U" Then Return 53 + If digitoGrupo="V" Then Return 54 + If digitoGrupo="W" Then Return 55 + If digitoGrupo="X" Then Return 56 + If digitoGrupo="Y" Then Return 57 + If digitoGrupo="Z" Then Return 58 + If digitoGrupo="[" Then Return 59 + If digitoGrupo="\" Then Return 60 + If digitoGrupo="]" Then Return 61 + If digitoGrupo="^" Then Return 62 + If digitoGrupo="_" Then Return 63 + If digitoGrupo="`" Then Return 64 + If digitoGrupo="a" Then Return 65 + If digitoGrupo="b" Then Return 66 + If digitoGrupo="c" Then Return 67 + If digitoGrupo="d" Then Return 68 + If digitoGrupo="e" Then Return 69 + If digitoGrupo="f" Then Return 70 + If digitoGrupo="g" Then Return 71 + If digitoGrupo="h" Then Return 72 + If digitoGrupo="i" Then Return 73 + If digitoGrupo="j" Then Return 74 + If digitoGrupo="k" Then Return 75 + If digitoGrupo="l" Then Return 76 + If digitoGrupo="m" Then Return 77 + If digitoGrupo="n" Then Return 78 + If digitoGrupo="o" Then Return 79 + If digitoGrupo="p" Then Return 80 + If digitoGrupo="q" Then Return 81 + If digitoGrupo="r" Then Return 82 + If digitoGrupo="s" Then Return 83 + If digitoGrupo="t" Then Return 84 + If digitoGrupo="u" Then Return 85 + If digitoGrupo="v" Then Return 86 + If digitoGrupo="w" Then Return 87 + If digitoGrupo="x" Then Return 88 + If digitoGrupo="y" Then Return 89 + If digitoGrupo="z" Then Return 90 + If digitoGrupo="{" Then Return 91 + If digitoGrupo="|" Then Return 92 + If digitoGrupo="}" Then Return 93 + If digitoGrupo="~" Then Return 94 + + Return 0 +End Sub + +Private Sub codigoDigitoCODE128(digitoGrupo As Int) As String + + If digitoGrupo=0 Then Return " " + If digitoGrupo=1 Then Return "!" + If digitoGrupo=2 Then Return $"""$ + If digitoGrupo=3 Then Return "#" + If digitoGrupo=4 Then Return "$" + If digitoGrupo=5 Then Return "%" + If digitoGrupo=6 Then Return "&" + If digitoGrupo=7 Then Return "'" + If digitoGrupo=8 Then Return "(" + If digitoGrupo=9 Then Return ")" + If digitoGrupo=10 Then Return "*" + If digitoGrupo=11 Then Return "+" + If digitoGrupo=12 Then Return "," + If digitoGrupo=13 Then Return "-" + If digitoGrupo=14 Then Return "." + If digitoGrupo=15 Then Return "/" + If digitoGrupo=16 Then Return "0" + If digitoGrupo=17 Then Return "1" + If digitoGrupo=18 Then Return "2" + If digitoGrupo=19 Then Return "3" + If digitoGrupo=20 Then Return "4" + If digitoGrupo=21 Then Return "5" + If digitoGrupo=22 Then Return "6" + If digitoGrupo=23 Then Return "7" + If digitoGrupo=24 Then Return "8" + If digitoGrupo=25 Then Return "9" + If digitoGrupo=26 Then Return ":" + If digitoGrupo=27 Then Return ";" + If digitoGrupo=28 Then Return "<" + If digitoGrupo=29 Then Return "=" + If digitoGrupo=30 Then Return ">" + If digitoGrupo=31 Then Return "?" + If digitoGrupo=32 Then Return "@" + If digitoGrupo=33 Then Return "A" + If digitoGrupo=34 Then Return "B" + If digitoGrupo=35 Then Return "C" + If digitoGrupo=36 Then Return "D" + If digitoGrupo=37 Then Return "E" + If digitoGrupo=38 Then Return "F" + If digitoGrupo=39 Then Return "G" + If digitoGrupo=40 Then Return "H" + If digitoGrupo=41 Then Return "I" + If digitoGrupo=42 Then Return "J" + If digitoGrupo=43 Then Return "K" + If digitoGrupo=44 Then Return "L" + If digitoGrupo=45 Then Return "M" + If digitoGrupo=46 Then Return "N" + If digitoGrupo=47 Then Return "O" + If digitoGrupo=48 Then Return "P" + If digitoGrupo=49 Then Return "Q" + If digitoGrupo=50 Then Return "R" + If digitoGrupo=51 Then Return "S" + If digitoGrupo=52 Then Return "T" + If digitoGrupo=53 Then Return "U" + If digitoGrupo=54 Then Return "V" + If digitoGrupo=55 Then Return "W" + If digitoGrupo=56 Then Return "X" + If digitoGrupo=57 Then Return "Y" + If digitoGrupo=58 Then Return "Z" + If digitoGrupo=59 Then Return "[" + If digitoGrupo=60 Then Return "\" + If digitoGrupo=61 Then Return "]" + If digitoGrupo=62 Then Return "^" + If digitoGrupo=63 Then Return "_" + If digitoGrupo=64 Then Return "`" + If digitoGrupo=65 Then Return "a" + If digitoGrupo=66 Then Return "b" + If digitoGrupo=67 Then Return "c" + If digitoGrupo=68 Then Return "d" + If digitoGrupo=69 Then Return "e" + If digitoGrupo=70 Then Return "f" + If digitoGrupo=71 Then Return "g" + If digitoGrupo=72 Then Return "h" + If digitoGrupo=73 Then Return "i" + If digitoGrupo=74 Then Return "j" + If digitoGrupo=75 Then Return "k" + If digitoGrupo=76 Then Return "l" + If digitoGrupo=77 Then Return "m" + If digitoGrupo=78 Then Return "n" + If digitoGrupo=79 Then Return "o" + If digitoGrupo=80 Then Return "p" + If digitoGrupo=81 Then Return "q" + If digitoGrupo=82 Then Return "r" + If digitoGrupo=83 Then Return "s" + If digitoGrupo=84 Then Return "t" + If digitoGrupo=85 Then Return "u" + If digitoGrupo=86 Then Return "v" + If digitoGrupo=87 Then Return "w" + If digitoGrupo=88 Then Return "x" + If digitoGrupo=89 Then Return "y" + If digitoGrupo=90 Then Return "z" + If digitoGrupo=91 Then Return "{" + If digitoGrupo=92 Then Return "|" + If digitoGrupo=93 Then Return "}" + If digitoGrupo=94 Then Return "~" + + Return " " +End Sub + +#End Region \ No newline at end of file diff --git a/B4A/guna_reparto.b4a b/B4A/guna_reparto.b4a index 71d63ad..1c70036 100644 --- a/B4A/guna_reparto.b4a +++ b/B4A/guna_reparto.b4a @@ -210,8 +210,8 @@ Library22=sql Library23=togglelibrary Library24=xcustomlistview Library25=xui -Library26=zxing_scanner -Library27=xui views +Library26=xui views +Library27=zxing_scanner Library3=baqrcode Library4=byteconverter Library5=camera @@ -219,47 +219,48 @@ Library6=compressstrings Library7=core Library8=fileprovider Library9=fusedlocationprovider -ManifestCode='This code will be applied to the manifest file during compilation.~\n~'You do not need to modify it in most cases.~\n~'See this link for for more information: https://www.b4x.com/forum/showthread.php?p=78136~\n~'AddManifestText(~\n~'~\n~')~\n~'SetApplicationAttribute(android:icon, "@drawable/icon")~\n~'SetApplicationAttribute(android:label, "$LABEL$")~\n~'CreateResourceFromFile(Macro, Themes.LightTheme)~\n~''End of default text.~\n~'~\n~'''''' CAMBIA LA CLAVE API~\n~'AddApplicationText(~\n~'~\n~' ~\n~')~\n~'~\n~'CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)~\n~'SetApplicationAttribute(android:usesCleartextTraffic, "true")~\n~'AddManifestText()~\n~'AddPermission(android.permission.ACCESS_BACKGROUND_LOCATION)~\n~''AddManifestText()~\n~''AddManifestText()~\n~''AddManifestText() 'in order to access the device non-resettable identifiers such as IMEI and serial number.~\n~'AddManifestText()~\n~''/////////////// FLP y FBMessageing MOD Inicia /////////////////////~\n~''CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)~\n~''CreateResourceFromFile(Macro, FirebaseAnalytics.Firebase)~\n~''CreateResourceFromFile(Macro, FirebaseAnalytics.FirebaseAnalytics)~\n~''CreateResourceFromFile(Macro, FirebaseNotifications.FirebaseNotifications)~\n~'SetServiceAttribute(Tracker, android:foregroundServiceType, "location")~\n~''/////////////// FLP y FBMessageing MOD Termina /////////////////////~\n~'~\n~''Si al cargar un mapa de google mande este error "java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/ProtocolVersion". agregar la siguiente linea:~\n~'AddApplicationText()~\n~'~\n~''/////////////////////// App Updating ////////////////~\n~' AddManifestText(~\n~' )~\n~' AddApplicationText(~\n~' ~\n~' ~\n~' ~\n~' )~\n~' CreateResource(xml, provider_paths,~\n~' ~\n~' ~\n~' ~\n~' ~\n~' ~\n~' )~\n~'AddManifestText()~\n~'AddManifestText()~\n~'AddManifestText()~\n~'AddManifestText()~\n~'~\n~'AddPermission(android.permission.REQUEST_INSTALL_PACKAGES)~\n~'AddPermission(android.permission.INTERNET)~\n~'AddPermission(android.permission.INSTALL_PACKAGES)~\n~'AddPermission(android.permission.READ_EXTERNAL_STORAGE)~\n~'AddPermission(android.permission.WRITE_EXTERNAL_STORAGE)~\n~'AddPermission(android.permission.READ_PHONE_STATE)~\n~'AddPermission(android.permission.WAKE_LOCK)~\n~'CreateResourceFromFile(Macro, JhsIceZxing1.CaturePortrait)~\n~' ~\n~'SetApplicationAttribute(android:largeHeap, "true")~\n~'~\n~'AddManifestText(~\n~' ~\n~' )~\n~' AddPermission(android.permission.MANAGE_EXTERNAL_STORAGE)~\n~' SetApplicationAttribute(android:allowBackup, "false")~\n~' ~\n~' ~\n~' AddManifestText(~\n~' )~\n~' AddPermission(android.permission.READ_EXTERNAL_STORAGE)~\n~~\n~~\n~~\n~~\n~~\n~~\n~AddManifestText(~\n~~\n~)~\n~SetApplicationAttribute(android:icon, "@drawable/icon")~\n~SetApplicationAttribute(android:label, "$LABEL$")~\n~CreateResourceFromFile(Macro, Themes.LightTheme)~\n~AddApplicationText(~\n~)~\n~CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)~\n~ 'End of default text.~\n~''''' CAMBIA LA CLAVE API~\n~AddApplicationText(~\n~~\n~ ~\n~)~\n~AddApplicationText(~\n~~\n~)~\n~AddManifestText(~\n~~\n~)~\n~''CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)~\n~ 'End of default text.~\n~ ~\n~SetApplicationAttribute(android:usesCleartextTraffic, "true")~\n~AddManifestText(~\n~~\n~)~\n~AddManifestText(~\n~~\n~)~\n~AddPermission(android.permission.ACCESS_BACKGROUND_LOCATION)~\n~AddManifestText(~\n~~\n~)~\n~AddManifestText(~\n~~\n~) 'in order to access the device non-resettable identifiers such as IMEI and serial number.~\n~~\n~'///////////////////////// FLP Y PUSH /////////////~\n~' CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)~\n~' CreateResourceFromFile(Macro, FirebaseAnalytics.Firebase)~\n~' CreateResourceFromFile(Macro, FirebaseAnalytics.FirebaseAnalytics)~\n~' CreateResourceFromFile(Macro, FirebaseNotifications.FirebaseNotifications)~\n~ SetServiceAttribute(Tracker, android:foregroundServiceType, "location")~\n~'//////////////////////////////////////////////////////~\n~~\n~'/////////////////////// App Updating ////////////////~\n~AddManifestText(~\n~ )~\n~AddApplicationText(~\n~ ~\n~ ~\n~ ~\n~ )~\n~CreateResource(xml, provider_paths,~\n~ ~\n~ ~\n~ ~\n~ ~\n~ ~\n~ )~\n~AddManifestText()~\n~AddManifestText()~\n~AddManifestText()~\n~AddManifestText()~\n~~\n~AddPermission(android.permission.REQUEST_INSTALL_PACKAGES)~\n~AddPermission(android.permission.INTERNET)~\n~AddPermission(android.permission.INSTALL_PACKAGES)~\n~AddPermission(android.permission.READ_EXTERNAL_STORAGE)~\n~AddPermission(android.permission.WRITE_EXTERNAL_STORAGE)~\n~AddPermission(android.permission.READ_PHONE_STATE)~\n~AddPermission(android.permission.WAKE_LOCK)~\n~CreateResourceFromFile(Macro, JhsIceZxing1.CaturePortrait)~\n~ ~\n~SetApplicationAttribute(android:largeHeap, "true")~\n~~\n~AddManifestText(~\n~ )~\n~AddApplicationText(~\n~ ~\n~ ~\n~ ~\n~)~\n~CreateResource(xml, provider_paths,~\n~~\n~ ~\n~ ~\n~ ~\n~~\n~)~\n~AddPermission(android.permission.REQUEST_INSTALL_PACKAGES)~\n~AddPermission(android.permission.INTERNET)~\n~AddPermission(android.permission.INSTALL_PACKAGES)~\n~AddPermission(android.permission.READ_EXTERNAL_STORAGE)~\n~AddPermission(android.permission.WRITE_EXTERNAL_STORAGE)~\n~AddPermission("android.permission.MANAGE_EXTERNAL_STORAGE")~\n~AddPermission(android.permission.READ_PHONE_STATE)~\n~AddPermission(android.permission.WAKE_LOCK)~\n~SetApplicationAttribute(android:allowBackup, "false")~\n~AddManifestText()~\n~AddApplicationText(~\n~~\n~ ~\n~ )~\n~ ~\n~ 'Para que se registre para abrir bases de datos~\n~ AddActivityText(main,~\n~~\n~~\n~~\n~~\n~~\n~)~\n~AddPermission(android.permission.BLUETOOTH_ADVERTISE)~\n~AddPermission(android.permission.BLUETOOTH_CONNECT)~\n~AddPermission(android.permission.BLUETOOTH_SCAN)~\n~AddManifestText()~\n~~\n~ +ManifestCode='This code will be applied to the manifest file during compilation.~\n~'You do not need to modify it in most cases.~\n~'See this link for for more information: https://www.b4x.com/forum/showthread.php?p=78136~\n~'AddManifestText(~\n~'~\n~')~\n~'SetApplicationAttribute(android:icon, "@drawable/icon")~\n~'SetApplicationAttribute(android:label, "$LABEL$")~\n~'CreateResourceFromFile(Macro, Themes.LightTheme)~\n~''End of default text.~\n~'~\n~'''''' CAMBIA LA CLAVE API~\n~'AddApplicationText(~\n~'~\n~' ~\n~')~\n~'~\n~'CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)~\n~'SetApplicationAttribute(android:usesCleartextTraffic, "true")~\n~'AddManifestText()~\n~'AddPermission(android.permission.ACCESS_BACKGROUND_LOCATION)~\n~''AddManifestText()~\n~''AddManifestText()~\n~''AddManifestText() 'in order to access the device non-resettable identifiers such as IMEI and serial number.~\n~'AddManifestText()~\n~''/////////////// FLP y FBMessageing MOD Inicia /////////////////////~\n~''CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)~\n~''CreateResourceFromFile(Macro, FirebaseAnalytics.Firebase)~\n~''CreateResourceFromFile(Macro, FirebaseAnalytics.FirebaseAnalytics)~\n~''CreateResourceFromFile(Macro, FirebaseNotifications.FirebaseNotifications)~\n~'SetServiceAttribute(Tracker, android:foregroundServiceType, "location")~\n~''/////////////// FLP y FBMessageing MOD Termina /////////////////////~\n~'~\n~''Si al cargar un mapa de google mande este error "java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/ProtocolVersion". agregar la siguiente linea:~\n~'AddApplicationText()~\n~'~\n~''/////////////////////// App Updating ////////////////~\n~' AddManifestText(~\n~' )~\n~' AddApplicationText(~\n~' ~\n~' ~\n~' ~\n~' )~\n~' CreateResource(xml, provider_paths,~\n~' ~\n~' ~\n~' ~\n~' ~\n~' ~\n~' )~\n~'AddManifestText()~\n~'AddManifestText()~\n~'AddManifestText()~\n~'AddManifestText()~\n~'~\n~'AddPermission(android.permission.REQUEST_INSTALL_PACKAGES)~\n~'AddPermission(android.permission.INTERNET)~\n~'AddPermission(android.permission.INSTALL_PACKAGES)~\n~'AddPermission(android.permission.READ_EXTERNAL_STORAGE)~\n~'AddPermission(android.permission.WRITE_EXTERNAL_STORAGE)~\n~'AddPermission(android.permission.READ_PHONE_STATE)~\n~'AddPermission(android.permission.WAKE_LOCK)~\n~'CreateResourceFromFile(Macro, JhsIceZxing1.CaturePortrait)~\n~' ~\n~'SetApplicationAttribute(android:largeHeap, "true")~\n~'~\n~'AddManifestText(~\n~' ~\n~' )~\n~' AddPermission(android.permission.MANAGE_EXTERNAL_STORAGE)~\n~' SetApplicationAttribute(android:allowBackup, "false")~\n~' ~\n~' ~\n~' AddManifestText(~\n~' )~\n~' AddPermission(android.permission.READ_EXTERNAL_STORAGE)~\n~~\n~~\n~~\n~~\n~~\n~~\n~AddManifestText(~\n~~\n~)~\n~SetApplicationAttribute(android:icon, "@drawable/icon")~\n~SetApplicationAttribute(android:label, "$LABEL$")~\n~CreateResourceFromFile(Macro, Themes.LightTheme)~\n~AddApplicationText(~\n~)~\n~CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)~\n~ 'End of default text.~\n~''''' CAMBIA LA CLAVE API~\n~AddApplicationText(~\n~~\n~ ~\n~)~\n~AddApplicationText(~\n~~\n~)~\n~AddManifestText(~\n~~\n~)~\n~''CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)~\n~ 'End of default text.~\n~ ~\n~SetApplicationAttribute(android:usesCleartextTraffic, "true")~\n~AddManifestText(~\n~~\n~)~\n~AddManifestText(~\n~~\n~)~\n~AddPermission(android.permission.ACCESS_BACKGROUND_LOCATION)~\n~AddManifestText(~\n~~\n~)~\n~AddManifestText(~\n~~\n~) 'in order to access the device non-resettable identifiers such as IMEI and serial number.~\n~~\n~'///////////////////////// FLP Y PUSH /////////////~\n~' CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)~\n~' CreateResourceFromFile(Macro, FirebaseAnalytics.Firebase)~\n~' CreateResourceFromFile(Macro, FirebaseAnalytics.FirebaseAnalytics)~\n~' CreateResourceFromFile(Macro, FirebaseNotifications.FirebaseNotifications)~\n~ SetServiceAttribute(Tracker, android:foregroundServiceType, "location")~\n~'//////////////////////////////////////////////////////~\n~~\n~'/////////////////////// App Updating ////////////////~\n~AddManifestText(~\n~ )~\n~AddApplicationText(~\n~ ~\n~ ~\n~ ~\n~ )~\n~CreateResource(xml, provider_paths,~\n~ ~\n~ ~\n~ ~\n~ ~\n~ ~\n~ )~\n~AddManifestText()~\n~AddManifestText()~\n~AddManifestText()~\n~AddManifestText()~\n~~\n~AddPermission(android.permission.REQUEST_INSTALL_PACKAGES)~\n~AddPermission(android.permission.INTERNET)~\n~AddPermission(android.permission.INSTALL_PACKAGES)~\n~AddPermission(android.permission.READ_EXTERNAL_STORAGE)~\n~AddPermission(android.permission.WRITE_EXTERNAL_STORAGE)~\n~AddPermission(android.permission.READ_PHONE_STATE)~\n~AddPermission(android.permission.WAKE_LOCK)~\n~CreateResourceFromFile(Macro, JhsIceZxing1.CaturePortrait)~\n~ ~\n~SetApplicationAttribute(android:largeHeap, "true")~\n~~\n~AddManifestText(~\n~ )~\n~AddApplicationText(~\n~ ~\n~ ~\n~ ~\n~)~\n~CreateResource(xml, provider_paths,~\n~~\n~ ~\n~ ~\n~ ~\n~~\n~)~\n~AddPermission(android.permission.REQUEST_INSTALL_PACKAGES)~\n~AddPermission(android.permission.INTERNET)~\n~AddPermission(android.permission.INSTALL_PACKAGES)~\n~AddPermission(android.permission.READ_EXTERNAL_STORAGE)~\n~AddPermission(android.permission.WRITE_EXTERNAL_STORAGE)~\n~AddPermission("android.permission.MANAGE_EXTERNAL_STORAGE")~\n~AddPermission(android.permission.READ_PHONE_STATE)~\n~AddPermission(android.permission.WAKE_LOCK)~\n~SetApplicationAttribute(android:allowBackup, "false")~\n~AddManifestText()~\n~AddApplicationText(~\n~~\n~ ~\n~ )~\n~ ~\n~ 'Para que se registre para abrir bases de datos~\n~ AddActivityText(main,~\n~~\n~~\n~~\n~~\n~~\n~)~\n~AddPermission(android.permission.BLUETOOTH_ADVERTISE)~\n~AddPermission(android.permission.BLUETOOTH_CONNECT)~\n~AddPermission(android.permission.BLUETOOTH_SCAN)~\n~AddManifestText() Module1=appUpdater -Module10=C_Foto -Module11=C_Historico -Module12=C_Mapas -Module13=C_NoVenta -Module14=C_NuevoCliente -Module15=C_Pedidos -Module16=C_Principal -Module17=C_Productos -Module18=C_tabulador -Module19=C_TicketsDia +Module10=C_DetalleVenta +Module11=C_Foto +Module12=C_Historico +Module13=C_Mapas +Module14=C_NoVenta +Module15=C_NuevoCliente +Module16=C_Pedidos +Module17=C_Principal +Module18=C_Productos +Module19=C_tabulador Module2=B4XMainPage -Module20=C_UpdateAvailable -Module21=CameraExClass -Module22=DBRequestManager -Module23=EscPosPrinter -Module24=foto -Module25=ManageExternalStorage -Module26=MAPA_CLIENTE -Module27=MAPA_RUTAS -Module28=QRGenerator -Module29=Starter -Module3=BatteryUtilities -Module30=Subs -Module31=Tracker -Module4=C_Buscar -Module5=C_Cheklist -Module6=C_Cliente -Module7=C_Clientes -Module8=C_Detalle_Promo -Module9=C_DetalleVenta +Module20=C_TicketsDia +Module21=C_UpdateAvailable +Module22=CameraExClass +Module23=DBRequestManager +Module24=EscPosPrinter +Module25=foto +Module26=ManageExternalStorage +Module27=MAPA_CLIENTE +Module28=MAPA_RUTAS +Module29=QRGenerator +Module3=barcodeGenerator +Module30=Starter +Module31=Subs +Module32=Tracker +Module4=BatteryUtilities +Module5=C_Buscar +Module6=C_Cheklist +Module7=C_Cliente +Module8=C_Clientes +Module9=C_Detalle_Promo NumberOfFiles=96 NumberOfLibraries=27 -NumberOfModules=31 +NumberOfModules=32 Version=12.8 @EndOfDesignText@ #Region Project Attributes #ApplicationLabel: Guna Reparto #VersionCode: 1 - #VersionName: 5.09.20 + #VersionName: 5.10.16 'SupportedOrientations possible values: unspecified, landscape or portrait. #SupportedOrientations: portrait #CanInstallToExternalStorage: False diff --git a/B4A/guna_reparto.b4a.meta b/B4A/guna_reparto.b4a.meta index fbe2a92..005b661 100644 --- a/B4A/guna_reparto.b4a.meta +++ b/B4A/guna_reparto.b4a.meta @@ -24,6 +24,7 @@ ModuleBookmarks29= ModuleBookmarks3= ModuleBookmarks30= ModuleBookmarks31= +ModuleBookmarks32= ModuleBookmarks4= ModuleBookmarks5= ModuleBookmarks6= @@ -56,6 +57,7 @@ ModuleBreakpoints29= ModuleBreakpoints3= ModuleBreakpoints30= ModuleBreakpoints31= +ModuleBreakpoints32= ModuleBreakpoints4= ModuleBreakpoints5= ModuleBreakpoints6= @@ -88,12 +90,13 @@ ModuleClosedNodes29= ModuleClosedNodes3= ModuleClosedNodes30= ModuleClosedNodes31= +ModuleClosedNodes32= ModuleClosedNodes4= ModuleClosedNodes5= ModuleClosedNodes6= ModuleClosedNodes7= ModuleClosedNodes8= ModuleClosedNodes9= -NavigationStack=C_Cliente,CheckBox1_CheckedChange,2000,6,Diseñador Visual,principal.bal,-100,1,C_Cliente,gest_Click,567,2,C_Principal,JobDone,1765,0,C_Principal,B4XPage_CloseRequest,1922,0,C_Principal,B_carga_Click,1918,0,C_Principal,connecta_Click,1938,0,B4XMainPage,i_engrane_Click,1742,1,appUpdater,Process_Globals,74,1,C_Clientes,caculaRutaGPS,719,2,C_Cliente,imprime_pagare,3355,1 +NavigationStack=C_Cliente,imprime_abonopagare2,2376,1,C_Cliente,imprime_cancelarpagare,3793,0,C_Cliente,imprime_pagare,3306,0,C_Principal,JobDone,1268,0,C_Principal,inventario_Click,2749,0,C_Principal,b_rechazos_Click,2316,0,Diseñador Visual,principal.bal,-100,1,C_Principal,imp_LIQUIDACION,3022,0,C_Principal,b_impresion_rec_Click,2910,0,C_Cliente,B_IMP_Click,1139,0,C_Cliente,HIST_LongClick,4490,0 SelectedBuild=0 -VisibleModules=2,16,4,5,6,7,9,30,29,27 +VisibleModules=2,17,5,6,7,8,10,31,30,28