Versão atual:

Como fazer regra no advpl?

Como fazer regra seguindo as determinadas informações:

Para Títulos "À Vencer", considere que a Data de Vencimento (E1_VENCREA) é superior a data informada nos parâmetros do relatório, e o saldo do títulos (E1_SALDO) é diferente de zero.

Para Títulos "Vencidos", considere que a Data de Vencimento (E1_VENCREA) é inferior a data informada nos parâmetros do relatório, e o saldo do títulos (E1_SALDO) é maior que zero.

É para acrescentar duas colunas dentro de um relatório já existente, e até então desenvolvi o fonte abaixo. Mas não está funcionando. Essas colunas são de títulos vencidos e títulos á vencer, Onde títulos á vencer retornariam SIM ou NÃO e Títulos Vencidos retornariam todos os títulos vencidos daquele cliente. Sou iniciante em advpl e quem puder estar me ajudando, desde já agradeço :3

static function fTitulos(cCodCli,cLjCli)

    Local aArea        :=    GetArea()                                    //GetArea: Armazena dados de um alias em um array, que pode ser restaurado depois com a função RestArea
    Local aRet        :=    {}
    Local cAlias    :=    GetNextAlias()                                //GetNextAlias: Busca um alias disponível para utilização.
    Local cStat        :=    ""
    Local cStat1    :=    ""

    BeginSql Alias cAlias

        // SELECT E1_PREFIXO, E1_NUM, E1_VENCREA, E1_SALDO
        // FROM %TABLE:SE1%
        // WHERE %NOTDEL% AND
        // E1_CLIENTE = %EXP:cCodCli% AND 
        // E1_LOJA = %EXP:cLjCli% AND
        // E1_SALDO > 0

        //"À Vencer"
         SELECT E1_PREFIXO, E1_NUM, E1_VENCREA, E1_SALDO, ZZI_DATA            //seleciona os campos necessários da tabela
         FROM     SE1010, ZZI010                                                 //seleciona as tabelas
         WHERE     E1_VENCREA > ZZI_DATA AND                                     //data é superior a data informada nos parâmetros do relatório
                 E1_SALDO <> 0                                                  //saldo é diferente de zero
                 //D_E_L_E_T_ <> '*'

        UNION ALL //Faz a união das query

        //"Vencidos"
        SELECT     E1_PREFIXO, E1_NUM, E1_VENCREA, E1_SALDO, ZZI_DATA             //seleciona os campos necessários da tabela
        FROM     SE1010, ZZI010                                                 //seleciona as tabelas
        WHERE     E1_VENCREA < ZZI_DATA AND                                     //data é inferior a data informada nos parâmetros do relatório
                E1_SALDO > 0                                                  //saldo é maior que zero
                //D_E_L_E_T_ <> '*'
    EndSql

    dbSelectArea(cAlias)                                                     //dbSelectArea: seleciona a area 
    (cAlias)->(dbGoTop())                                                    //DBGoTop: Posiciona no primeiro registro lógico.    
    While (cAlias)->(!eof())                                                //EoF: Verifica se um alias se encontra no fim do arquivo

        //If (cAlias)->E1_VENCREA <= DToC(DATE(  ))
        If (cAlias)->E1_VENCREA <= DTOC(ddatabase)
        //If (cAlias)->E1_VENCREA <= ZZI_DATA
            cStat    :=    "SIM"
        Else
            cStat    :=    "NÃO"
        EndIf
            //cStat1    +=    (cAlias)->E1_PREFIXO +"/"+ (cAlias)->E1_NUM +"/"+ CTOD((cAlias)->E1_VENCREA) + "/" + Transform(E1_SALDO,"@E 999,999,999.99")
            cStat1    +=    (cAlias)->E1_PREFIXO +"/"+ (cAlias)->E1_NUM +"/"+ ((cAlias)->E1_VENCREA) + "/" + Transform(E1_SALDO,"@E 999,999,999.99")

        (cAlias)-> (DBSKIP( ))
    EndDo    
    aAdd(aRet,{cStat,cStat1})
    RestArea(aArea) 
    (cAlias)->(dbCloseArea())
return aRet

Versões (3):

Ver a versão formatada

Como fazer regra no advpl?

Comentário

new question