diff --git a/B4A/B4XMainPage.bas b/B4A/B4XMainPage.bas
index a1baed4..b2bfeb1 100644
--- a/B4A/B4XMainPage.bas
+++ b/B4A/B4XMainPage.bas
@@ -1273,12 +1273,17 @@ Sub Class_Globals
Dim a As Cursor
Dim f As Cursor
Private b_abono As Button
+ Private cb_importarBDWA As CheckBox
+ Private p_importarBDWA As Panel
+
+ Dim intentUsado As Boolean = False
End Sub
Public Sub Initialize
' B4XPages.GetManager.LogEvents = True
End Sub
+
'This event will be called once, before the page becomes visible.
Private Sub B4XPage_Created (Root1 As B4XView)
Root = Root1
@@ -1363,6 +1368,7 @@ Private Sub B4XPage_Created (Root1 As B4XView)
Subs.agregaColumna("kmt_info", "SECUENCIA", "INT")
+ Subs.agregaColumna("NOVENTA", "NV_FOTO2", "BLOB")
Subs.agregaColumna("kmt_info", "CAT_CL_SALDODISPONIBLE", "TEXT")
Subs.agregaColumna("kmt_info", "CAT_CL_DIASCREDITO", "INT")
Subs.agregaColumna("kmt_info", "HORAENT", "TEXT")
@@ -1416,6 +1422,11 @@ Private Sub B4XPage_Created (Root1 As B4XView)
' IMEN.Text = "" 'P.GetDeviceId
' IMEI = "" 'P.GetDeviceId
' End If
+
+ 'Revisamos si se disparo el intent de cargar la base de datos desde WhatApp.
+ If Subs.traeUsarIntentBDWA Then
+ Subs.importaBDDesdeWhatsApp
+ End If
End Sub
Sub B4XPage_Appear
@@ -1443,6 +1454,13 @@ Sub B4XPage_Appear
usuario = c.GetString("USUARIO")
End If
c.Close
+
+ cb_importarBDWA.Checked = Subs.traeUsarIntentBDWA
+ If user.Text.Trim = "KMTS1" Then
+ p_importarBDWA.Visible = True
+ Else
+ p_importarBDWA.Visible = False
+ End If
' Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_WRITE_EXTERNAL_STORAGE)
' Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
' If Result Then
@@ -1734,6 +1752,12 @@ Private Sub i_engrane_Click
' l_server.Text = Starter.server
et_server.Text = server
Subs.panelVisible(p_appUpdate, 0, 0)
+
+ If user.Text.Trim = "KMTS1" Then
+ p_importarBDWA.Visible = True
+ Else
+ p_importarBDWA.Visible = False
+ End If
End Sub
Private Sub B4XPage_CloseRequest As ResumableSub
@@ -2202,4 +2226,10 @@ End Sub
Private Sub p_appUpdate_Click
+End Sub
+
+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
\ No newline at end of file
diff --git a/B4A/C_Cliente.bas b/B4A/C_Cliente.bas
index c05a6ce..25d0f36 100644
--- a/B4A/C_Cliente.bas
+++ b/B4A/C_Cliente.bas
@@ -27,6 +27,10 @@ Sub Class_Globals
Dim NOMBRE As String
Dim c As Cursor
Dim s As Cursor
+ Dim limite_credito As Double
+ Dim banderaabono As String
+
+
Dim ListView1 As ListView
Dim la_cuenta As Label
Dim La_nombre As Label
@@ -174,6 +178,7 @@ End Sub
Sub B4XPage_Appear
banderaimp = 0
+ banderaabono = 0
escreditoono = 0
Tipoentrega = "CONTADO"
' Subs.centraPanel(p_principal, Root.Width)
@@ -415,6 +420,11 @@ Sub B4XPage_Appear
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
+ limite_credito = 0
+ l_montopag.Text = x1.GetString("CAT_CL_LIMITECREDITO")
+
' Dim fotomostrar As Cursor = Starter.skmt.ExecQuery("SELECT foto FROM FOTOS where CLIENTE IN (SELECT CUENTA FROM CUENTAA)")
' If fotomostrar.RowCount > 0 Then
' Dim fotomostrar1 As Cursor = Starter.skmt.ExecQuery("SELECT foto FROM FOTOS where CLIENTE IN (SELECT CUENTA FROM CUENTAA) AND foto IS NULL")
@@ -552,12 +562,15 @@ Sub gest_Click
If u.RowCount > 0 Then
If u.GetString("SALDO_PENDIENTE") <> 0 Then
If y.RowCount > 0 Then
- If u.GetString("SALDO_PENDIENTE") = y.GetString("a_abono") Then
+ Log(NumberFormat2(u.GetDouble("SALDO_PENDIENTE"),0,2,2,False) &" = " & NumberFormat2(y.GetDouble("a_abono"),0,2,2,False))
+ If NumberFormat2(u.GetDouble("SALDO_PENDIENTE"),0,2,2,False) = NumberFormat2(y.GetDouble("a_abono"),0,2,2,False) Then
checacredito
Else
+ Log("aqui")
MsgboxAsync("Para poder hacer una entrega se necesita liquidar el(los) pagare(s)","Atención")
End If
Else
+ Log("aqui")
MsgboxAsync("Para poder hacer una entrega se necesita liquidar el(los) pagare(s)","Atención")
End If
Else If u.GetString("SALDO_PENDIENTE") = 0 Then
@@ -585,6 +598,7 @@ Sub checacredito
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
+ 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)
@@ -607,6 +621,7 @@ Sub checacredito
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
@@ -743,9 +758,23 @@ Sub esPagoACreditoGuardamosPagare
B_IMP_Click
banderaimp = 1
Else
- 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
+ If l_total.Text.Replace(",","") <= limite_credito 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))
+ B_IMP_Click
+ banderaimp = 1
+ Else
+ 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)
+ 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))
+ tipo_abonox = "abono"
+ banderaabono = 1
+ banderaimp = 1
+ B_IMP_Click
+ End If
+ End If
+
End If
End Sub
@@ -1971,35 +2000,62 @@ Sub CreateListItem(mostrar As String, mostrar1 As String, mostrar2 As String) As
' Guardar referencia al label en el Tag del checkbox
CheckBox1.Tag = l_folio
+
Return p
End Sub
Sub CheckBox1_CheckedChange(Checked As Boolean)
- If ChangingCheckboxesProgrammatically Then Return
+
+
+ If ChangingCheckboxesProgrammatically Then Return
Dim chk As CheckBox = Sender
+ If chk.Checked = False Then
- If Checked Then
- ' Obtener directamente el label desde el Tag del checkbox
- Dim l_folio As Label = chk.Tag
- Log("Folio seleccionado: " & l_folio.Text)
- Folio = l_folio.Text
- ' Indicar que estamos cambiando checkboxes programáticamente
- ChangingCheckboxesProgrammatically = True
-
- ' Desmarcar todos los demás checkboxes
- For i = 0 To clv_abonos.Size - 1
- Dim p As Panel = clv_abonos.GetPanel(i)
- Dim panelCheckbox As CheckBox = GetCheckboxFromPanel(p)
-
- If panelCheckbox <> Null And panelCheckbox <> chk Then
- panelCheckbox.Checked = False
- End If
- Next
-
- ' Restaurar flag
- ChangingCheckboxesProgrammatically = False
+ et_abono.Text = ""
End If
+
+ If Checked Then
+ ' Obtener directamente el label desde el Tag del checkbox
+ Dim l_folio As Label = chk.Tag
+
+ Log("Folio seleccionado: " & l_folio.Text)
+ Folio = l_folio.Text
+ ' Indicar que estamos cambiando checkboxes programáticamente
+ ChangingCheckboxesProgrammatically = True
+
+ If tipo_abonox = "cxc" Then
+ Dim y As Cursor = Starter.skmt.ExecQuery2("SELECT IFNULL(SUM(a_abono),0) AS a_abono FROM ABONOS WHERE a_cliente IN (SELECT CUENTA FROM CUENTAA) AND a_ticket = ?", Array As String(Folio))
+ Log(Folio)
+ y.position = 0
+ Dim u As Cursor = Starter.skmt.ExecQuery2("SELECT IFNULL(SUM(SALDO_PENDIENTE),0) AS SALDO_PENDIENTE FROM ABONOSP WHERE CLIENTE IN (SELECT CUENTA FROM CUENTAA) AND NOTA = ?", Array As String(Folio))
+ u.Position = 0
+
+ et_abono.Text = u.GetDouble("SALDO_PENDIENTE") - y.GetDouble("a_abono")
+ Else If tipo_abonox = "abono" Then
+ Dim y As Cursor = Starter.skmt.ExecQuery2("SELECT IFNULL(SUM(a_abono),0) AS a_abono FROM ABONOS WHERE a_cliente IN (SELECT CUENTA FROM CUENTAA) AND a_ticket = ?", Array As String(Folio))
+ Log(Folio)
+ y.position = 0
+ c = Starter.skmt.ExecQuery($"select iFNULL(sum(PA_MONTO),0) AS SALDO_PENDIENTE from PAGARES where PA_CLIENTE = '${la_cuenta.Text}'"$)
+ c.Position = 0
+
+ et_abono.Text = c.GetDouble("SALDO_PENDIENTE") - y.GetDouble("a_abono")
+ End If
+
+ ' Desmarcar todos los demás checkboxes
+ For i = 0 To clv_abonos.Size - 1
+ Dim p As Panel = clv_abonos.GetPanel(i)
+ Dim panelCheckbox As CheckBox = GetCheckboxFromPanel(p)
+
+ If panelCheckbox <> Null And panelCheckbox <> chk Then
+ panelCheckbox.Checked = False
+ End If
+ Next
+
+ ' Restaurar flag
+ ChangingCheckboxesProgrammatically = False
+ End If
+
End Sub
Sub GetCheckboxFromPanel(p As Panel) As CheckBox
@@ -2022,108 +2078,492 @@ End Sub
Private Sub b_abono_Click
' p_abono.Visible = False
If et_abono.Text <> "" Then
- If almacen = 92 Then
+' If almacen = 92 Then
+'
+' Dim y As Cursor = Starter.skmt.ExecQuery2("SELECT IFNULL(SUM(a_abono),0) AS a_abono FROM ABONOS WHERE a_cliente IN (SELECT CUENTA FROM CUENTAA) AND a_ticket = ?", Array As String(Folio))
+' Log(Folio)
+' y.position = 0
+' Dim u As Cursor = Starter.skmt.ExecQuery2("SELECT IFNULL(SUM(SALDO_PENDIENTE),0) AS SALDO_PENDIENTE FROM ABONOSP WHERE CLIENTE IN (SELECT CUENTA FROM CUENTAA) AND NOTA = ?", Array As String(Folio))
+' u.Position = 0
+'
+' If y.GetString("a_abono") > 0 Then
+' Log((u.GetString("SALDO_PENDIENTE") + y.GetString("a_abono")))
+' If et_abono.text > (u.GetString("SALDO_PENDIENTE") - y.GetString("a_abono")) Then
+' MsgboxAsync("El monto a abonar no puede ser mayor que el monto del pagare seleccionado","Atención" )
+' Else
+' If et_abono.Text <> "" And et_abono.Text > 0 Then
+' If itemselect <> "SELECCIONA UNA OPCION" Then
+' If Folio <> "" Then
+' Msgbox2Async($"¿Seguro que quieres realizar un abono de $${et_abono.text} para este cliente?"$, "Guardar Abono", "Guardar", "Cancelar", "", Null, True)
+' Wait For Msgbox_Result (resultado As Int)
+' If resultado = DialogResponse.POSITIVE Then
+' imprime_abonopagare
+' End If
+' Else
+' MsgboxAsync("Por favor selecciona un pagare para aplicar el pago","Atención")
+' End If
+' Else
+' MsgboxAsync("Por favor selecciona un metodo de pago","Atención")
+' End If
+' End If
+' End If
+' Else
+'
+' Log("entramos aqui")
+' If Folio <> "" Then
+' If et_abono.text >= u.GetString("SALDO_PENDIENTE") Then
+' MsgboxAsync("El monto a abonar no puede ser mayor que el monto del pagare seleccionado","Atención" )
+' Else
+' If et_abono.Text <> "" And et_abono.Text > 0 Then
+' If itemselect <> "SELECCIONA UNA OPCION" Then
+'
+' Msgbox2Async($"¿Seguro que quieres realizar un abono de $${et_abono.text} para este cliente?"$, "Guardar Abono", "Guardar", "Cancelar", "", Null, True)
+' Wait For Msgbox_Result (resultado As Int)
+' If resultado = DialogResponse.POSITIVE Then
+' imprime_abonopagare
+' End If
+'
+' Else
+' MsgboxAsync("Por favor selecciona un metodo de pago","Atención")
+' End If
+' End If
+' End If
+' Else
+' MsgboxAsync("Por favor selecciona un pagare para aplicar el pago","Atención")
+' End If
+' End If
+'
+' Else
+
+' If et_abono.text > l_montoabonostotal.text Then
+' MsgboxAsync("El monto a abonar no puede ser mayor que el monto total","Atención" )
+' Else
+' If et_abono.Text <> "" And et_abono.Text > 0 Then
+' If itemselect <> "SELECCIONA UNA OPCION" Then
+' If Folio <> "" Then
+'
+'' Dim k As Cursor = Starter.skmt.ExecQuery("SELECT CUENTA from CUENTAA")
+'' k.Position = 0
+'' Log(k.GetString("CUENTA"))
+'' Dim y As Cursor = Starter.skmt.ExecQuery2("SELECT a_abono FROM ABONOS WHERE a_cliente = ?", Array As String(k.GetString("CUENTA")))
+'' y.position = 0
+'' If y.RowCount = 0 Then
+' Msgbox2Async($"¿Seguro que quieres realizar un abono de $${et_abono.text} para este cliente?"$, "Guardar Abono", "Guardar", "Cancelar", "", Null, True)
+' Wait For Msgbox_Result (resultado As Int)
+' If resultado = DialogResponse.POSITIVE Then
+' imprime_abonopagare
+' End If
+'' Else If et_abono.Text > y.GetString("a_abono") Then
+'' Msgbox2Async($"¿Seguro que quieres realizar un abono de $${et_abono.text} para este cliente?"$, "Guardar Abono", "Guardar", "Cancelar", "", Null, True)
+'' Wait For Msgbox_Result (resultado As Int)
+'' If resultado = DialogResponse.POSITIVE Then
+'' imprime_abonopagare
+'' End If
+'' Else If et_abono.Text = y.GetString("a_abono") Then
+'' p_abono.Visible = False
+'' et_abono.Text = ""
+'' Else If et_abono.Text < y.GetString("a_abono") Then
+'' p_abono.Visible = False
+'' MsgboxAsync("El pago no puede ser menor al monto capturado.","Atención")
+'' et_abono.Text = ""
+'' End If
+' Else
+' MsgboxAsync("Por favor selecciona un pagare para aplicar el pago","Atención")
+' End If
+' Else
+' MsgboxAsync("Por favor selecciona un metodo de pago","Atención")
+' End If
+' End If
+' End If
+
Dim y As Cursor = Starter.skmt.ExecQuery2("SELECT IFNULL(SUM(a_abono),0) AS a_abono FROM ABONOS WHERE a_cliente IN (SELECT CUENTA FROM CUENTAA) AND a_ticket = ?", Array As String(Folio))
Log(Folio)
y.position = 0
Dim u As Cursor = Starter.skmt.ExecQuery2("SELECT IFNULL(SUM(SALDO_PENDIENTE),0) AS SALDO_PENDIENTE FROM ABONOSP WHERE CLIENTE IN (SELECT CUENTA FROM CUENTAA) AND NOTA = ?", Array As String(Folio))
u.Position = 0
- If y.GetString("a_abono") > 0 Then
- Log((u.GetString("SALDO_PENDIENTE") + y.GetString("a_abono")))
- If et_abono.text >= (u.GetString("SALDO_PENDIENTE") - y.GetString("a_abono")) Then
- MsgboxAsync("El monto a abonar no puede ser mayor que el monto del pagare seleccionado","Atención" )
- Else
- If et_abono.Text <> "" And et_abono.Text > 0 Then
- If itemselect <> "SELECCIONA UNA OPCION" Then
- If Folio <> "" Then
- Msgbox2Async($"¿Seguro que quieres realizar un abono de $${et_abono.text} para este cliente?"$, "Guardar Abono", "Guardar", "Cancelar", "", Null, True)
- Wait For Msgbox_Result (resultado As Int)
- If resultado = DialogResponse.POSITIVE Then
- imprime_abonopagare
+ If y.GetDouble("a_abono") > 0 Then
+
+
+ If tipo_abonox = "cxc" Then
+
+ Log((u.GetDouble("SALDO_PENDIENTE") + y.GetDouble("a_abono")))
+ If et_abono.text > (u.GetDouble("SALDO_PENDIENTE") - y.GetDouble("a_abono")) Then
+ Log("aqui")
+ MsgboxAsync("El monto a abonar no puede ser mayor que el monto del pagare seleccionado","Atención" )
+ Else
+ If et_abono.Text <> "" And et_abono.Text > 0 Then
+ If itemselect <> "SELECCIONA UNA OPCION" Then
+ If Folio <> "" Then
+ Msgbox2Async($"¿Seguro que quieres realizar un abono de $${et_abono.text} para este cliente?"$, "Guardar Abono", "Guardar", "Cancelar", "", Null, True)
+ Wait For Msgbox_Result (resultado As Int)
+ If resultado = DialogResponse.POSITIVE Then
+ imprime_abonopagare
+ End If
+ Else
+ MsgboxAsync("Por favor selecciona un pagare para aplicar el pago","Atención")
End If
Else
- MsgboxAsync("Por favor selecciona un pagare para aplicar el pago","Atención")
+ MsgboxAsync("Por favor selecciona un metodo de pago","Atención")
End If
- Else
- MsgboxAsync("Por favor selecciona un metodo de pago","Atención")
End If
End If
+
+ Else If tipo_abonox = "abono" Then
+
+ If Folio <> "" Then
+ c = Starter.skmt.ExecQuery($"select iFNULL(sum(PA_MONTO),0) AS SALDO_PENDIENTE from PAGARES where PA_CLIENTE = '${la_cuenta.Text}'"$)
+ c.Position = 0
+' Log(c.GetString("SALDO_PENDIENTE") &" "& u.GetString("SALDO_PENDIENTE"))
+ If et_abono.text > (c.GetDouble("SALDO_PENDIENTE") - y.GetDouble("a_abono")) Then
+ Log("aqui")
+ MsgboxAsync("El monto a abonar no puede ser mayor que el monto del pagare seleccionado","Atención" )
+ Else
+ If et_abono.Text <> "" And et_abono.Text > 0 Then
+ If itemselect <> "SELECCIONA UNA OPCION" Then
+
+ Msgbox2Async($"¿Seguro que quieres realizar un abono de $${et_abono.text} para este cliente?"$, "Guardar Abono", "Guardar", "Cancelar", "", Null, True)
+ Wait For Msgbox_Result (resultado As Int)
+ If resultado = DialogResponse.POSITIVE Then
+ imprime_abonopagare
+ End If
+
+ Else
+ MsgboxAsync("Por favor selecciona un metodo de pago","Atención")
+ End If
+ End If
+ End If
+ Else
+ MsgboxAsync("Por favor selecciona un pagare para aplicar el pago","Atención")
+ End If
+
End If
+
+
Else
Log("entramos aqui")
- If Folio <> "" Then
- If et_abono.text >= u.GetString("SALDO_PENDIENTE") Then
- MsgboxAsync("El monto a abonar no puede ser mayor que el monto del pagare seleccionado","Atención" )
- Else
- If et_abono.Text <> "" And et_abono.Text > 0 Then
- If itemselect <> "SELECCIONA UNA OPCION" Then
+ If tipo_abonox = "cxc" Then
+ If Folio <> "" Then
+ If et_abono.text > u.GetDouble("SALDO_PENDIENTE") Then
+ Log("aqui")
+ MsgboxAsync("El monto a abonar no puede ser mayor que el monto del pagare seleccionado","Atención" )
+ Else
+ If et_abono.Text <> "" And et_abono.Text > 0 Then
+ If itemselect <> "SELECCIONA UNA OPCION" Then
- Msgbox2Async($"¿Seguro que quieres realizar un abono de $${et_abono.text} para este cliente?"$, "Guardar Abono", "Guardar", "Cancelar", "", Null, True)
- Wait For Msgbox_Result (resultado As Int)
- If resultado = DialogResponse.POSITIVE Then
- imprime_abonopagare
+ Msgbox2Async($"¿Seguro que quieres realizar un abono de $${et_abono.text} para este cliente?"$, "Guardar Abono", "Guardar", "Cancelar", "", Null, True)
+ Wait For Msgbox_Result (resultado As Int)
+ If resultado = DialogResponse.POSITIVE Then
+ imprime_abonopagare
+ End If
+
+ Else
+ MsgboxAsync("Por favor selecciona un metodo de pago","Atención")
End If
-
- Else
- MsgboxAsync("Por favor selecciona un metodo de pago","Atención")
- End If
- End If
- End If
- Else
- MsgboxAsync("Por favor selecciona un pagare para aplicar el pago","Atención")
- End If
- End If
-
- Else
-
- If et_abono.text > l_montoabonostotal.text Then
- MsgboxAsync("El monto a abonar no puede ser mayor que el monto total","Atención" )
- Else
- If et_abono.Text <> "" And et_abono.Text > 0 Then
- If itemselect <> "SELECCIONA UNA OPCION" Then
- If Folio <> "" Then
-
-' Dim k As Cursor = Starter.skmt.ExecQuery("SELECT CUENTA from CUENTAA")
-' k.Position = 0
-' Log(k.GetString("CUENTA"))
-' Dim y As Cursor = Starter.skmt.ExecQuery2("SELECT a_abono FROM ABONOS WHERE a_cliente = ?", Array As String(k.GetString("CUENTA")))
-' y.position = 0
-' If y.RowCount = 0 Then
- Msgbox2Async($"¿Seguro que quieres realizar un abono de $${et_abono.text} para este cliente?"$, "Guardar Abono", "Guardar", "Cancelar", "", Null, True)
- Wait For Msgbox_Result (resultado As Int)
- If resultado = DialogResponse.POSITIVE Then
- imprime_abonopagare
End If
-' Else If et_abono.Text > y.GetString("a_abono") Then
-' Msgbox2Async($"¿Seguro que quieres realizar un abono de $${et_abono.text} para este cliente?"$, "Guardar Abono", "Guardar", "Cancelar", "", Null, True)
-' Wait For Msgbox_Result (resultado As Int)
-' If resultado = DialogResponse.POSITIVE Then
-' imprime_abonopagare
-' End If
-' Else If et_abono.Text = y.GetString("a_abono") Then
-' p_abono.Visible = False
-' et_abono.Text = ""
-' Else If et_abono.Text < y.GetString("a_abono") Then
-' p_abono.Visible = False
-' MsgboxAsync("El pago no puede ser menor al monto capturado.","Atención")
-' et_abono.Text = ""
-' End If
- Else
- MsgboxAsync("Por favor selecciona un pagare para aplicar el pago","Atención")
End If
Else
- MsgboxAsync("Por favor selecciona un metodo de pago","Atención")
+ MsgboxAsync("Por favor selecciona un pagare para aplicar el pago","Atención")
+ End If
+ Else If tipo_abonox = "abono" Then
+
+ '''checar
+
+ If Folio <> "" Then
+ c = Starter.skmt.ExecQuery($"select iFNULL(sum(PA_MONTO),0) AS SALDO_PENDIENTE from PAGARES where PA_CLIENTE = '${la_cuenta.Text}'"$)
+ c.Position = 0
+' Log(c.GetString("SALDO_PENDIENTE") &" "& u.GetString("SALDO_PENDIENTE"))
+ If et_abono.text > c.GetDouble("SALDO_PENDIENTE") Then
+ Log("aqui")
+ MsgboxAsync("El monto a abonar no puede ser mayor que el monto del pagare seleccionado","Atención" )
+ Else
+ If et_abono.Text <> "" And et_abono.Text > 0 Then
+ If itemselect <> "SELECCIONA UNA OPCION" Then
+
+ Msgbox2Async($"¿Seguro que quieres realizar un abono de $${et_abono.text} para este cliente?"$, "Guardar Abono", "Guardar", "Cancelar", "", Null, True)
+ Wait For Msgbox_Result (resultado As Int)
+ If resultado = DialogResponse.POSITIVE Then
+ imprime_abonopagare
+ End If
+
+ Else
+ MsgboxAsync("Por favor selecciona un metodo de pago","Atención")
+ End If
+ End If
+ End If
+ Else
+ MsgboxAsync("Por favor selecciona un pagare para aplicar el pago","Atención")
End If
End If
+
End If
- End If
+
+
+' End If
End If
ime.HideKeyboard
End Sub
+Sub imprime_abonopagare2
+ c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
+ c.Position=0
+ usuario = c.GetString("USUARIO")
+ DateTime.DateFormat = "MM/dd/yyyy"
+ DateTime.TimeFormat = "HH:mm:ss"
+ sDate=DateTime.Date(DateTime.Now)
+ sTime=DateTime.Time(DateTime.Now)
+ 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
+
+ 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 = 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)
+ myimage = Printer1.DitherImage2D(myimage, 128)
+ myimage= Printer1.PackImage(myimage)
+ Printer1.WriteString(CRLF) ' nudge the printer to show the user something is happening
+ Printer1.WriteString(Printer1.REVERSE)
+ Printer1.PrintImage(myimage)
+ Printer1.WriteString(Printer1.UNREVERSE)
+ Dim telefono As String = ""
+ Dim c7 As Cursor = Starter.skmt.ExecQuery("select IFNULL(CAT_CL_TELEFONO,' ') AS CAT_CL_TELEFONO FROM kmt_info WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA)")
+ If c7.RowCount > 0 Then
+ c7.Position = 0
+ telefono = c7.GetString("CAT_CL_TELEFONO")
+ End If
+ c7.Close
+
+
+
+ Printer1.WriteString("DISTRIBUIDORA ROCHA TULA PACHUCA" & CRLF)
+' Printer1.WriteString(sucursal & CRLF)
+ Printer1.WriteString(sDate & CRLF)
+ Printer1.WriteString(sTime & CRLF)
+ Printer1.WriteString("Reparto:" & usuario & CRLF)
+ Printer1.WriteString("Tienda: " & La_nombre.Text & CRLF)
+ Printer1.WriteString("ID.Cliente: " & la_cuenta.Text & CRLF)
+ Printer1.WriteString("Calle: " & la_Calle.Text & CRLF)
+ Printer1.WriteString("Colonia: " & la_col.Text & CRLF)
+ Printer1.WriteString("Telefono: " & telefono & CRLF)
+ Printer1.WriteString(" " & CRLF)
+ Dim notaabono As String
+ Dim saldopendiente As Double
+ Dim saldopendiente2 As Double
+
+ If tipo_abonox = "abono" Then
+
+
+ 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
+ c.Position = 0
+ notaabono = c.GetString("HVD_NUM_TICKET")
+ End If
+ c.Close
+
+ c = Starter.skmt.ExecQuery($"select iFNULL(sum(PA_MONTO),0) AS SALDO_PENDIENTE from PAGARES where PA_CLIENTE = '${la_cuenta.Text}'"$)
+ If c.RowCount > 0 Then
+ c.Position = 0
+ saldopendiente = c.GetDouble("SALDO_PENDIENTE")
+ Log(c.GetString("SALDO_PENDIENTE"))
+ End If
+ c.Close
+
+
+ Dim saldopendiente1 As Double = 0
+ Dim c4 As Cursor= Starter.skmt.ExecQuery("SELECT Ifnull(SUM(a_abono),0) AS SALDO_PENDIENTE FROM ABONOS WHERE a_cliente IN (SELECT CUENTA FROM CUENTAA) and a_tipoabono is not null")
+ If c4.RowCount > 0 Then
+ c4.Position = 0
+ Dim c5 As Cursor= Starter.skmt.ExecQuery("SELECT Ifnull(a_abono,0) AS SALDO_PENDIENTE FROM ABONOS WHERE a_cliente IN (SELECT CUENTA FROM CUENTAA) and a_tipoabono is not null")
+ saldopendiente1 = c4.GetDouble("SALDO_PENDIENTE")
+
+
+ End If
+ c4.Close
+
+ Else If tipo_abonox = "cxc" Then
+ c = Starter.skmt.ExecQuery("SELECT NOTA, SUM(SALDO_PENDIENTE) AS SALDO_PENDIENTE FROM ABONOSP WHERE CLIENTE IN (SELECT CUENTA FROM CUENTAA)")
+ If c.RowCount > 0 Then
+ c.Position = 0
+ notaabono = c.GetString("NOTA")
+ saldopendiente = c.GetDouble("SALDO_PENDIENTE")
+ End If
+ c.Close
+
+ Dim saldopendiente1 As Double = 0
+ Dim c4 As Cursor= Starter.skmt.ExecQuery("SELECT Ifnull(SUM(a_abono),0) AS SALDO_PENDIENTE FROM ABONOS WHERE a_cliente IN (SELECT CUENTA FROM CUENTAA) and a_tipoabono is null")
+ If c4.RowCount > 0 Then
+ c4.Position = 0
+ Dim c5 As Cursor= Starter.skmt.ExecQuery("SELECT Ifnull(a_abono,0) AS SALDO_PENDIENTE FROM ABONOS WHERE a_cliente IN (SELECT CUENTA FROM CUENTAA) and a_tipoabono is null")
+ saldopendiente1 = c4.GetDouble("SALDO_PENDIENTE")
+ End If
+ c4.Close
+
+
+ c = Starter.skmt.ExecQuery2("SELECT SUM(SALDO_PENDIENTE) AS SALDO_PENDIENTE FROM ABONOSP WHERE CLIENTE IN (SELECT CUENTA FROM CUENTAA) AND NOTA = ?",Array As String(Folio))
+ If c.RowCount > 0 Then
+ c.Position = 0
+ saldopendiente2 = c.GetDouble("SALDO_PENDIENTE")
+ End If
+ c.Close
+
+ Dim saldopendiente3 As Double = 0
+ Dim c4 As Cursor= Starter.skmt.ExecQuery2("SELECT Ifnull(SUM(a_abono),0) AS SALDO_PENDIENTE FROM ABONOS WHERE a_cliente IN (SELECT CUENTA FROM CUENTAA) and a_tipoabono is null AND a_ticket = ?",Array As String(Folio))
+ If c4.RowCount > 0 Then
+ c4.Position = 0
+' Dim c5 As Cursor= Starter.skmt.ExecQuery("SELECT Ifnull(a_abono,0) AS SALDO_PENDIENTE FROM ABONOS WHERE a_cliente IN (SELECT CUENTA FROM CUENTAA) and a_tipoabono is null")
+ saldopendiente3 = c4.GetDouble("SALDO_PENDIENTE")
+ End If
+ c4.Close
+
+ End If
+
+
+
+' 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
+ Dim numpago As Int = c5.RowCount + 1
+ Log(notaabono)
+ Log(et_abono.Text)
+ Printer1.WriteString("Comprobante de pago del pagare" & CRLF)
+ Printer1.WriteString("Folio: " & NOTA &"-"&(numpago)& CRLF)
+ Printer1.WriteString("Monto deuda: " & (NumberFormat2(l_total.Text.Replace(",",""),0,2,2,False)) & CRLF)
+ Printer1.WriteString("Monto abono: " & (NumberFormat2((l_total.Text.Replace(",","")-limite_credito),0,2,2,False)) & CRLF)
+ Printer1.WriteString("Restante "&NOTA&": " &(NumberFormat(limite_credito,0,2)) & CRLF)
+ Printer1.WriteString("Fecha Abono: " & sDate & CRLF)
+ Printer1.WriteString(" " & CRLF)
+ Printer1.WriteString(" " & CRLF)
+ Printer1.WriteString(" " & CRLF)
+ Printer1.WriteString(" " & CRLF)
+ Printer1.WriteString(" " & CRLF)
+ Printer1.WriteString(" " & CRLF)
+ 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"
+
+' 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)
+ 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
+' imprime_abonopagare
+' Else
+' p_abono.Visible = False
+' Starter.skmt.ExecNonQuery($"INSERT INTO ABONOS(a_usuario, a_ruta, a_cliente, a_abono, a_fecha,a_tipoabono,TIPO_PAGO,a_ticket,a_numpago) VALUES ('${Subs.traeUsuarioDeBD}', '${Subs.traeRuta(Subs.traeCliente)}', '${Subs.traeCliente}' ,'${NumberFormat2((l_total.Text.Replace(",","")-limite_credito),0,2,2,False) }', '${Subs.fechaKMT(DateTime.now)}', 1,'${itemselect}','${Folio}','${numpago}')"$)
+' ToastMessageShow("Abono guardado", False)
+' End If
+
+ If banderaimp = 1 Then
+ Msgbox2Async("Deseas imprimir de nuevo el abono?", "ATENCION","SI","", "NO",LoadBitmap(File.DirAssets,"alert2.png"), False)
+ Wait For Msgbox_Result (resultado As Int)
+ If resultado = DialogResponse.POSITIVE Then
+ imprime_abonopagare2
+ Else
+ Starter.skmt.ExecNonQuery($"INSERT INTO ABONOS(a_usuario, a_ruta, a_cliente, a_abono, a_fecha,a_tipoabono,TIPO_PAGO,a_ticket,a_numpago) VALUES ('${Subs.traeUsuarioDeBD}', '${Subs.traeRuta(Subs.traeCliente)}', '${Subs.traeCliente}' ,'${NumberFormat2((l_total.Text.Replace(",","")-limite_credito),0,2,2,False) }', '${Subs.fechaKMT(DateTime.now)}', 1,'EFECTIVO','${NOTA}','${numpago}')"$)
+ ToastMessageShow("Abono guardado", False)
+ Guardado
+ End If
+' printer.Flush
+ ' printer.Close
+ Else If banderaimp = 0 Then
+ Msgbox2Async("Deseas imprimir de nuevo el PAGARE?", "ATENCION","SI","", "NO",LoadBitmap(File.DirAssets,"alert2.png"), False)
+ Wait For Msgbox_Result (resultado As Int)
+ If resultado = DialogResponse.POSITIVE Then
+ imprime_abonopagare2
+ End If
+ End If
+
+
+
+End Sub
+
'Sub hazpago
' h = Starter.skmt.ExecQuery("SELECT CUENTA from CUENTAA")
' h.Position = 0
@@ -2250,7 +2690,7 @@ Sub imprime_abonopagare
If tipo_abonox = "abono" Then
- c = Starter.skmt.ExecQuery($"select distinct hvd_num_ticket from hist_ventas where hvd_cliente = '${la_cuenta.Text}'"$)
+ 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
c.Position = 0
notaabono = c.GetString("HVD_NUM_TICKET")
@@ -2933,7 +3373,11 @@ Sub imprime_pagare
If resultado = DialogResponse.POSITIVE Then
imprime_pagare
Else
- Guardado
+ If banderaabono = 1 Then
+ imprime_abonopagare2
+ Else
+ Guardado
+ End If
End If
' printer.Flush
' printer.Close
@@ -3765,4 +4209,222 @@ Private Sub l_telefono_LongClick As ResumableSub
End If
Return True
+End Sub
+
+Private Sub HIST_LongClick
+ c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
+ c.Position=0
+ usuario = c.GetString("USUARIO")
+ DateTime.DateFormat = "MM/dd/yyyy"
+ sDate=DateTime.Date(DateTime.Now)
+ sTime=DateTime.Time(DateTime.Now)
+ 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
+
+ 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 = 28
+ BLANCO = " "
+ Dim Ticket As String = 0
+ Dim c6 As Cursor = Starter.skmt.ExecQuery("select distinct HVD_NUM_TICKET FROM HIST_VENTAS WHERE HVD_CLIENTE IN (SELECT CUENTA FROM CUENTAA)")
+ If c6.RowCount > 0 Then
+ c6.Position = 0
+ 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)
+ sTime=DateTime.Time(DateTime.Now)
+ Printer1.WriteString("Tienda: " & B4XPages.MainPage.cliente.La_nombre.Text & CRLF)
+ Printer1.WriteString("ID.Cliente: " & B4XPages.MainPage.cliente.la_cuenta.Text & CRLF)
+ Printer1.WriteString("Num. Ticket: " & Ticket & CRLF)
+ Printer1.WriteString("Fecha: " & sDate &" " & sTime & CRLF)
+ Printer1.WriteString("------------------------------" & CRLF)
+ c = Starter.skmt.ExecQuery("SELECT * FROM HIST_VENTAS WHERE HVD_CLIENTE IN (SELECT CUENTA FROM CUENTAA)")
+ If c.RowCount > 0 Then
+ Printer1.WriteString("------------Picking------------" & CRLF)
+ Printer1.WriteString("------------------------------" & CRLF)
+ Printer1.WriteString("ESTE NO ES UN TICKET DE ENTREGA" & CRLF)
+ Printer1.WriteString("SOLO ES INFORMATIVO" & CRLF)
+ Printer1.WriteString("------------------------------" & CRLF)
+ Printer1.WriteString(" " & CRLF)
+ ' aqui es donde esta el pedo de julieta de los descuentos quitar el precio2 pero meter un if para saber si es ruta especial o es normal o que show.
+ 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, HVD_RECHAZO FROM HIST_VENTAS WHERE HVD_CLIENTE IN (Select CUENTA from cuentaa) order by HVD_PROID"$)
+ If S.RowCount>0 Then
+ 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)
+
+
+' Dim punit As String = NumberFormat2((s.GETSTRING("HVD_COSTO_TOT")/s.GetString("HVD_CANT")),0,2,2,False)
+' TAMANO = punit.Length + TAMANO
+ '
+ '' Private ptot As String = NumberFormat2((punit*s.GetString("HVD_CANT")),0,2,2,False)
+' Private ptot As String = NumberFormat2(( (s.GetString("HVD_CANT") - s.GetString("HVD_RECHAZOCANT")) * punit ),0,2,2,False)
+' TAMANO = ptot.Length + TAMANO
+'
+' ESPACIO = (ESPACIO - TAMANO)/2
+ '' Log(ESPACIO)
+' For E=0 To ESPACIO -1
+' BLANCO = " " & BLANCO
+' Next
+' Printer1.Justify = 0
+' Printer1.WriteString( (s.GetString("HVD_CANT") - s.GetString("HVD_RECHAZOCANT"))& BLANCO)
+' Printer1.Justify = 1
+' Printer1.WriteString( punit & BLANCO)
+' Printer1.Justify = 2
+' Printer1.WriteString( ptot & CRLF )
+' TAMANO = 0
+' ESPACIO = 29
+' BLANCO = " "
+ 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)
+
+' 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)
+' TAMANO = punit.Length + TAMANO
+' vc5.Close
+'
+' Private ptot As String = NumberFormat2(( (s.GetString("HVD_CANT") - s.GetString("HVD_RECHAZOCANT")) * punit ),0,2,2,False)
+' TAMANO = ptot.Length + TAMANO
+'
+' ESPACIO = (ESPACIO - TAMANO)/2
+ '' Log(ESPACIO)
+' For E=0 To ESPACIO -1
+' BLANCO = " " & BLANCO
+' Next
+' Printer1.Justify = 0
+' Printer1.WriteString( (s.GetString("HVD_CANT") - s.GetString("HVD_RECHAZOCANT"))& BLANCO)
+' Printer1.Justify = 1
+' Printer1.WriteString( punit & BLANCO)
+' Printer1.Justify = 2
+' Printer1.WriteString(ptot& CRLF )
+' TAMANO = 0
+' ESPACIO = 29
+' BLANCO = " "
+ Printer1.Justify = 0
+ End If
+ End If
+ Next
+ End If
+ End If
+ 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}' AND HVD_PRONOMBRE <> 'Cobranza Pendiente' order by HVD_CODPROMO, ESPROMO DESC, HVD_PROID"$)
+
+ If S.RowCount>0 Then
+ Printer1.WriteString("-------PROMOS ENTREGA--------" & CRLF)
+ Printer1.WriteString("Cant. Precio Importe" & CRLF)
+ Printer1.WriteString("------------------------------" & CRLF)
+
+ For i=0 To S.RowCount -1
+ S.Position=i
+ If s.GetString("HVD_CANT") - s.GetString("HVD_RECHAZOCANT") > 0 Then
+ If s.GetString("HVD_CODPROMO") <> Subs.traeAlmacen Then
+ Printer1.Justify = 0
+ If s.GetString("HVD_CODPROMO") = s.GetString("HVD_PROID") Then
+ Printer1.WriteString("* "&s.GetString("HVD_PRONOMBRE") & CRLF)
+ Else
+ Printer1.WriteString((s.GetString("HVD_CANT") - s.GetString("HVD_RECHAZOCANT"))&" "&s.GetString("HVD_PRONOMBRE") & 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
+ '
+' Private ptot As String = NumberFormat2((punit*s.GetString("HVD_CANT")),0,2,2,False)
+' TAMANO = ptot.Length + TAMANO
+' ESPACIO = (ESPACIO - TAMANO)/2
+' Log(ESPACIO)
+' For E=0 To ESPACIO -1
+' BLANCO = " " & BLANCO
+' Next
+' Printer1.Justify = 0
+' Printer1.WriteString( (s.GetString("HVD_CANT") - s.GetString("HVD_RECHAZOCANT"))& BLANCO)
+' Printer1.Justify = 1
+' Printer1.WriteString( punit & BLANCO)
+' Printer1.Justify = 2
+' Printer1.WriteString(ptot & CRLF )
+' TAMANO = 0
+' ESPACIO = 29
+' BLANCO = " "
+ Printer1.Justify = 0
+ Else
+ End If
+ End If
+ Next
+ End If
+ Printer1.WriteString(" " & CRLF)
+ Printer1.WriteString(" " & CRLF)
+ Printer1.WriteString("------------------------------" & CRLF)
+ Printer1.WriteString("ESTE NO ES UN TICKET DE ENTREGA" & CRLF)
+ Printer1.WriteString("SOLO ES INFORMATIVO" & CRLF)
+ Printer1.WriteString("------------------------------" & CRLF)
+ Printer1.WriteString(" " & CRLF)
+ Printer1.WriteString(" " & CRLF)
+ Printer1.WriteString(" " & CRLF)
+ Sleep(1000)
+ Printer1.DisConnect
+ ProgressDialogHide
+' Guardado
End Sub
\ No newline at end of file
diff --git a/B4A/C_NoVenta.bas b/B4A/C_NoVenta.bas
index 706b91f..ee41537 100644
--- a/B4A/C_NoVenta.bas
+++ b/B4A/C_NoVenta.bas
@@ -26,6 +26,15 @@ Sub Class_Globals
Dim reqManager As DBRequestManager
Private cb_reprogramar As CheckBox
Dim reprogramar As Int = 0
+
+ Private camEx As CameraExClass
+ Dim frontCamera As Boolean = False
+ Private p_cam As Panel
+ Dim nombrefoto As String = "0"
+ Private p_camara As Panel
+ Private teclado As IME
+ Dim fototomada As String
+ Private b_foto As Button
End Sub
'You can add more parameters here.
@@ -52,6 +61,10 @@ Sub B4XPage_Appear
r_4.Checked = False
cb_reprogramar.Checked = False
+ p_camara.Width = Root.Width
+ p_camara.Height = Root.Height
+ p_camara.Visible = False
+
CallSubDelayed(Tracker, "Track")
CallSubDelayed(Tracker, "StartFLPSmall")
If Tracker.FLP.IsInitialized And Tracker.FLP.GetLastKnownLocation.IsInitialized Then 'Si tenemos "UltimaUbicaccionConocida" la usamos.
@@ -62,6 +75,11 @@ Sub B4XPage_Appear
End If
End Sub
+
+
+
+
+
Sub GPS_LocationChanged (Location1 As Location)
' LogColor($"Entrando a Cliente.GPS_LocationChanged"$, Colors.red)
If Tracker.FLP.GetLastKnownLocation.IsInitialized And Tracker.FLP.GetLastKnownLocation.Latitude <> 0 Then
@@ -265,4 +283,148 @@ Private Sub cb_reprogramar_CheckedChange(Checked As Boolean)
Else
reprogramar = 0
End If
+End Sub
+
+Private Sub InitializeCamera2
+ Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_CAMERA)
+ Wait For B4XPage_PermissionResult (Permission As String, resultC As Boolean)
+ If resultC Then
+ camEx.Initialize(p_cam, frontCamera, Me, "Camera1")
+ frontCamera = camEx.Front
+ Log("inicializamos Camara")
+ Else
+ ToastMessageShow("No permission Camara!!!", True)
+ End If
+End Sub
+
+Sub Camera1_Ready (Success As Boolean)
+ Log("Camara ready")
+ If Success Then
+ camEx.SetJpegQuality(90)
+ camEx.SetContinuousAutoFocus
+ camEx.CommitParameters
+ camEx.StartPreview
+ Log(camEx.GetPreviewSize)
+ Else
+ ToastMessageShow("Cannot open camera.", True)
+ Log("Cannot open camera")
+ End If
+End Sub
+
+Sub Camera1_PictureTaken (Data()As Byte)
+
+ DateTime.DateFormat="ddMMyyyyHHmmss"
+ nombrefoto = DateTime.Now & "_FOTO1.png"
+ teclado.HideKeyboard
+ fototomada = nombrefoto
+
+
+ Log("tome foto")
+ Dim filename As String = fototomada
+ 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
+
+ camEx.SavePictureToFile(Data, Dirp&Dir, filename)
+ camEx.StartPreview 'restart preview
+' ToastMessageShow("Picture saved." & CRLF & "File size: " & File.Size(Dir, filename) & Dir &"," & filename, True)
+ Log("Picture saved." & CRLF & "File size: " & File.Size(Dir, filename) & Dir &"," & filename)
+
+
+ Dim img As B4XBitmap = xui.LoadBitmapResize(File.DirInternal & Dir, filename, 225, 300, True)
+ Dim out As OutputStream = File.OpenOutput(File.DirInternal & Dir & Dir2, filename, False)
+ img.WriteToStream(out, 100, "PNG")
+' foto4 = File.ReadBytes(File.DirInternal & Dir & Dir2, nombrefoto3)
+
+ out.Close
+
+
+
+
+
+ motivo = "CERRADO"
+ DateTime.DateFormat = "MM/dd/yyyy"
+ DateTime.TimeFormat="HHmmss"
+ sDate=DateTime.Date(DateTime.Now)
+ sTime=DateTime.Time(DateTime.Now)
+ c=Starter.skmt.ExecQuery("select CUENTA from cuentaa")
+ c.Position = 0
+ cuenta = c.GetString("CUENTA")
+ c=Starter.skmt.ExecQuery("select usuario from usuarioa")
+ c.Position = 0
+ usuario = c.GetString("USUARIO")
+ c.Close
+ Dim rutaactualizar As String
+ Dim rut As Cursor = Starter.skmt.ExecQuery("SELECT CAT_CL_RUTA FROM kmt_info WHERE CAT_CL_CODIGO IN (SELECT CUENTA FROM CUENTAA)")
+ If rut.RowCount > 0 Then
+ rut.Position = 0
+ rutaactualizar = rut.GetString("CAT_CL_RUTA")
+ End If
+ Starter.skmt.ExecNonQuery($"DELETE FROM NOVENTA WHERE NV_CLIENTE IN (select cuenta from cuentaa)"$)
+ Starter.skmt.ExecNonQuery2("INSERT INTO NOVENTA (NV_CLIENTE,NV_FECHA,NV_USER,NV_MOTIVO,NV_COMM,NV_LAT,NV_LON,NV_RUTA,NV_REPROGRAMAR,NV_FOTO) VALUES(?,?,?,?,?,?,?,?,?,?) ", Array As Object (cuenta,sDate & sTime, usuario, motivo,e_comm.text, B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps,rutaactualizar,reprogramar,File.ReadBytes(File.DirInternal & Dir & Dir2, nombrefoto)))
+ Starter.skmt.ExecNonQuery($"UPDATE kmt_info set gestion = 3, HORAENT = '${sDate & " " & sTime}' where CAT_CL_CODIGO In (select cuenta from cuentaa) and CAT_CL_RUTA = '${rutaactualizar}'"$)
+ Starter.skmt.ExecNonQuery("DELETE FROM PEDIDO WHERE PE_CLIENTE IN (SELECT CUENTA FROM CUENTAA)")
+ Starter.skmt.ExecNonQuery("update HIST_VENTAS SET HVD_RECHAZO = 1, HVD_RECHAZOCANT = HVD_CANT, HVD_RECHAZOCANTC = CANTC, BCAJAS = 0 , CANTC = 0 WHERE HVD_CLIENTE IN (SELECT CUENTA FROM CUENTAA)")
+ Starter.skmt.ExecNonQuery($"update HIST_VENTAS set HVD_RECHAZO = 2, HVD_RECHAZOCANT = HVD_RECHAZOCANT WHERE HVD_PROID = HVD_CODPROMO and HVD_CLIENTE in (Select CUENTA from cuentaa)"$)
+
+ p_camara.Visible = False
+ StopCamera2
+ B4XPages.ShowPage("Principal")
+
+End Sub
+
+Private Sub p_camara_Click
+
+End Sub
+
+Private Sub b_foto_Click
+
+ camEx.TakePicture
+ p_camara.Visible = False
+
+End Sub
+
+Private Sub StopCamera2
+' Capturing = False
+ If camEx.IsInitialized Then
+ camEx.Release
+ End If
+End Sub
+
+Private Sub r_1_CheckedChange(Checked As Boolean)
+ InitializeCamera2
+ p_camara.Visible = True
+ Subs.centraPanel(p_cam,p_camara.Width)
+
+ p_camara.BringToFront
+End Sub
+
+
+
+Private Sub B4XPage_CloseRequest As ResumableSub
+ If p_camara.Visible Then
+ p_camara.Visible = False
+ StopCamera2
+ r_1.Checked = False
+ Else
+ B4XPages.ShowPage("Cliente")
+ End If
+ Return False
End Sub
\ No newline at end of file
diff --git a/B4A/C_Principal.bas b/B4A/C_Principal.bas
index a68e12c..0a435f5 100644
--- a/B4A/C_Principal.bas
+++ b/B4A/C_Principal.bas
@@ -857,16 +857,16 @@ End Sub
Sub envioinfo
' NOVENTA
- c = Starter.skmt.ExecQuery("SELECT NV_CLIENTE,NV_FECHA,NV_USER,NV_MOTIVO,NV_COMM,NV_LAT,NV_LON, NV_FOTO, NV_REPROGRAMAR FROM NOVENTA")
+ c = Starter.skmt.ExecQuery("SELECT NV_CLIENTE,NV_FECHA,NV_USER,NV_MOTIVO,NV_COMM,NV_LAT,NV_LON, NV_FOTO,NV_FOTO2, NV_REPROGRAMAR FROM NOVENTA")
D=Starter.skmt.ExecQuery("SELECT COUNT(*) AS CUANTOS_NOVENTA FROM NOVENTA")
If c.RowCount>0 Then
For i=0 To c.RowCount -1
c.Position=i
- foto1 = c.GetBlob("NV_FOTO")
+ Dim fotoenvio() As Byte = C.GetBlob("NV_FOTO2")
Dim cmd As DBCommand
cmd.Initialize
- cmd.Name = "insert_reparto_REPG_GUNA_VN"
- cmd.Parameters = Array As Object(C.GetString("NV_CLIENTE"),C.GetString("NV_FECHA"),C.GetString("NV_USER"),C.GetString("NV_MOTIVO"),C.GetString("NV_COMM"),C.GetString("NV_LAT"),C.GetString("NV_LON"), ALMACEN, l_ruta.Text, C.GetString("NV_REPROGRAMAR"))
+ cmd.Name = "insert_reparto_REPG_GUNA_VN2"
+ cmd.Parameters = Array As Object(C.GetString("NV_CLIENTE"),C.GetString("NV_FECHA"),C.GetString("NV_USER"),C.GetString("NV_MOTIVO"),C.GetString("NV_COMM"),C.GetString("NV_LAT"),C.GetString("NV_LON"), ALMACEN, l_ruta.Text, C.GetString("NV_REPROGRAMAR"),fotoenvio)
reqManager.ExecuteCommand(cmd , "inst_noventa_")
Next
c.Close
@@ -1956,7 +1956,7 @@ Sub connecta_Click
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "select_ruta_re_REPG_GUNA_VN"
- cmd.Parameters = Array As Object(ALMACEN, e_ruta.text, imei)
+ cmd.Parameters = Array As Object()
' Log($"${ALMACEN}, ${e_ruta.text}, ${imei}"$)
reqManager.ExecuteQuery(cmd , 0, "ruta")
ToastMessageShow("Validando Conexión." , True)
@@ -2861,4 +2861,26 @@ Sub StartPrinter
cmp20.Connect(PairedDevices.Get(L1.Get(resimp)))
End If
End If
+End Sub
+
+Private Sub ImageView1_LongClick
+ ' NOVENTA
+ c = Starter.skmt.ExecQuery("SELECT NV_CLIENTE,NV_FECHA,NV_USER,NV_MOTIVO,NV_COMM,NV_LAT,NV_LON, NV_FOTO,NV_FOTO2, NV_REPROGRAMAR FROM NOVENTA")
+ D=Starter.skmt.ExecQuery("SELECT COUNT(*) AS CUANTOS_NOVENTA FROM NOVENTA")
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ c.Position=i
+
+ Dim fotoenvia() As Byte = c.GetBlob("NV_FOTO")
+ Dim cmd As DBCommand
+ cmd.Initialize
+ cmd.Name = "insert_reparto_REPG_GUNA_VN2"
+ cmd.Parameters = Array As Object(C.GetString("NV_CLIENTE"),C.GetString("NV_FECHA"),C.GetString("NV_USER"),C.GetString("NV_MOTIVO"),C.GetString("NV_COMM"),C.GetString("NV_LAT"),C.GetString("NV_LON"), ALMACEN, l_ruta.Text,fotoenvia)
+ reqManager.ExecuteCommand(cmd , "inst_noventa_")
+ Next
+ c.Close
+ End If
+ d.Position=0
+ cuantos_noventa = D.GetString("CUANTOS_NOVENTA")
+ d.Close
End Sub
\ No newline at end of file
diff --git a/B4A/Files/cliente.bal b/B4A/Files/cliente.bal
index a4784af..10fa184 100644
Binary files a/B4A/Files/cliente.bal and b/B4A/Files/cliente.bal differ
diff --git a/B4A/Files/detalleventa.bal b/B4A/Files/detalleventa.bal
index 17b93f4..d51144d 100644
Binary files a/B4A/Files/detalleventa.bal and b/B4A/Files/detalleventa.bal differ
diff --git a/B4A/Files/login.bal b/B4A/Files/login.bal
index 58d9a0b..d8de9a4 100644
Binary files a/B4A/Files/login.bal and b/B4A/Files/login.bal differ
diff --git a/B4A/Files/no_venta.bal b/B4A/Files/no_venta.bal
index 798cf96..9445d10 100644
Binary files a/B4A/Files/no_venta.bal and b/B4A/Files/no_venta.bal differ
diff --git a/B4A/Subs.bas b/B4A/Subs.bas
index 3fa207f..78e19ce 100644
--- a/B4A/Subs.bas
+++ b/B4A/Subs.bas
@@ -19,6 +19,8 @@ Sub Process_Globals
Dim rutaMaxPoints As Int = 3000
Dim rutaHrsAtras As Int = 48
' Dim rutaInicioHoy As String = ""
+ Dim in As Intent
+ Dim intentUsado As Boolean = False
End Sub
'Pone el valor de phn.Model en la variable global "devModel"
@@ -41,6 +43,62 @@ Sub getPhnId As String 'ignore
Return devModel
End Sub
+' Se revisa si hay una intención (intent) de abrir una base de datos y si es así, entonces se importa esa base de datos.
+Sub importaBDDesdeWhatsApp
+' Private tmpBDWA As Boolean = traeUsarIntentBDWA
+ Log("Revisamos intent de importar desde whatsapp")
+ Log(B4XPages.MainPage.intentUsado)
+ Log(in)
+ If Not(in.IsInitialized) Then in = B4XPages.GetNativeParent(B4XPages.MainPage).GetStartingIntent ' Si se usa esta funcion en Mainpage, se pone "Me" en lugar de B4XPages.MainPage.
+ If Not(B4XPages.MainPage.intentUsado) And in <> Null Then
+' Log(in)
+ LogColor("Importamos base de datos desde Whatsapp.", Colors.blue)
+ B4XPages.MainPage.intentUsado = True
+' Log(in.As(String))
+ If in.GetData <> Null Then
+ Dim XmlData As String
+ XmlData = in.GetData
+ Try
+ Dim OutStr As OutputStream = File.OpenOutput(File.DirInternal,"kmt.db",False)
+ Dim InStr As InputStream = File.OpenInput("ContentDir",XmlData)
+ File.Copy2(InStr,OutStr)
+ LogColor("BD copiada a interna.", Colors.Blue)
+ OutStr.Close
+ If in.As(String).Contains("whatsapp") Then ToastMessageShow("BD cargada desde Whatsapp", False)
+ Catch
+ Log(LastException)
+ End Try
+' ExitApplication
+' 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', '${tmpBDWA}')"$)
+ Private a As Cursor = Starter.skmt.ExecQuery($"select CAT_VA_VALOR from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'APP_NAME'"$)
+ If a.RowCount > 0 Then
+ a.Position = 0
+ ToastMessageShow($"BD de "${a.GetString("CAT_VA_VALOR")}" cargada."$, True)
+ End If
+ a = Starter.skmt.ExecQuery($"select * from usuarioa"$)
+ If a.RowCount > 0 Then
+ a.Position = 0
+ B4XPages.MainPage.user.Text = a.GetString("USUARIO")
+ B4XPages.MainPage.pass.Text = a.GetString("PASS")
+ End If
+ End If
+ End If
+End Sub
+
+'Regresa si se debe de usar el intent de importar la base d datos desde Whatsapp.
+Sub traeUsarIntentBDWA As Boolean 'ignore
+ Private BDWA As Boolean = False
+ Private x As Cursor = Starter.skmt.ExecQuery($"select CAT_VA_VALOR from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'IMPORTAR_BD_WA'"$)
+ If x.RowCount > 0 Then
+ x.Position = 0
+ If x.GetString("CAT_VA_VALOR") = "true" Then BDWA = True
+ End If
+' Log($"cb_importarBDWA = ${BDWA}"$)
+ Return BDWA
+End Sub
+
+
'Comprime y regresa un texto (str) en base64
Sub compress(str As String) As String 'ignore
'Requiere la libreria "CompressStrings"
diff --git a/B4A/guna_reparto.b4a b/B4A/guna_reparto.b4a
index 116121f..c259dc8 100644
--- a/B4A/guna_reparto.b4a
+++ b/B4A/guna_reparto.b4a
@@ -219,7 +219,7 @@ 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~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~AddPermission(android.permission.BLUETOOTH_ADVERTISE)~\n~AddPermission(android.permission.BLUETOOTH_CONNECT)~\n~AddPermission(android.permission.BLUETOOTH_SCAN)~\n~AddManifestText()
+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~
Module1=appUpdater
Module10=C_Foto
Module11=C_Historico
@@ -254,12 +254,12 @@ Module9=C_DetalleVenta
NumberOfFiles=96
NumberOfLibraries=27
NumberOfModules=31
-Version=13.4
+Version=12.8
@EndOfDesignText@
#Region Project Attributes
#ApplicationLabel: Guna Reparto
#VersionCode: 1
- #VersionName: 5.08.29
+ #VersionName: 5.08.31
'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 745d7bd..d5ee55a 100644
--- a/B4A/guna_reparto.b4a.meta
+++ b/B4A/guna_reparto.b4a.meta
@@ -94,6 +94,6 @@ ModuleClosedNodes6=
ModuleClosedNodes7=
ModuleClosedNodes8=
ModuleClosedNodes9=
-NavigationStack=C_Cliente,b_cancel_pagare_Click,2995,2,C_Cliente,Class_Globals,1,0,C_Cliente,CheckBox1_CheckedChange,1976,0,C_Cliente,b_cxc_Click,1794,6,C_Cliente,cb_tipopago_SelectedIndexChanged,1788,0,C_Cheklist,Class_Globals,0,0,C_Cliente,b_acred_Click,1771,0,C_Cliente,b_abono_Click,2070,6,C_Principal,Class_Globals,0,0,B4XMainPage,B4XPage_Created,1304,0
+NavigationStack=C_Cliente,esPagoACreditoGuardamosPagare,764,0,C_Cliente,b_cxc_Click,1822,0,C_Cliente,b_abono_Click,2157,6,C_Cliente,CreateListItem,1985,0,C_NoVenta,GUARDA_Click,176,0,C_NoVenta,Camera1_PictureTaken,378,0,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,connecta_Click,1939,0
SelectedBuild=0
VisibleModules=2,16,4,5,6,7,9,30,29,27