FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index mod_harbour DIALOGO de Help RESUELTO
Posts: 1074
Joined: Fri Oct 07, 2005 01:56 PM
DIALOGO de Help RESUELTO
Posted: Wed Jul 21, 2021 07: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 (fw): Select all Collapse
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
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
Posts: 1283
Joined: Fri Feb 10, 2006 02:34 PM
Re: DIALOGO de Help
Posted: Thu Jul 22, 2021 06: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
HIX -> https://github.com/carles9000/hix
Posts: 1074
Joined: Fri Oct 07, 2005 01:56 PM
Re: DIALOGO de Help
Posted: Thu Jul 22, 2021 02: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 (fw): Select all Collapse
//  {% 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
Posts: 1283
Joined: Fri Feb 10, 2006 02:34 PM
Re: DIALOGO de Help
Posted: Fri Jul 23, 2021 06: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
HIX -> https://github.com/carles9000/hix
Posts: 1074
Joined: Fri Oct 07, 2005 01:56 PM
Re: DIALOGO de Help
Posted: Sat Jul 24, 2021 04:31 AM
Gracias Charly funciono

Dejo el código si alguien lo necesita

Code (fw): Select all Collapse
//  {% 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 (fw): Select all Collapse
    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
Posts: 1283
Joined: Fri Feb 10, 2006 02:34 PM
Re: DIALOGO de Help RESUELTO
Posted: Sat Jul 24, 2021 05: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
HIX -> https://github.com/carles9000/hix
Posts: 1074
Joined: Fri Oct 07, 2005 01:56 PM
Re: DIALOGO de Help RESUELTO
Posted: Sun Jul 25, 2021 06: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
Posts: 1283
Joined: Fri Feb 10, 2006 02:34 PM
Re: DIALOGO de Help RESUELTO
Posted: Mon Jul 26, 2021 04: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
HIX -> https://github.com/carles9000/hix
Posts: 1074
Joined: Fri Oct 07, 2005 01:56 PM
Re: DIALOGO de Help RESUELTO
Posted: Mon Jul 26, 2021 06: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 (fw): Select all Collapse
        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 (fw): Select all Collapse
#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
Posts: 1283
Joined: Fri Feb 10, 2006 02:34 PM
Re: DIALOGO de Help RESUELTO
Posted: Tue Jul 27, 2021 05: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
HIX -> https://github.com/carles9000/hix
Posts: 6983
Joined: Fri Oct 07, 2005 07:07 PM
Re: DIALOGO de Help RESUELTO
Posted: Tue Jul 27, 2021 04:17 PM

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

Best regards,
Otto

Posts: 1283
Joined: Fri Feb 10, 2006 02:34 PM
Re: DIALOGO de Help RESUELTO
Posted: Tue Jul 27, 2021 04: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
HIX -> https://github.com/carles9000/hix

Continue the discussion