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
Olá Agnes, pode me dar mais informações? Essa regra é em uma query ou pegando diretamente da tabela que está posicionada?
— Roberta Soares dos Santos Alves 05 de Dec de 2023Boa tarde Agnes, o que seria isso ? Relatorio , fonte padrao , customizações
— Lucas de Paulo Santos 05 de Dec de 2023Coloquei o código fonte para melhor interpretação do problema
— Agnes_Vitoria_Dev 12 de Dec de 2023