Olá pessoal,
Estou montando uma query para resolver o seguinte problema: preciso recuperar o dof_sequence da nota de compra utilizando os dados do documento associado da nota de devolução. Vou explicar melhor.
Quando efetuamos a compra de uma mercadoria, uma nota fiscal é lançada no sistema e essa recebe um dof_sequence, que é um chave única. Se devolvemos essa mercadoria, precisamos associar os dados da nota de compra a nota de devolução, que também tem um dof_sequence. O que descobrimos, é que o dof_sequence da compra é obrigatório estar relacionado no documento associado, o que não acontece. Assim, estou tentando montar uma query para resolver isso. Desde já, acho que deve estar errando na lógica.
select a.dof_sequence, a.numero, b.numero_assoc, b.dh_emissao_assoc, b.serie_subserie_assoc, b.emitente_pfj_codigo_assoc, (select dof_sequence from cor_dof where numero = lpad(b.numero_assoc,9,'0') and dh_emissao = b.dh_emissao_assoc and serie_subserie = b.serie_subserie_assoc and emitente_pfj_codigo = b.emitente_pfj_codigo_assoc and ind_entrada_saida = 'E') dof_sequence from cor_dof a, cor_dof_associado b where a.dof_sequence = b.dof_sequence and a.codigo_do_site = b.codigo_do_site and a.ind_entrada_saida = 'S' and a.dt_fato_gerador_imposto >= '01-MAR-2015' and a.dt_fato_gerador_imposto <= '31-MAR-2015'
Valor retornado pela query acima (apenas uma amostra):
Nesse, o dof_sequence da nota de compra foi encontrado ...
DOF_SEQUENCE 72020055 NUMERO 2032 NUMERO_ASSOC 400 DH_EMISSAO_ASSOC 06/mar/15 SERIE_SUBSERIE_ASSOC 1 EMITENTE_PFJ_CODIGO_ASSOC 0000085502F DOF_SEQUENCE 71965749
Já nesse, o dof_sequence da nota de compra não foi encontrado ...
DOF_SEQUENCE 71885860 NUMERO 3070 NUMERO_ASSOC 121726 DH_EMISSAO_ASSOC 17/dez/14 SERIE_SUBSERIE_ASSOC 1 EMITENTE_PFJ_CODIGO_ASSOC 0000085232F DOF_SEQUENCE
Como podem ver, o segundo exemplo não teve o dof_sequence da compra retornado, porém, se eu pegar o select destacado na query anterior e inserir os parâmetros manualmente, ele encontra o dof_sequence:
select dof_sequence from cor_dof where numero = lpad('121726',9,'0') and dh_emissao = '17-DEZ-14' and serie_subserie = '1' and emitente_pfj_codigo = '0000085232F' and ind_entrada_saida = 'E'
55495619
Não sei se estou usando o select dentro do outro de forma errada. Eu fiz o select maior trazer os dados da nota de devolução e documento associado. Com esses dados, a ideia é recuperar o dof_sequence da nota de compra.
Eu já tentei o lpad, ltrim para garantir que o número das notas vão ter o mesmo número de posições. Como alguns são encontrados, outros não, acho que estou errando algum detalhe na lógica. O campo NUMERO nas duas tabelas é um VARCHAR2 (60).
Dessa forma, alguém poderia me dar uma força?!
Até mais,
Hiccup