Page 1 of 1
DIALOGO de Help RESUELTO
Posted:
Wed Jul 21, 2021 7:14 pm
by Patricio Avalos Aguirre
Estimados
necesito hacer una ayuda en mi aplicativo pero no se como devolver el valor que necesito
la idea es presionar el boton rut que valla al modulo helpcli.prg y pueda seleccionar un datos y devolverlo a la principal
ademas esta sentencia
LINK 'helpcli.prg' OF o se debe presionar como 3 veces para que lance el modulo, no se si esta bien hecho así
- Code: Select all Expand view
DEFINE WEB oWeb TITLE 'Listado de saldos' TABLES INIT
DEFINE FORM o ID 'demo'
INIT FORM o
HTML o INLINE '<h5>LISTADO DE SALDO CLIENTE</h5><hr>'
ROWGROUP o
GET ID 'rutcli' VALUE '' GRID 4 LABEL 'RUT Cliente' PLACEHOLDER 'ingrese el rut' REQUIRED BUTTON '<i class="fas fa-search"></i>' LINK 'helpcli.prg' OF o
GET ID 'nomcli' VALUE '' GRID 8 LABEL 'Nombre' OF o
END o
Re: DIALOGO de Help
Posted:
Thu Jul 22, 2021 6:10 am
by Carles
Patricio,
Experimenta con tutor13.prg
Es un ejemplo de pantalla y peticion via ajax a otro prg para que tev devuelva datos
C.
Re: DIALOGO de Help
Posted:
Thu Jul 22, 2021 2:20 pm
by Patricio Avalos Aguirre
Gracias Charly por responder
mira tengo claro el tutor13.prg pero necesito que tutor13.prg me devuelva el valor que necesito y colocarlo en en id rutcli, como un dialog mas pequeño que busque ahí y devuelva el valor
aquí el código completo
- Code: Select all Expand view
// {% LoadHrb( '../../lib/tweb/tweb.hrb' ) %}
#include {% TWebInclude('../../lib/tweb/') %}
function Main()
local oWeb, o, oBrw
if ! Is_Session()
Redirect( "/casajulio/index.prg" )
return(nil)
endif
DEFINE WEB oWeb TITLE 'Listado de saldos' TABLES INIT
DEFINE FORM o ID 'demo'
INIT FORM o
HTML o INLINE '<h5>LISTADO DE SALDO CLIENTE</h5><hr>'
ROWGROUP o
GET ID 'rutcli' VALUE '' GRID 4 LABEL 'RUT Cliente' PLACEHOLDER 'ingrese el rut' REQUIRED BUTTON '<i class="fas fa-search"></i>' ACTION 'tutor13.prg' OF o
GET ID 'nomcli' VALUE '' GRID 8 LABEL 'Nombre' OF o
END o
ROWGROUP o
BUTTON ID 'btnbuscar' LABEL ' Buscar' GRID 2.5 ICON '<i class="fas fa-home"></i>' CLASS 'btn-primary btnticket' ACTION 'GetId()' OF o
BUTTON ID 'btnvolver' LABEL ' Volver' GRID 2.5 ICON '<i class="fas fa-home"></i>' CLASS 'btn-primary btnticket' LINK "/casajulio/menu.prg" OF o
BUTTON ID 'btnprint' LABEL ' Print' ACTION 'PrintPdf()' GRID 2.5 ICON '<i class="fas fa-home"></i>' CLASS 'btn-primary btnticket' OF o
END o
ROWGROUP o
DEFINE BROWSE oBrw ID 'ringo' HEIGHT 600 OF o
oBrw:lPagination := .f.
ADD oCol TO oBrw ID 'doc' HEADER 'Documento'
ADD oCol TO oBrw ID 'tot' HEADER 'Total'
ADD oCol TO oBrw ID 'abo' HEADER 'Abonos'
ADD oCol TO oBrw ID 'sal' HEADER 'Saldo Acumulado'
ADD oCol TO oBrw ID 'emi' HEADER 'Fec.Emision'
ADD oCol TO oBrw ID 'vto' HEADER 'Fec.Vcto'
ADD oCol TO oBrw ID 'atr' HEADER 'Dias de Atraso'
END o
HTML o
<script>
var oWnd;
var oBrw = new TWebBrowse( 'ringo' );
var cFilePdf = '';
function HelpCliente() {
var oParam = new Object();
oParam['opcion'] = 'HELP';
MsgServer( 'saldocliserver.prg', oParam, PostGetId )
}
function GetId() {
var cId = $('#rutcli').val();
oWnd = MsgLoading();
$( '#nomcli' ).val( '' );
var oParam = new Object();
oParam['rutcli'] = $('#rutcli').val();
oParam['opcion'] = 'SALDO';
MsgServer( 'saldocliserver.prg', oParam, PostGetId );
}
function PostGetId( dat ) {
if ( dat.success ){
$( '#nomcli' ).val( dat.nomcli );
cFilePdf = dat.cFileTempPdf;
oWnd.modal('hide');
oBrw.SetData( dat.rows )}
else{
MsgError( dat.error, 'Sistema WEB-Invent' );
oWnd.modal('hide');
}
}
function PrintPdf() {
var cVar = '/casajulio/temporal/'+cFilePdf;
if (fileExists(cVar)){
window.open(cVar)}
else{MsgError("Archivo No Existe, favor presione buscar antes de imprimir","Sistema WEB-Invent")}
}
function fileExists(url) {
if(url){
var req = new XMLHttpRequest();
req.open('GET', url, false);
req.send();
return req.status==200;
} else {
return false;
}}
</script>
ENDTEXT
END FORM o
return nil
Re: DIALOGO de Help
Posted:
Fri Jul 23, 2021 6:12 am
by Carles
Patricio,
Prueba el ejemplo brwselect2.prg
C.
Re: DIALOGO de Help
Posted:
Sat Jul 24, 2021 4:31 am
by Patricio Avalos Aguirre
Gracias Charly funciono
Dejo el código si alguien lo necesita
- Code: Select all Expand view
// {% LoadHrb( '../../lib/tweb/tweb.hrb' ) %}
#include {% TWebInclude('../../lib/tweb/') %}
function Main()
local oWeb, o, oBrw
if ! Is_Session()
Redirect( "/casajulio/index.prg" )
return(nil)
endif
DEFINE WEB oWeb TITLE 'Listado de saldos' TABLES INIT
DEFINE FORM o ID 'demo'
INIT FORM o
HTML o INLINE '<h5>LISTADO DE SALDO CLIENTE</h5><hr>'
ROWGROUP o
GET ID 'rutcli' VALUE '' GRID 4 LABEL 'RUT Cliente' PLACEHOLDER 'ingrese el rut' REQUIRED BUTTON '<i class="fas fa-search"></i>' ACTION 'Helpcli()' OF o
GET ID 'nomcli' VALUE '' GRID 8 LABEL 'Nombre' OF o
END o
ROWGROUP o
BUTTON ID 'btnbuscar' LABEL ' Buscar' GRID 2.5 ICON '<i class="fas fa-home"></i>' CLASS 'btn-primary btnticket' ACTION 'GetId()' OF o
BUTTON ID 'btnvolver' LABEL ' Volver' GRID 2.5 ICON '<i class="fas fa-home"></i>' CLASS 'btn-primary btnticket' LINK "/casajulio/menu.prg" OF o
BUTTON ID 'btnprint' LABEL ' Print' ACTION 'PrintPdf()' GRID 2.5 ICON '<i class="fas fa-home"></i>' CLASS 'btn-primary btnticket' OF o
END o
ROWGROUP o
DEFINE BROWSE oBrw ID 'ringo' HEIGHT 600 OF o
oBrw:lPagination := .f.
ADD oCol TO oBrw ID 'doc' HEADER 'Documento'
ADD oCol TO oBrw ID 'tot' HEADER 'Total'
ADD oCol TO oBrw ID 'abo' HEADER 'Abonos'
ADD oCol TO oBrw ID 'sal' HEADER 'Saldo Acumulado'
ADD oCol TO oBrw ID 'emi' HEADER 'Fec.Emision'
ADD oCol TO oBrw ID 'vto' HEADER 'Fec.Vcto'
ADD oCol TO oBrw ID 'atr' HEADER 'Dias de Atraso'
END o
HTML o
<script>
var oWnd;
var oBrw = new TWebBrowse( 'ringo' );
var cFilePdf = '';
var rows;
function GetId() {
oWnd = MsgLoading();
var oParam = new Object();
oParam['rutcli'] = $('#rutcli').val();
oParam['opcion'] = 'SALDO';
MsgServer( 'saldocliserver.prg', oParam, PostGetId );
}
function PostGetId( dat ) {
if ( dat.success ){
$( '#nomcli' ).val( dat.nomcli );
cFilePdf = dat.cFileTempPdf;
oWnd.modal('hide');
oBrw.SetData( dat.rows )}
else{
MsgError( dat.error, 'Sistema WEB-Invent' );
$( '#rutcli' ).val( '' );
$( '#nomcli' ).val( '' );
oWnd.modal('hide');
}
}
function PrintPdf() {
var cVar = '/casajulio/temporal/'+cFilePdf;
if (fileExists(cVar)){
window.open(cVar)}
else{MsgError("Archivo No Existe, favor presione buscar antes de imprimir","Sistema WEB-Invent")}
}
function fileExists(url) {
if(url){
var req = new XMLHttpRequest();
req.open('GET', url, false);
req.send();
return req.status==200;
} else {
return false;
}}
function Helpcli(dat) {
var oParam = new Object();
oParam['opcion'] = 'HELP';
oParam['search'] = prompt("Ingrese un nombre a buscar", "");
oParam['success'] = false
MsgServer( 'saldocliserver.prg', oParam, PostHelp );
}
function myfunc( row ) {
if ( row ) {
$( '#rutcli' ).val( row.rutcli );
$( '#nomcli' ).val( row.nombre );
}
}
function PostHelp( dat ) {
var headers = { 'rutcli' : 'Rut Cliente' , 'nombre': 'Nombre Cliente' }
var oOptions = new Object()
oOptions[ 'search' ] = true
oOptions[ 'height' ] = 200
TWebBrwSelect( headers, dat.rows, myfunc, '<i class="fas fa-user-friends"></i> My Customers', oOptions );
}
</script>
ENDTEXT
END FORM o
return nil
saldocliserver.prg- Code: Select all Expand view
AP_SetContentType( "application/json" )
if uValues['opcion'] = "HELP"
if empty(uValues['search'])
?? hb_jsonEncode( { 'success' => .f., 'error' => 'se ha presiona cancelar o bien esta vacio nombre' } )
return( nil )
endif
if !AdsConnetWeb()
?? hb_jsonEncode( { 'success' => .f., 'error' => 'no se ha podido conectar a la base de datos' } )
return( nil )
endif
cBusqueda := "SELECT RUT_CLI,NOMBRE FROM CLIENTES WHERE NOMBRE LIKE '%"+upper(uValues['search'])+ "%'"
SqlEjecute( "PasoSQL", cBusqueda )
PasoSql->( dbEval( { || aadd( aRows, { 'rutcli' => Field->rut_cli, 'nombre' => Field->nombre } ) } ) )
dbCloseAll() ; AdsDisconnect()
hResponse := { 'success' => .t., 'error' => '', 'rows' => aRows }
endif
?? hb_jsonEncode( hResponse )
return( nil )
//-----------------------------------------------------------------------------------------------------------------------------
Re: DIALOGO de Help RESUELTO
Posted:
Sat Jul 24, 2021 5:38 am
by Carles
Patricio,
Muy bien
Poco a poco encajando piezas...
Si puedes meter un par de pantallazos, veriamos tu progreso...
C.
Re: DIALOGO de Help RESUELTO
Posted:
Sun Jul 25, 2021 6:23 am
by Patricio Avalos Aguirre
Charly con gusto muestro lo avanzado
adjunto un video
http://www.sialm.cl/index_htm_files/saldocli.mp4
Re: DIALOGO de Help RESUELTO
Posted:
Mon Jul 26, 2021 4:18 pm
by Carles
Hola Patricio,
Muy bien ! Veo que lo tienes bastante avanzado, hasta con un reporting. Como lo has hecho ?
Saludos.
C
Re: DIALOGO de Help RESUELTO
Posted:
Mon Jul 26, 2021 6:21 pm
by Patricio Avalos Aguirre
Charly lo que hago es generar el reporte con FastReport desde un programa externo, el mismo fuente que el programa desktop
el fuente
- Code: Select all Expand view
cFilePdf := cNewFileName( cPath, "PDF" )
cPArame := "D:\APL\PRGS\HARBOUR\REPORTE\dbf\wcta.exe SALDOCLI "+cFileTemp+" "+cCdxTemp + " "+cFilePdf
RUN (cParame)
fErase(cFileTemp ) ; fErase( cCdxTemp )
cFilePdf := cFileNoPath( cFilePdf )
hResponse := { 'success' => .t., 'rows' => aRows, 'buscar' => cRutCli, 'len' => len( aRows), 'nomcli' => cNomCli, 'cFileTempPdf' => cFilePdf }
AdsDisconnect()
aqui el programa externo
- Code: Select all Expand view
#include "Fivewin.ch"
#include "Ads.ch"
#Define DRIVELOCAL DiskName() + ":\"+Curdir()
ANNOUNCE RDDSYS
static oApp, oWnd, nIdPanel := 0, cOldDir
Function Main( cOpcion, cFileTemp , cCdxTemp, cFilePdf )
local cPath := "C:\XAMPP\"
if pCount() < 4
return(0)
endif
cOldDir := DRIVELOCAL
DirChange( "D:\APL\PRGS\HARBOUR\REPORTE\dbf" )
do case
case cOpcion = "SALDOCLI"
TRY
cFileTemp := cPath+cFileTemp
cCdxTemp := cPath+cCdxTemp
cFilePdf := cPath+cFilePdf
SELE 0 ; USE PARAME NEW SHARED VIA "ADS"
SELE 0 ; USE PARAME2 INDEX PARAME2 NEW SHARED VIA "ADS"
SELE 0 ; USE TABLAS INDEX TABLAS NEW SHARED VIA "ADS"
SELE 0 ; USE CLIENTES INDEX CLIENTES NEW SHARED VIA "ADS" ALIAS "CLI"
SELE 0 ; USE (cFileTemp) NEW ALIAS TEMPO SHARED VIA "DBFCDX" INDEX (cCdxTemp)
Cli->( dbSeek( strTran( Tempo->rut_cli, ".", "" ) ) )
PrnSaldoCli(cFilePdf)
dbCloseAll()
fErase( cFileTemp )
fErase( cCdxTemp )
CATCH
END
endcase
DirChange( cOldDir )
Return Nil
//---------------------------------------------------------------------------------------------------------------------------
procedure PrnSaldoCli(cFilePdf)
local oFrPrn
PRIVATE MyVar := Parame->Logo
oFrPrn := frReportManager():new()
oFrPrn:LoadLangRes("spanish.xml")
oFrPrn:SetEventHandler("Report", "OnAfterPrint", {|ObjName|ShowProcess(ObjName,oFrPrn)})
oFrPrn:SetWorkArea("PAR", Select( "Parame" ) )
oFrPrn:SetWorkArea("PAR2", Select( "Parame2" ) )
oFrPrn:SetWorkArea("CLI", Select( "CLI" ) )
oFrPrn:SetWorkArea("TMP", Select( "TEMPO" ) )
oFrPrn:SetWorkArea("TAB", Select( "Tablas" ) )
oFrPrn:LoadFromFile("report\saldocli.fr3")
oFrPrn:SetIcon(2)
oFrPrn:SetTitle("Impresión..")
oFrPrn:PreviewOptions:SetButtons( 1+4+8+16+32+64+128+1024 )
oFrPrn:SetProperty("Page1", "PaperSize", 1)
oFrPrn:SetProperty("PDFExport", "FileName", cFilePdf )
oFrPrn:SetProperty("PDFExport", "EmbeddedFonts", .t.)
oFrPrn:SetProperty("PDFExport", "PrintOptimized", .t.)
oFrPrn:SetProperty("PDFExport", "Creator", "Sistema WEB-Invent")
oFrPrn:SetProperty("PDFExport", "OpenAfterExport", .f.)
oFrPrn:SetProperty("PDFExport", "ShowDialog",.f.)
oFrPrn:PrepareReport()
oFrPrn:DoExport("PDFExport")
oFrPrn:ClearDataSets()
oFrPrn:DestroyFR()
MyVar := NIL
return
//------------------------------------------------------------------------------------------------------------------------------
Function ShowProcess(sObjectName,oFrPrn)
local cColor, dDate := DATE(), nDias
if "TMP" $ sObjectName
sObjectName += ".Font"
if dDate > Tempo->Fec_Vto
if (nDias := dDate - Tempo->Fec_Vto) > 60
cColor := CLR_BLACK
elseif nDias <= 30
cColor := CLR_HRED
elseif nDias <= 60
cColor := CLR_MAGENTA
else
cColor := CLR_YELLOW
endif
else
if (nDias := Tempo->Fec_Vto - dDate ) <= 30
cColor := CLR_HBLUE
else
cColor := CLR_GREEN
endif
endif
oFrPrn:SetProperty(sObjectName, "Color", cColor )
endif
RETURN nil
Re: DIALOGO de Help RESUELTO
Posted:
Tue Jul 27, 2021 5:49 am
by Carles
Patricio,
Ya me imaginaba algo parecido. Lo usamos tambien en un proyecto hace poco. Es una buena solución y te da resultado profesional.
C.
Re: DIALOGO de Help RESUELTO
Posted:
Tue Jul 27, 2021 4:17 pm
by Otto
Hello,
What is the disadvantage of using HTML pure for the reports?
Best regards,
Otto
Re: DIALOGO de Help RESUELTO
Posted:
Tue Jul 27, 2021 4:52 pm
by Carles
Otto,
I don't know but for me, fastreport is the best reporting tool I have ever used. In a few minutes you have complex reports working.