Ir para conteúdo
Fórum Script Brasil

Rodrigo A. M.

Membros
  • Total de itens

    7
  • Registro em

  • Última visita

Sobre Rodrigo A. M.

Últimos Visitantes

O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.

Rodrigo A. M.'s Achievements

0

Reputação

  1. Alguém poderia me ajudar com a seguinte consulta? Tab_base gtin(PK) | cod_entr | aliq_entr | cod_saida | aliq_saida Tab_consulta cod_barra | cod_entr | aliq_entr | cod_saida | aliq_saida | status_saida | corr_saida | status_entr | corr_entr A Tab_consulta é importada e deve consultar se existe o cod_barra igual ao gtin da Tab_base. Em caso positivo, preciso consultar os campos que tem informação na Tab_consulta de códigos e alíquotas, quando tiver informação cruzar com a Tab_base para validar se está correto, se estiver correto (status_* = 'OK'), se estiver diferente (status_* = 'inválido' and corr_* = "alíquota certa vindo da Tab_base"). Desde já agradeço a ajuda.
  2. Oi Marcelo, sou novo no fórum, você conseguiu solucionar esse desafio?
  3. Pode usar uma BAT e agendar a execução no servidor.
  4. Bom dia, dei uma alterada no na função e funcionou perfeitamente como eu precisava. Obrigado por toda disponibilidade em ajudar. Qualquer consideração fique a vontade. create or replace function fn_get_codbarras_gtin(p_codbarras varchar(13)) returns varchar(14) as $$ declare v_soma integer; v_digitos smallint[13]; v_DV smallint; v_dt integer; begin --Verifica a quantidade de dígitos informados no parâmetro da função if length(p_codbarras) > 13 then raise exception 'O valor informado no parâmetro possui mais do que 12 dígitos'; end if; --Converte em um array v_digitos := string_to_array(p_codbarras, null); --É somado cada elemento do array, caso ele esteja num índice par o valor será --multiplicado por 3 antes de ser somado. v_dt := (Length("p_codbarras")); for i in 1..v_dt loop if mod(v_dt,2) = 0 then if mod(i,2) = 0 then v_soma := coalesce(v_soma, 0) + (v_digitos * 3); else v_soma := coalesce(v_soma, 0) + v_digitos; end if; else if mod(i,2) = 0 then v_soma := coalesce(v_soma, 0) + v_digitos; else v_soma := coalesce(v_soma, 0) + (v_digitos * 3); end if; end if; end loop; --O resultado da subtração de 10 pela sobra da divisão da soma dos dígitos --por 10 é o dígito verificador v_DV = 10 - mod(v_soma, 10); if v_DV = 10 then v_DV := 0; end if; --É retornado o código de barras concatenado ao dígito verificador return array_to_string(v_digitos, '') || v_DV; end $$ language plpgsql volatile strict; update public."GTIN13" set "STATUS" = 'INVALIDO' where "GTIN" != public.fn_get_codbarras_gtin(substring("GTIN" from 1 for (Length("GTIN")-1)));
  5. Não estou conseguindo amigo. Essa função e esse delete excluem mesmo registros válidos. Não sei onde estou errando. Tenho uma base com as seguintes colunas "COD_EAN" "DESC_PRODUTO" e "CLASS_FISCAL_NCM", com 500.000 registros mais ou menos e precisava rodar algo para validar essa base já existente e excluir o que não passar na validação. Mas sou iniciante em PostgreSQL e está me tirando a tranquilidade, tens alguma dica? Se não tiver, mesmo assim, agradeço seu tempo.
  6. Se eu entendi bem, essa função valida quando recebe um EAN para validar. Gostaria de ajuda para um select e delete EANs que não sejam válidos em um BD já existente. Teria alguma sugestão?
  7. Boa tarde amigo, Alguém já precisou validar códigos EAN ou os conhecidos código de barras de produtos? Se sim, tem o script dessa função? Desde já agradeço.
×
×
  • Criar Novo...