Página 1 de 1

Duplicidade

Enviado: 17 Jun 2020 16:27
por JoséQuintas
Ainda vou ver a solução, mas é interessante.
Fiquei na dúvida se postava aqui ou em legislação.
edi.png
edi.png (4.52 KiB) Exibido 1212 vezes
No meu pedido, imprimo o código de produto interno, e o código do fornecedor/cliente.
E a importação de XMLs cadastra pra conversão.

De repente, na impressão do pedido apareceu o produto duplicado/triplicado/etc.
Porque?
Olhem lá:

A empresa fez notas fiscais com o produto VR AWS 68.
primeiro o código era 07214, depois 214, depois SH025.

No relacionamento do MySQL... o que existir repetido acaba sendo repetido, e foi isso que aconteceu.

Ainda pensando no que fazer.
Provavelmente um GROUP BY nessa tabela.

Talvez quando aparecer um código novo excluir o velho da conversão....

Pode até ser normal, supondo que a empresa pode ter trocado de aplicativo e cadastrou tudo de novo com outro código.

Mas é froyds, pra MySQL e pra parte fiscal, e pra integração, etc. etc. etc.

Duplicidade

Enviado: 17 Jun 2020 17:04
por JoséQuintas
A única saída que deu certo foi procurar um a um.... fazer o que....

Código: Selecionar todos

   WITH OBJECT cnSQL
      :cSQL := "SELECT PDCONF, PDTRANSA, PDCADASTRO, PDDATEMI, PDPEDCLI, PDCONTATO, " + ;
         " PDIIVAL, PDIPIVAL, PDICMVAL, PDSUBVAL, PDVALPRO, PDVALFRE, PDVALSEG," + ;
         " PDVALOUT, PDVALDES, PDVALNOT, PDVALEXT, PDTRANSP, PDTRANSP, " + ;
         " PDOBS, PDINFINC, PDINFALT, PDSTATUS, " + ;
         " JPCADASTRO.CDNOME, JPCADASTRO.CDENDERECO," + ;
         " JPCADASTRO.CDNUMERO, JPCADASTRO.CDCOMPL, " + ;
         " JPCADASTRO.CDBAIRRO, JPCADASTRO.CDCIDADE," + ;
         " JPCADASTRO.CDUF, JPCADASTRO.CDCEP," + ;
         " JPCADASTRO.CDCNPJ, JPCADASTRO.CDINSEST," + ;
         " JPCADASTRO.CDTELEFONE, JPCADASTRO.CDCONTATO," + ;
         " JPCADASTRO.CDMAPA, JPCADASTRO.CDCONTATO," + ;
         " JPCADASTRO.CDOUTDOC, JPCADASTRO.CDENDENT," + ;
         " JPCADASTRO.CDNUMENT, JPCADASTRO.CDBAIENT," + ;
         " JPCADASTRO.CDCEPENT, JPCADASTRO.CDCIDENT," + ;
         " JPCADASTRO.CDUFENT, JPCADASTRO.CDCOMENT," + ;
         " JPCADASTRO.CDENDCOB, JPCADASTRO.CDBAICOB," + ;
         " JPCADASTRO.CDCIDCOB, JPCADASTRO.CDUFCOB," + ;
         " JPCADASTRO.CDCEPCOB, JPCADASTRO.CDNUMCOB," + ;
         " JPCADASTRO.CDCOMCOB," + ;
         " JPTRANSP.TPNOME," + ;
         " JPFORPAG.FPDESCRI," + ;
         " JPVENDEDOR.VDDESCRI," + ;
         " JPTRANSA.TRREACAO, JPTRANSA.TRDESCRI, " + ;
         " JPNOTFIS.NFNOTFIS," + ;
         " JPITEM.IEDESCRI, JPITEM.IEUNID, JPITEM.IEPESLIQ, JPITEM.IEPESBRU," + ;
         " JPITPED.*," + ;
         " ( SELECT EDEXTERNO" + ;
            " FROM JPEDICFG " + ;
            " WHERE EDTIPO=1 AND EDINTERNO=JPITPED.IPPRODUTO AND EDEMPRESA LIKE CONCAT( '%', JPCADASTRO.CDCNPJ, '%' )" + ;
            " LIMIT 1 ) AS CODEXTERNO" + ;
         " FROM JPPEDIDO" + ;
         " LEFT JOIN JPTRANSA ON JPTRANSA.IDTRANSA = JPPEDIDO.PDTRANSA" + ;
         " LEFT JOIN JPCADASTRO ON JPCADASTRO.IDCADASTRO = JPPEDIDO.PDCADASTRO" + ;
         " LEFT JOIN JPTRANSP ON JPTRANSP.IDTRANSP = JPPEDIDO.PDTRANSP" + ;
         " LEFT JOIN JPFORPAG ON JPFORPAG.IDFORPAG = JPPEDIDO.PDFORPAG" + ;
         " LEFT JOIN JPVENDEDOR ON JPVENDEDOR.IDVENDEDOR = JPPEDIDO.PDVENDEDOR" + ;
         " LEFT JOIN JPNOTFIS ON JPNOTFIS.NFPEDIDO = JPPEDIDO.IDPEDIDO" + ;
         " LEFT JOIN JPITPED ON JPITPED.IPPEDIDO = JPPEDIDO.IDPEDIDO" + ;
         " LEFT JOIN JPITEM ON JPITEM.IDPRODUTO = JPITPED.IPPRODUTO" + ;
         " WHERE IDPEDIDO=" + NumberSQL( nIdPedido )
      :Execute()
é o bloco com CODEXTERNO

Como é só para os produtos de um único pedido, tudo bem, sem problema de velocidade.
Depois penso numa saída melhor, agora é apagar incêndio.

Duplicidade

Enviado: 17 Jun 2020 17:13
por JoséQuintas
ORDER BY IDEDICFG DESC

Assim pega o último cadastrado !!!!
Teoricamente é o último que está valendo....

Talvez seja bom colocar na configuração, pra quando cadastrar algo novo apagar tudo que for anterior para o mesmo código.
Isso iria limpando códigos antigos automaticamente.

Nota:
É interessante, conforme vou usando MySQL vou encontrando soluções mais rápidas.

Duplicidade

Enviado: 17 Jun 2020 18:53
por alxsts
Olá!

Talvez já conheça mas, fica o registro: uma query para buscar registros onde o valor de uma coluna (no exemplo, coluna EDEXTERNO) ocorre repetidas vezes nas linhas da tabela:

Código: Selecionar todos

 SELECT EDEXTERNO, COUNT( EDEXTERNO )
  FROM JPEDICFG
GROUP BY EDEXTERNO
HAVING COUNT( EDEXTERNO ) > 1

Duplicidade

Enviado: 17 Jun 2020 19:13
por JoséQuintas
Lembrei de algo relacionado, que encontrei uma vez.

https://pctoledo.org/forum/viewto ... 57&t=23823