Página 1 de 1

Retorno conforme situação

Enviado: 01 Jul 2020 16:22
por JoséQuintas
Ainda não testei, é um dos que fui deixando pra depois.
O boleto pode ser direto para o cliente, ou para um "ciente do cliente".

Código: Selecionar todos

      WITH OBJECT cnSQL
         :cSQL := "SELECT IDFINAN, FINUMBAN, FIDATEMI, FICADASTRO, FISACADO, FIPARCELA, FIDATVEN," + ;
            " FIVALOR, FIDOCAUX, FIDATVEN, JPCADASTRO.CDNOME AS CADNOME," + ;
            " JPCADASTRO.CDCNPJ AS CADCNPJ, SACADO.CDCNPJ AS SACCNPJ," + ;
            " IF( FISACADO = 0, JPCADASTRO.CDCNPJ, SACADO.CNPJ ) AS DOCCNPJ," + ;
            " IF( FISACADO = 0, JPCADASTRO.CDNOME, SACADO.CDNOME ) AS DOCNOME," + ;
            " IF( FISACADO = 0, CONCAT_WS( JPCADASTRO.CDENDCOB, JPCADASTRO.CDNUMCOB, JPCADASTRO.CDCOMCOB ), " + ;
            " CONCAT_WS( SACADO.CDENDCOB, SACADO.CDNUMCOB, SACADO.CDCOMCOB ) ) AS DOCENDERECO," + ;
            " IF( FISACADO = 0, JPCADASTRO.CDBAICOB, SACADO.BAICOB ) AS DOCBAIRRO," + ;
            " IF( FISACADO = 0, JPCADASTRO.CDCEPCOB, SACADO.CEPCOB ) AS DOCCEP," + ;
            " IF( FISACADO = 0, JPCADASTRO.CDUFCOB, SACADO.UFCOB ) AS DOCUF," + ;
            " FROM JPFINAN" + ;
            " LEFT JOIN JPCADASTRO ON JPCADASTRO.IDCADASTRO = JPFINAN.FICADASTRO" + ;
            " LEFT JOIN JPAUXILIAR ON JPTAUXILIAR.AXTABELA = " + StringSQL( AUX_FINPOR ) + " AND AXCODIGO = JPCADASTRO.CDPORTADOR" + ;
            " LEFT JOIN JPCADASTRO AS SACADO ON SACADO.IDCADASTRO = JPFINAN.FICADASTRO" + ;
            " WHERE FIPEDIDO = " + NumberSQL( nIdPedido ) + " AND FITIPLAN = '1'"
         :Execute()
Pra facilitar na definição de nomes, usei DOCxxxx para definir os campos que saem no documento, que podem ser de um ou de outro.

Retorno conforme situação

Enviado: 01 Jul 2020 16:27
por JoséQuintas
Só comentário adicional:

Adotei colocar o espaço em branco no início da string.
É que precisa espaço entre as palavras do comando.
Colocando no final da string, passavam muitos faltando espaço, mas colocando no início, fica bem visível se esquecer em algum.

E também adotei separar linhas em:

SELECT
FROM
LEFT JOIN
WHERE
GROUP BY
HAVING

justamente porque facilita identificar cada parte.