Código: Selecionar todos
:cSQL := "SELECT IEVALOR, ze_ProdutoCustoContabil( IDPRODUTO ) AS CUSCON," + ;
" ze_ProdutoUltimaEntradaValor( IDPRODUTO ) AS ULTENTVAL, IETIPO, PCVALOR," + ;
" ze_ProdutoMargem( IDPRODUTO ) AS MARGEMCUSTO" + ;
" FROM JPITEM" + ;
" LEFT JOIN JPPRECO ON PCPRODUTO = IDPRODUTO" + ;
" AND ( PCCADASTRO = " + NumberSQL( nIdCadastro ) + ;
" OR PCCADASTRO IN ( SELECT PFCADMATRIZ FROM JPPRECOFIL WHERE PFCADFILIAL = " + NumberSQL( nIdCadastro ) + " ) )" + ;
" AND PCFORPAG = " + NumberSQL( nIdForPag ) + ;
" AND PCURGENTE = " + NumberSQL( nUrgente ) + ;
" AND PCSTATUS=1" + ;
" WHERE IDPRODUTO = " + NumberSQL( nIdProduto )
O PCSTATUS=1 tinha colocado no where, mudei para o LEFT JOIN.
O que aconteceu?
Tem tabela matriz mas pode ter tabela filial, status=1 é tabela ativa.
a tabela filial foi desativada e não estava pegando da matriz.
Hummmm.... agora no post é que acho que descobri....
LEFT JOIN deve pegar somente a primeira
INNER JOIN deve pegar todas
por isso o filtro do WHERE falhou, porque só entrou a desativada.
Com a mudança, pega diretamente a ativa.
