// Función para realizar la consulta
function realizarConsultaDIAN(numeroIdentificacion) {
// Esperar a que la página se cargue completamente
document.addEventListener('DOMContentLoaded', function() {
// Paso 2: Completar el dato con el número de identificación
var inputNIT = document.getElementById('vistaConsultaEstadoRUT:formConsultaEstadoRUT:numNit');
if (inputNIT) {
inputNIT.value = numeroIdentificacion;
} else {
console.error('No se encontró el campo de entrada para el NIT');
return;
}
// Paso 3: Hacer clic en el botón "Buscar"
var botonBuscar = document.getElementById('vistaConsultaEstadoRUT:formConsultaEstadoRUT:btnBuscar');
if (botonBuscar) {
botonBuscar.click();
} else {
console.error('No se encontró el botón de búsqueda');
return;
}
// Esperar a que se carguen los resultados
setTimeout(function() {
// Recuperar el resultado en HTML
var resultadoHTML = document.querySelector('.resultado').innerHTML;
// Aquí puedes procesar el resultadoHTML como necesites
console.log('Resultado obtenido:', resultadoHTML);
// Enviar el resultado al código nativo (depende de tu implementación específica)
if (window.Android) {
// Para Android
window.Android.recibirResultado(resultadoHTML);
} else if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.recibirResultado) {
// Para iOS
window.webkit.messageHandlers.recibirResultado.postMessage(resultadoHTML);
}
}, 2000); // Ajusta este tiempo según sea necesario
});
}
// Llamada a la función (esto se haría desde el código nativo)
// realizarConsultaDIAN('123456789');
#include "FiveWin.ch"
static oWebView
function Main()
local oWnd
DEFINE WINDOW oWnd TITLE "Usando DIAN desde un webview" SIZE 1050, 700
oWebView = TWebView2():New( oWnd )
oWebView:Navigate( "https://muisca.dian.gov.co/WebRutMuisca/DefConsultaEstadoRUT.faces" )
// SysWait( 3 )
oWebView:InjectJavascript( JavaScript() )
// oWebView:OpenDevToolsWindow()
oWebView:Eval( "consultaDIAN( '79760202' )" )
ACTIVATE WINDOW oWnd CENTER ;
ON RESIZE oWebView:SetSize( nWidth, nHeight )
oWebView:End()
return nil
function Javascript()
local cCode
TEXT INTO cCode
function consultaDIAN( numeroIdentificacion )
{
var inputNIT = document.getElementById('vistaConsultaEstadoRUT:formConsultaEstadoRUT:numNit');
if (inputNIT) {
inputNIT.value = numeroIdentificacion;
} else {
console.error('No se encontró el campo de entrada para el NIT');
return;
}
var botonBuscar = document.getElementById('vistaConsultaEstadoRUT:formConsultaEstadoRUT:btnBuscar');
if (botonBuscar) {
botonBuscar.click();
} else {
console.error('No se encontró el botón de búsqueda');
return;
}
}
ENDTEXT
return cCode
Application
===========
Path and name: C:\fwh2404\samples\leandro.exe (32 bits)
Size: 3,763,712 bytes
Compiler version: xHarbour 1.3.1 Intl. (SimpLex) (Build 20240108)
FiveWin version: FWH 24.04
C compiler version: Borland/Embarcadero C++ 7.7 (32-bit)
Windows 8 64 Bits, version: 6.2, Build 9200
Time from start: 0 hours 0 mins 0 secs
Error occurred at: 08/23/24, 13:31:13
Error description: Warning BASE/1004 Message not found: TWEBVIEW2:INJECTJAVASCRIPT
Stack Calls
===========
Called from: source\rtl\tobject.prg => TWEBVIEW2:ERROR( 0 )
Called from: source\rtl\tobject.prg => TWEBVIEW2:MSGNOTFOUND( 0 )
Called from: source\rtl\tobject.prg => TWEBVIEW2:INJECTJAVASCRIPT( 0 )
Called from: leandro.prg => MAIN( 15 )
System
======
CPU type: 12th Gen Intel(R) Core(TM) i7-12700 2112 Mhz
Hardware memory: 32510 megs
Free System resources: 90 %
GDI resources: 90 %
User resources: 90 %
Windows total applications running: 1
1 ,
Variables in use
================
Procedure Type Value
==========================
TWEBVIEW2:ERROR
Param 1: C "Message not found"
Param 2: C "TWEBVIEW2"
Param 3: C "INJECTJAVASCRIPT"
Param 4: N 1004
Local 1: U
Local 2: O Class: TWEBVIEW2
Local 3: N 13
TWEBVIEW2:MSGNOTFOUND
Param 1: C "INJECTJAVASCRIPT"
Param 2: O Class: TWEBVIEW2
TWEBVIEW2:INJECTJAVASCRIPT
Param 1: C " function consultaDIAN( numeroIdentificacion ) { var inputNIT = document.getElementById('vistaConsultaEstadoRUT:formConsultaEstadoRUT:numNit'); if (inputNIT) { inputNIT.value = numeroIdentificacion; } else { console.error('No se encontró el campo de entrada para el NIT'); return; } var botonBuscar = document.getElementById('vistaConsultaEstadoRUT:formConsultaEstadoRUT:btnBuscar'); if (botonBuscar) { botonBuscar.click(); } else { console.error('No se encontró el botón de búsqueda'); return; } }"
MAIN
Local 1: O Class: TWINDOW
Linked RDDs
===========
DBF
DBFFPT
DBFBLOB
DBFNTX
DataBases in use
================
Classes in use:
===============
1 ERROR
2 HASHENTRY
3 HBCLASS
4 HBOBJECT
5 TWINDOW
6 TBRUSH
7 TFONT
8 TREG32
9 TWEBVIEW2
10 TSTRUCT
Memory Analysis
===============
642 Static variables
Dynamic memory consume:
Actual Value: 0 bytes
Highest Value: 0 bytes
#include "FiveWin.ch"
static oWebView
function Main()
local oWnd, cResult
TEXT INTO cResult
[ document.getElementById( 'vistaConsultaEstadoRUT:formConsultaEstadoRUT:primerNombre' ).innerHTML,
document.getElementById( 'vistaConsultaEstadoRUT:formConsultaEstadoRUT:otrosNombres' ).innerHTML,
document.getElementById( 'vistaConsultaEstadoRUT:formConsultaEstadoRUT:primerApellido' ).innerHTML,
document.getElementById( 'vistaConsultaEstadoRUT:formConsultaEstadoRUT:segundoApellido' ).innerHTML,
document.getElementById( 'vistaConsultaEstadoRUT:formConsultaEstadoRUT:estado' ).innerHTML,
document.getElementById( 'vistaConsultaEstadoRUT:formConsultaEstadoRUT:dv' ).innerHTML ]
ENDTEXT
DEFINE WINDOW oWnd TITLE "Usando DIAN desde un webview" SIZE 1050, 700
oWebView = TWebView2():New( oWnd )
oWebView:bOnNavigationCompleted = { | cUrl, hWebView | If( "sessionid" $ cUrl, oWebView:Eval( cResult ),) }
oWebView:Navigate( "https://muisca.dian.gov.co/WebRutMuisca/DefConsultaEstadoRUT.faces" )
oWebView:InjectJavascript( JavaScript() )
// oWebView:OpenDevToolsWindow()
oWebView:bOnEval = { | cJson, hWebView | If( cJson != "null" .and. cJson != "{}", MsgInfo( cJson ),) }
oWebView:Eval( "consultaDIAN( '79760202' )" )
ACTIVATE WINDOW oWnd CENTER ;
ON RESIZE oWebView:SetSize( nWidth, nHeight )
oWebView:End()
return nil
function Javascript()
local cCode
TEXT INTO cCode
function consultaDIAN( numeroIdentificacion )
{
var inputNIT = document.getElementById('vistaConsultaEstadoRUT:formConsultaEstadoRUT:numNit');
if (inputNIT) {
inputNIT.value = numeroIdentificacion;
} else {
console.error('No se encontró el campo de entrada para el NIT');
return;
}
var botonBuscar = document.getElementById('vistaConsultaEstadoRUT:formConsultaEstadoRUT:btnBuscar');
if (botonBuscar) {
botonBuscar.click();
} else {
console.error('No se encontró el botón de búsqueda');
return;
}
}
ENDTEXT
return cCode
DEFINE WINDOW oWnd TITLE "Usando DIAN desde un webview" SIZE 1050, 700
oWebView = TWebView2():New( oWnd )
//TERCER PASO - Cuando se haya cargado la pagina por completo evaluamos la cadena cResult para que guarde en un array los datos que estan en los inputs
//Lo que no entiendo es esta sintaxis If( "sessionid" $ cUrl , de donde recuperamos ese sessionid y para que sirve el signo $
oWebView:bOnNavigationCompleted = { | cUrl, hWebView | If( "sessionid" $ cUrl, oWebView:Eval( cResult ),) }
//PRIMER PASO - Hacemos el llamado a la url
oWebView:Navigate( "https://muisca.dian.gov.co/WebRutMuisca/DefConsultaEstadoRUT.faces" )
//SEGUNDO PASO - Le inyectamos el código java script al navegador "webview"
oWebView:InjectJavascript( JavaScript() )
//CUARTO PASO - Definimos el codeblock bOnEval, para ejecutar la acción que necesitamos hacer de lado del FW, lo que no entiendo es en que momento se llena la variable cJson
oWebView:bOnEval = { | cJson, hWebView | If( cJson != "null" .and. cJson != "{}", MsgInfo( cJson ),) }
//QUINTO PASO - Evaluamos la función en javascript del lado del navegador que habíamos inyectado consultaDIAN la cual se encarga de ingresar el dato a buscar y hacer clic en el botón para busqueda.
oWebView:Eval( "consultaDIAN( '79760202' )" )
ACTIVATE WINDOW oWnd CENTER ;
ON RESIZE oWebView:SetSize( nWidth, nHeight )
#include "FiveWin.ch"
static oWebView
function Main()
local oWnd, cResult
TEXT INTO cResult
[ document.getElementById( 'vistaConsultaEstadoRUT:formConsultaEstadoRUT:primerNombre' ).innerHTML,
document.getElementById( 'vistaConsultaEstadoRUT:formConsultaEstadoRUT:otrosNombres' ).innerHTML,
document.getElementById( 'vistaConsultaEstadoRUT:formConsultaEstadoRUT:primerApellido' ).innerHTML,
document.getElementById( 'vistaConsultaEstadoRUT:formConsultaEstadoRUT:segundoApellido' ).innerHTML,
document.getElementById( 'vistaConsultaEstadoRUT:formConsultaEstadoRUT:estado' ).innerHTML,
document.getElementById( 'vistaConsultaEstadoRUT:formConsultaEstadoRUT:dv' ).innerHTML ]
ENDTEXT
DEFINE WINDOW oWnd TITLE "Usando DIAN desde un webview" SIZE 1050, 700
oWnd:Hide()
oWebView = TWebView2():New( oWnd )
oWebView:bOnNavigationCompleted = { | cUrl, hWebView | If( "sessionid" $ cUrl, oWebView:Eval( cResult ),) }
oWebView:Navigate( "https://muisca.dian.gov.co/WebRutMuisca/DefConsultaEstadoRUT.faces" )
oWebView:InjectJavascript( JavaScript() )
// oWebView:OpenDevToolsWindow()
oWebView:bOnEval = { | cJson, hWebView | If( cJson != "null" .and. cJson != "{}", ( MsgInfo( cJson ), oWnd:End() ),) }
oWebView:Eval( "consultaDIAN( '79760202' )" )
ACTIVATE WINDOW oWnd CENTER ;
ON INIT oWnd:Hide() ;
ON RESIZE oWebView:SetSize( nWidth, nHeight )
oWebView:End()
return nil
function Javascript()
local cCode
TEXT INTO cCode
function consultaDIAN( numeroIdentificacion )
{
var inputNIT = document.getElementById('vistaConsultaEstadoRUT:formConsultaEstadoRUT:numNit');
if (inputNIT) {
inputNIT.value = numeroIdentificacion;
} else {
console.error('No se encontró el campo de entrada para el NIT');
return;
}
var botonBuscar = document.getElementById('vistaConsultaEstadoRUT:formConsultaEstadoRUT:btnBuscar');
if (botonBuscar) {
botonBuscar.click();
} else {
console.error('No se encontró el botón de búsqueda');
return;
}
}
ENDTEXT
return cCode
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: No registered users and 18 guests