DIALOGO de Help RESUELTO

mod_harbour es un módulo para Apache que permite correr tus PRGs directamente en la web!!!

DIALOGO de Help RESUELTO

Postby Patricio Avalos Aguirre » Wed Jul 21, 2021 7:14 pm

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
Last edited by Patricio Avalos Aguirre on Sat Jul 24, 2021 4:35 am, edited 1 time in total.
Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
User avatar
Patricio Avalos Aguirre
 
Posts: 1059
Joined: Fri Oct 07, 2005 1:56 pm
Location: La Serena, Chile

Re: DIALOGO de Help

Postby Carles » Thu Jul 22, 2021 6:10 am

Patricio,

Experimenta con tutor13.prg

Es un ejemplo de pantalla y peticion via ajax a otro prg para que tev devuelva datos

C.
Salutacions, saludos, regards

"...programar es fácil, hacer programas es difícil..."

UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
Skype -> https://join.skype.com/cnzQg3Kr1dnk
User avatar
Carles
 
Posts: 1090
Joined: Fri Feb 10, 2006 2:34 pm
Location: Barcelona

Re: DIALOGO de Help

Postby Patricio Avalos Aguirre » Thu Jul 22, 2021 2:20 pm

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

 
Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
User avatar
Patricio Avalos Aguirre
 
Posts: 1059
Joined: Fri Oct 07, 2005 1:56 pm
Location: La Serena, Chile

Re: DIALOGO de Help

Postby Carles » Fri Jul 23, 2021 6:12 am

Patricio,

Prueba el ejemplo brwselect2.prg

C.
Salutacions, saludos, regards

"...programar es fácil, hacer programas es difícil..."

UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
Skype -> https://join.skype.com/cnzQg3Kr1dnk
User avatar
Carles
 
Posts: 1090
Joined: Fri Feb 10, 2006 2:34 pm
Location: Barcelona

Re: DIALOGO de Help

Postby Patricio Avalos Aguirre » Sat Jul 24, 2021 4:31 am

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 )


//-----------------------------------------------------------------------------------------------------------------------------
 
Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
User avatar
Patricio Avalos Aguirre
 
Posts: 1059
Joined: Fri Oct 07, 2005 1:56 pm
Location: La Serena, Chile

Re: DIALOGO de Help RESUELTO

Postby Carles » Sat Jul 24, 2021 5:38 am

Patricio,

Muy bien :D

Poco a poco encajando piezas...

Si puedes meter un par de pantallazos, veriamos tu progreso...

C.
Salutacions, saludos, regards

"...programar es fácil, hacer programas es difícil..."

UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
Skype -> https://join.skype.com/cnzQg3Kr1dnk
User avatar
Carles
 
Posts: 1090
Joined: Fri Feb 10, 2006 2:34 pm
Location: Barcelona

Re: DIALOGO de Help RESUELTO

Postby Patricio Avalos Aguirre » Sun Jul 25, 2021 6:23 am

Charly con gusto muestro lo avanzado

adjunto un video

http://www.sialm.cl/index_htm_files/saldocli.mp4
Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
User avatar
Patricio Avalos Aguirre
 
Posts: 1059
Joined: Fri Oct 07, 2005 1:56 pm
Location: La Serena, Chile

Re: DIALOGO de Help RESUELTO

Postby Carles » Mon Jul 26, 2021 4:18 pm

Hola Patricio,

Muy bien ! Veo que lo tienes bastante avanzado, hasta con un reporting. Como lo has hecho ?


Saludos.
C
Salutacions, saludos, regards

"...programar es fácil, hacer programas es difícil..."

UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
Skype -> https://join.skype.com/cnzQg3Kr1dnk
User avatar
Carles
 
Posts: 1090
Joined: Fri Feb 10, 2006 2:34 pm
Location: Barcelona

Re: DIALOGO de Help RESUELTO

Postby Patricio Avalos Aguirre » Mon Jul 26, 2021 6:21 pm

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

Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
User avatar
Patricio Avalos Aguirre
 
Posts: 1059
Joined: Fri Oct 07, 2005 1:56 pm
Location: La Serena, Chile

Re: DIALOGO de Help RESUELTO

Postby Carles » Tue Jul 27, 2021 5:49 am

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.
Salutacions, saludos, regards

"...programar es fácil, hacer programas es difícil..."

UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
Skype -> https://join.skype.com/cnzQg3Kr1dnk
User avatar
Carles
 
Posts: 1090
Joined: Fri Feb 10, 2006 2:34 pm
Location: Barcelona

Re: DIALOGO de Help RESUELTO

Postby Otto » Tue Jul 27, 2021 4:17 pm

Hello,
What is the disadvantage of using HTML pure for the reports?

Best regards,
Otto
********************************************************************
mod harbour - Vamos a la conquista de la Web
modharbour.org
https://www.facebook.com/groups/modharbour.club
********************************************************************
User avatar
Otto
 
Posts: 6005
Joined: Fri Oct 07, 2005 7:07 pm

Re: DIALOGO de Help RESUELTO

Postby Carles » Tue Jul 27, 2021 4:52 pm

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.
Salutacions, saludos, regards

"...programar es fácil, hacer programas es difícil..."

UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
Skype -> https://join.skype.com/cnzQg3Kr1dnk
User avatar
Carles
 
Posts: 1090
Joined: Fri Feb 10, 2006 2:34 pm
Location: Barcelona


Return to mod_harbour

Who is online

Users browsing this forum: No registered users and 6 guests