- VERSION 5.01.25

- Cambios para envio de mensaje por WhatsApp (incompletos)
This commit is contained in:
2025-02-04 21:52:10 -06:00
parent ead56c8758
commit 74c7113329
8 changed files with 886 additions and 44 deletions

View File

@@ -59,16 +59,47 @@ Sub Class_Globals
Dim l_atiende2 As Label
Dim DATOS As Button
Dim Guardar As Button
Dim NUEVO As Button
Dim b_mapa As Button
Private l_total As Label
Private HIST As Button
Dim PASA_IMP As String
Private B_IMP As Button
Dim total_cliente As String
Dim CREDITO As String
Dim limiteDeCredito As String = "0"
Dim pagarePendiente As Boolean = False
Private p_principal As Panel
Private B_PASO2 As Button
Private L_CANT As Label
Private b_aceptaCredito As Button
Private b_cancelaCredito As Button
Private et_montoacredito As EditText
Private l_limite As Label
Private p_transPagares As Panel
Private p_pagares As Panel
Private total As String
Private l_montoEfectivo As Label
Private i_qr As B4XImageView
Private p_qr As Panel
Private b_cerrarqr As Button
Private qr As QRGenerator
Private l_numeroRegistrado As Label
Private b_confirmar As Button
Private NOTA As String = ""
Private l_estaVenta As Label
Private p_transPagare2 As Panel
Private b_abonar As Button
Private p_abonoPagare As Panel
Private b_aceptaAbono As Button
Private b_cancelaAbono As Button
Private l_montoRestante As Label
Private et_montoAbono As EditText
Private Label15 As Label
Private l_totalPagare As Label
Private l_numRegistradoAbono As Label
Private p_transAbonoPagare As Panel
Private saldoPendiente As String
Private l_tituloAbono As Label
End Sub
'You can add more parameters here.
@@ -83,6 +114,17 @@ Private Sub B4XPage_Created (Root1 As B4XView)
g.Initialize("GPS")
' Activity.LoadLayout("info_gral")
Root.LoadLayout("cliente")
p_transPagares.left = 0 : p_transPagares.Top = 0
p_transPagares.Width = Root.Width : p_transPagares.Height = Root.Height
p_transPagare2.left = 0 : p_transPagare2.Top = 0
p_transPagare2.Width = Root.Width : p_transPagare2.Height = Root.Height
p_transAbonoPagare.left = 0 : p_transAbonoPagare.Top = 0
p_transAbonoPagare.Width = Root.Width : p_transAbonoPagare.Height = Root.Height
Subs.centraPanel(p_pagares, Root.Width)
Subs.centraPanel(p_qr, p_transPagare2.Width)
Subs.centraPanel(p_abonoPagare, p_transAbonoPagare.Width)
Subs.centraEtiqueta(l_tituloAbono, p_abonoPagare.Width)
qr.Initialize(i_qr.mBase.Width)
c=Starter.skmt.ExecQuery("select CAT_CL_CODIGO, CAT_CL_RUTA, CAT_CL_NOMBRE, CAT_CL_ATIENDE1, CAT_CL_ATIENTE2, CAT_CL_TELEFONO, CAT_CL_EMAIL, CAT_CL_CALLE, CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)")
s=Starter.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
s.Position=0
@@ -117,6 +159,8 @@ End Sub
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
Sub B4XPage_Appear
total = "0"
et_montoacredito.Text = ""
Subs.centraPanel(p_principal, Root.Width)
Starter.skmt.Initialize(Starter.ruta,"kmt.db", True)
reqManager.Initialize(Me, B4XPages.MainPage.SERVER)
@@ -124,6 +168,8 @@ Sub B4XPage_Appear
s=Starter.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
s.Position=0
c.Position=0
l_montoEfectivo.Text = ""
et_montoacredito.Text = ""
la_cuenta.Text = c.GetString("CAT_CL_CODIGO")
La_nombre.Text = c.GetString("CAT_CL_NOMBRE")
NOMBRE = c.GetString("CAT_CL_NOMBRE")
@@ -135,6 +181,8 @@ Sub B4XPage_Appear
la_cp.Text = c.GetString("CAT_CL_CP")
l_entre1.Text = c.GetString("CAT_CL_CALLE1")
l_entre2.Text = c.GetString("CAT_CL_CALLE2")
l_numeroRegistrado.Text = "Num. Registrado: " & c.GetString("CAT_CL_TELEFONO")
l_numRegistradoAbono.Text = "Num. Registrado: " & c.GetString("CAT_CL_TELEFONO")
B4XPages.MainPage.almacen = c.GetString("CAT_CL_IDALMACEN")
If c.GetString("CAT_CL_ATIENDE1") <> Null And c.GetString("CAT_CL_ATIENDE1") <> "null" Then
l_atiende.Text = c.GetString("CAT_CL_ATIENDE1")
@@ -157,16 +205,40 @@ Sub B4XPage_Appear
C.Close
If Existe <> 0 Then
c = Starter.skmt.ExecQuery("select SUM(HVD_CANT) AS PC_NOART, SUM(HVD_COSTO_TOT) AS PC_MONTO from HIST_VENTAS where HVD_CLIENTE in (Select CUENTA from cuentaa) and HVD_RECHAZO = 0 and hvd_codpromo <> HVD_PROID ")
C.Position=0
C.Position = 0
L_CANT.Text = c.GetString("PC_NOART")
l_total.Text = Round2(c.GetString("PC_MONTO"), 2)
total = Round2(c.GetString("PC_MONTO"), 2)
End If
' Private cym As Map = Subs.traeCantYMonto2(Subs.traeCliente)
' L_CANT.Text = cym.Get("cantidad")
' l_total.Text = Round2(cym.Get("monto"), 2)
p_transPagares.Visible = False
If CREDITO = "1" Then
Msgbox("AVISO","SE TIENE QUE IMPRIMIR PAGARÉ") 'ignore
' Msgbox("AVISO","SE TIENE QUE IMPRIMIR PAGARÉ") 'ignore
Dim pa As ResultSet = Starter.skmt.ExecQuery($"select * from pagares where cliente = '${Subs.traeCliente}' and ruta_preventa = (select cat_cl_ruta from kmt_info where cat_cl_codigo = '${Subs.traeCliente}') order by nota desc limit 1"$)
Log("-------------->> " & pa.RowCount)
pagarePendiente = False 'Valor por default
Do While pa.NextRow
Log(pa.GetString("NOTA"))
pagarePendiente = True
saldoPendiente = pa.GetString("SALDO_PENDIENTE")
l_totalPagare.Text = $"Total del pagaré: $${NumberFormat2(saldoPendiente, 1, 2, 2, True)}"$
Loop
If pagarePendiente Then
Msgbox2Async("El cliente tiene un pagare pendiente, y es NECESARIO liquidarlo para realizar la entrega, ¿desea liquidarlo?", "PAGARÉ PENDIENTE", "SI", "", "NO", Null, True)
Wait For Msgbox_Result (result As Int)
If result=DialogResponse.POSITIVE Then
liquidarPagare
End If
b_abonar.Visible = True
Else
b_abonar.Visible = False
End If
Private lc As ResultSet = Starter.skmt.ExecQuery($"select cat_cl_limitecredito from kmt_info where cat_cl_codigo = '${Subs.traeCliente}'"$)
Do While lc.NextRow
limiteDeCredito = lc.GetString("CAT_CL_LIMITECREDITO")
Loop
End If
' Private cym As Map = Subs.traemosCantYMonto(clv_pedido)
' L_CANT.Text = cym.Get("cantidad")
@@ -189,10 +261,36 @@ Sub GPS_LocationChanged (Location1 As Location)
End Sub
Sub ListView1_ItemLongClick (Position As Int, Value As Object)
End Sub
Sub gest_Click
Log($"${CREDITO}, ${pagarePendiente}"$)
Msgbox2Async("¿La venta va a ser a credito?", "AVISO", "SI", "CANCELAR", "NO", Null, True)
Wait For Msgbox_Result (result As Int)
If result=DialogResponse.POSITIVE Then
If CREDITO = 1 And Not(pagarePendiente) Then
p_transPagares.BringToFront
p_transPagares.Visible = True
l_limite.Text = $"Límite de crédito: $${NumberFormat2(limiteDeCredito, 1,2,2,True)}"$
l_estaVenta.Text = $"Esta venta: $${NumberFormat2(l_total.text, 1,2,2,True)}"$
Else
Msgbox2Async("El cliente no es sujeto a crédito o tiene pagares pendientes", "AVISO", "OK", "", "", Null, False)
Wait For Msgbox_Result (result As Int)
Log(result)
If result=DialogResponse.POSITIVE Then
' guardaVenta
End If
End If
else if result=DialogResponse.NEGATIVE Then
guardaVenta
else if result=DialogResponse.CANCEL Then
End If
End Sub
Sub guardaVenta
DateTime.DateFormat = "MM/dd/yyyy"
sDate=DateTime.Date(DateTime.Now)
sTime=DateTime.Time(DateTime.Now)
@@ -215,7 +313,6 @@ Sub gest_Click
d.Position = 0
Dim fechaprev As String = d.GetString("HVD_FECHA")
d.Close
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_IDALMACEN) VALUES (?,?,?,?,?,?,?,?) ", Array As Object (cuenta,sDate &" "& sTime, usuario, "ENTREGA","ENTREGA COMPLETA", B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps, B4XPages.MainPage.almacen))
Starter.skmt.ExecNonQuery2("INSERT INTO REPARTO_GEO (CLIENTE, USUARIO, FECHA_PUNTEO, LATITUD, LONGITUD, ALMACEN, RUTA_REPARTO, RUTA_PREV, FECHA_PREVENTA, TIPO,ENVIO) VALUES(?,?,?,?,?,?,?,?,?,?,0)",Array As String (la_cuenta.Text, usuario, sDate &" "&sTime, B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps, B4XPages.MainPage.almacen, ruta, rutapre, fechaprev, "ENTREGADO"))
@@ -250,7 +347,7 @@ Sub Guardar_Click
B4XPages.ShowPage("Principal")
End Sub
Sub NUEVO_Click
Sub b_mapa_Click
StartActivity(MAPA_CLIENTE)
End Sub
@@ -450,8 +547,7 @@ Sub B_PASO2_Click
usuario = c.GetString("USUARIO")
c.Close
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) VALUES(?,?,?,?,?,?,?) ", Array As Object (cuenta,sDate & sTime, usuario, "PASO","PASO ESPERA", B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps))
Starter.skmt.ExecNonQuery2("INSERT INTO NOVENTA (NV_CLIENTE,NV_FECHA,NV_USER,NV_MOTIVO,NV_COMM,NV_LAT,NV_LON) VALUES(?,?,?,?,?,?,?) ", Array As Object (cuenta,sDate & sTime, usuario, "PASO","PASO ESPERA", B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps))
B4XPages.ShowPage("Principal")
End Sub
@@ -493,8 +589,180 @@ Sub JobDone(Job As HttpJob)
Next
Next
End If
If resultado.Tag.As(String).IndexOf("insertaPagare_") > -1 Then
Private NOTA As String= resultado.Tag
NOTA = NOTA.SubString(NOTA.IndexOf("_")+1)
Log(NOTA)
p_transPagare2.Visible = True
CrearQR(NOTA)
End If
If resultado.Tag.As(String).IndexOf("pagareConfirmado_") > -1 Then
Private NOTA As String= resultado.Tag
NOTA = NOTA.SubString(NOTA.IndexOf("_")+1)
Log(NOTA)
' Log(resultado.Rows.Size)
If resultado.Rows.Size > 0 Then
p_transPagare2.Visible = False
guardaVenta
Msgbox("¡Pagare confirmado!", "AVISO") 'ignore
Else
ToastMessageShow("El pagare NO ha sido confirmado por el cliente!", True)
End If
End If
End If
Job.Release
End If
End Sub
Private Sub b_cancelaCredito_Click
p_transPagares.Visible = False
End Sub
Private Sub b_aceptaCredito_Click
' almacen, RUTA, ruta_reparto, clienteid, monto, fecha (yyyy/mm/dd HH:mm:ss)
' almacen, RUTA, ruta_reparto, clienteid, monto, nota, fecha
p_transPagares.Visible = False
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 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)
Starter.skmt.ExecNonQuery($"insert into PAGARES_NUEVOS (NOTA, CLIENTE, ALMACEN, MONTO, RUTA_PREVENTA, REPARTO, FECHA) values ('${NOTA}', '${cliente}', '${Subs.traeAlmacen}', '${et_montoacredito.text}', '${RUTA_PREVENTA}', '${Subs.traeRutaReparto}', '${sDate & " " & sTime}')"$)
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "insertaPagareGunaRep"
cmd.Parameters = Array As Object(Subs.traeAlmacen, RUTA_PREVENTA, Subs.traeRutaReparto, cliente, et_montoacredito.Text, NOTA, sDate & " " & sTime)
reqManager.ExecuteCommand(cmd, $"insertaPagare_${NOTA}"$)
' guardaVenta
End Sub
Private Sub p_transPagares_Click
End Sub
Private Sub et_montoacredito_TextChanged (Old As String, New As String)
If New.Length > 0 And et_montoacredito.Text > limiteDeCredito Then ' Si el credito que quieren es mayor al autorizado, solo se permite el autorizado.
et_montoacredito.Text = limiteDeCredito
Else If New.Length > 0 And et_montoacredito.Text > total Then ' Si el credito que quieren es mayor al monto de venta, solo se permite el monto de venta.
et_montoacredito.Text = total
End If
If et_montoacredito.Text <> "" And New.Length > 0 Then
l_montoEfectivo.Text = $"Efectivo: $${NumberFormat2((total - et_montoacredito.text), 1, 2, 2, True)}"$
End If
End Sub
Private Sub CrearQR(NOTA2 As String)
Private texto As String = $"https://wa.me/5215637241894?text=PAGARE ${NOTA2}"$
i_qr.Clear
If texto.Length>0 Then
i_qr.SetBitmap(qr.Create(texto))
Log("QR Creado ->"&texto)
End If
End Sub
Private Sub b_cerrarqr_Click
i_qr.Clear
' If y = 1 Then
p_transPagare2.Visible = False
' p_gestion.Visible = True
' p_gestion.BringToFront
' Else
' p_qr.Visible = False
' End If
End Sub
Private Sub b_confirmar_Click
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "selectPagareConfirmado_Demo"
' cmd.Parameters = Array As Object(Subs.traeCliente, NOTA)
cmd.Parameters = Array As Object(NOTA)
reqManager.ExecuteQuery(cmd, 0, $"pagareConfirmado_${NOTA}"$)
End Sub
Private Sub p_transPagare2_Click
End Sub
Private Sub b_abonar_Click
liquidarPagare
End Sub
Sub liquidarPagare
p_transAbonoPagare.Visible = True
p_transAbonoPagare.BringToFront
End Sub
Private Sub p_transAbonoPagare_Click
p_transAbonoPagare.Visible = False
End Sub
Private Sub b_cancelaAbono_Click
p_transAbonoPagare.Visible = False
End Sub
Private Sub b_aceptaAbono_Click
p_transAbonoPagare.Visible = False
Private sn As Map
sn.Initialize
sn.Put("number","5215545815654")
sn.Put("message","Hola")
Dim jg As JSONGenerator
jg.Initialize(sn)
Log(jg)
Dim HTTPTask As HttpJob
HTTPTask.Initialize("HTTPTask", Me)
HTTPTask.PostString("http://192.168.0.190:3018/v1/messages", jg.ToString)
HTTPTask.GetRequest.SetContentType("application/json")
HTTPTask.GetRequest.SetHeader("Accept","application/json")
wait for (HTTPTask) JobDone(HTTPTask As HttpJob)
If HTTPTask.Success Then
'Json.Initialize(HTTPTask.GetString)
Log("1:" & HTTPTask.GetString)
Log("2:" & HTTPTask.ErrorMessage)
End If
HTTPTask.Release
End Sub
Private Sub et_montoAbono_TextChanged (Old As String, New As String)
Private cs As CSBuilder
cs.Initialize
If New.Length > 0 And et_montoAbono.Text > saldoPendiente Then ' Si el credito que quieren es mayor al autorizado, solo se permite el autorizado.
et_montoAbono.Text = saldoPendiente
End If
If et_montoAbono.Text <> "" And New.Length > 0 Then
Private msg As String = ""
If (saldoPendiente - et_montoAbono.text) > 0 Then
b_aceptaAbono.Text = "Abonar"
Private cd1 As ColorDrawable
cd1.Initialize(Colors.RGB(223, 163, 0), 10dip)
b_aceptaAbono.Background = cd1
l_montoRestante.Text = cs.Color(Colors.black).Size(12).append($"Restan: $${NumberFormat2((saldoPendiente - et_montoAbono.text), 1, 2, 2, True)} ${msg} "$).pop.color(Colors.red).Append(CRLF & "¡No se puede realizar la entrega!").PopAll
Else
Private cd1 As ColorDrawable
cd1.Initialize(Colors.RGB(0, 174, 0), 10dip)
b_aceptaAbono.Background = cd1
b_aceptaAbono.Text = "Liquidar"
l_montoRestante.Text = cs.color(Colors.green).Append("¡Listo para liquiar!").PopAll
End If
' l_montoRestante.Text = $"Restan: $${NumberFormat2((saldoPendiente - et_montoAbono.text), 1, 2, 2, True)} ${msg}"$
End If
End Sub
Private Sub p_abonoPagare_Click
End Sub