Arquivo da categoria ‘COMANDOS SQL’
Atualizando preços das tabelas 2 a 5 com base no valor de tabela 1
Em abril começei a publicar alguns artigos com comandos SQL que podem ser executados nos sistemas. Como boa parte dos nossos sistemas já contam com módulo para execução de comandos SQL diretamente no banco de dados estes artigos ajudarão aos usuários destes sistemas a realizar procedimentos que hoje não existem neles.
Seguindo esta linha colocamos hoje mais alguns comandos, ainda para os 13 sistemas da linha 4U. Os comandos de hoje auxiliam a alterar o valor das tabelas de preço 2 a 5 (preços de venda) em função do valor definido na tabela 1. O sistema possui um módulo de reajuste mas ele permite apenas aumentar ou reduzir o valor de uma tabela com base em seu valor anterior ou com base no valor de custo. Este comando já permite utilizar o valor que já definiu na primeira tabela de venda, sendo útil principalmente caso esteja começando a usar as demais tabelas de preços, sendo que já possui a primeira pronta.
Como manda o bom senso faça um backup do sistema antes de realizar estes procedimentos, pois eles irão alterar uma lista interia de produtos. Caso erre não haverá como recuperar os valores anteriores caso não tenha backup. Dito isso vamos aos comandos:
SISTEMA: todos os da linha 4U - GE-COMERCIO 4U, GE-COMERCIO PLUS 4U, GE-INFO 4U, entre outros
Produtos da categoria HIGIENE com valores de tabela 2 10% superiores aos da tabela 1 e valores de tabela 3 15% superiores aos de tabela 1
UPDATE PRODUTOS SET PRO_VALOR2=PRO_VALOR1*1.1, PRO_LUCRO2=PRO_LUCRO1*1.1, PRO_VALOR3=PRO_VALOR1*1.15, PRO_LUCRO3=PRO_LUCRO1*1.15 WHERE PRO_CATEGORIA='HIGIENE'
Produtos do setor LANCHONETE com valores de tabela 4 10% inferiores aos da tabela 1 e valores de tabela 5 15% inferiores aos de tabela 1
UPDATE PRODUTOS SET PRO_VALOR4=PRO_VALOR1*0.9, PRO_LUCRO4=PRO_LUCRO1*0.9, PRO_VALOR5=PRO_VALOR1*0.85, PRO_LUCRO5=PRO_LUCRO1*0.85 WHERE PRO_SETOR='LANCHONETE'
Produtos que ao mesmo tempo pertencem ao setor LANCHONETE e a categoria SUCOS com valores de tabela 2 5% inferiores aos da tabela 1
UPDATE PRODUTOS SET PRO_VALOR2=PRO_VALOR1*0.95, PRO_LUCRO2=PRO_LUCRO1*0.95 WHERE PRO_SETOR='LANCHONETE' AND PRO_CATEGORIA='SUCOS'
Todos os produtos com valores de tabela 3 8% inferiores aos da tabela 1
UPDATE PRODUTOS SET PRO_VALOR3=PRO_VALOR1*0.92, PRO_LUCRO2=PRO_LUCRO3*0.92Para executar os comandos acima abra o programa, vá ao menu FERRAMENTAS, em INTERPRETADOR SQL. Copie todo o comando que aparece dentro do bloco em laranja acima e cole na tela do interpretador. Clique em EXECUTAR. Se der certo deverá aparecer uma mensagem “COMANDO EXECUTADO COM SUCESSO”.
Observação 1: ao copiar os comandos acima e colar no interpretador sql substituam as aspas digitando-as manualmente (as que parecem na frente de WHERE). Do contrário ocorrerá um erro de execução no comando.
Observação 2: para quem tem algum conhecimento de SQL irei explicar o significado dos campos nos comandos acima:
- PRO_VALOR1, PRO_VALOR2, PRO_VALOR3, PRO_VALOR4, PRO_VALOR5: representam os preços de venda das tabelas 1 a 5, sendo que a tabela 1 é a utilizada por padrão no sistema;
- PRO_LUCRO1, PRO_LUCRO2, PRO_LUCRO3, PRO_LUCRO4, PRO_LUCRO5: representam os percentuais de lucro das 5 tabelas baseado no valor de custo. Normalmente o sistema calcula estes valores no cadastro de produtos, mas como estamos realizando uma intervenção direta no banco de dados é recomendável atualizar o percentual de lucro correspondente ao da tabela que está atualizando. Ou seja, se alterar o preço da tabela 2 altere os campos PRO_VALOR2 e PRO_LUCRO2 aplicando o mesmo percentual em ambos, como indicado acima;
- PRO_CATEGORIA: neste campo é armazenada a categoria do produto;
- PRO_SETOR: neste campo é armazenado o setor ao qual o produto pertence;
Observação 3: observe que para fazer o cálculo do percentual nós fazemos uma multiplicação. Se o valor da tabela 2 fosse igual ao da tabela 1 seria o mesmo que multiplicar o valor da tabela 1 por 1 (ou não multiplicar). Já se ele for 10% superior a multiplicação é feita por 1.1 (1 + 10%). Se ele for 10% inferior a multiplicação é feita por 0.9 (1 - 10%). Lembrando que no SQL utiliza-se o ponto como separador de casa decimal, ou seja, ao invés de “0,9″ usa-se “0.9″.
Sem comentários »Zerar estoque dos produtos em um programa da linha 4U
O comando abaixo permite zerar o estoque de todos os produtos de qualquer sistema da linha 4U. O funcionamento do comando é o seguinte: todos os produtos com estoque diferente de zero terão um acerto de estoque registrado na quantidade exata da diferença para zero. Exemplo, se o produto tem 10 unidades em estoque será registrado um acerto de saída de 10 unidades, já se ele está com -3 unidades será registrada uma entrada de 3 unidades. Segue o comando:
SISTEMA: todos os da linha 4U - GE-COMERCIO 4U, GE-COMERCIO PLUS 4U, GE-INFO 4U, entre outros
INSERT INTO ESTOQUE (EST_CODIGO, EST_DATA, EST_HORA, EST_MOTIVO, EST_ENTRADA, EST_SAIDA, EST_USUARIO, PRO_CODIGO, EST_CUSTO)
SELECT GEN_ID(GEN_ESTOQUE_ID,1), CURRENT_DATE, CURRENT_TIME, ‘ACERTO - ZERAR ESTOQUE’, 0, PRO_ESTOQUE, ‘ADMINISTRADOR’, PRO_CODIGO, PRO_CUSTO
FROM PRODUTOS WHERE PRO_ESTOQUE > 0
INSERT INTO ESTOQUE (EST_CODIGO, EST_DATA, EST_HORA, EST_MOTIVO, EST_ENTRADA, EST_SAIDA, EST_USUARIO, PRO_CODIGO, EST_CUSTO)
SELECT GEN_ID(GEN_ESTOQUE_ID,1), CURRENT_DATE, CURRENT_TIME, ‘ACERTO - ZERAR ESTOQUE’, PRO_ESTOQUE*(-1), 0, ‘ADMINISTRADOR’, PRO_CODIGO, PRO_CUSTO
FROM PRODUTOS WHERE PRO_ESTOQUE < 0
Para executar os comandos acima abra o programa, vá ao menu FERRAMENTAS, em INTERPRETADOR SQL. Copie todo o comando que aparece em cada bloco em laranja acima e cole na tela do interpretador. Clique em EXECUTAR. Se der certo deverá aparecer uma mensagem “COMANDO EXECUTADO COM SUCESSO”. Você deverá realizar o procedimento duas vezes, uma para cada bloco de comando, ou seja, execute o código do primeiro quadro e depois o do segundo para funcionar.
UPDATE: ao copiar e colar o comando acima troque as aspas que aparecem em ‘ACERTO - ZERAR ESTOQUE’ e ‘ADMINISTRADOR’, digite-as novamente manualmente para evitar o erro “SQL error code = -104 Token unknown – line2, column 62″ quando executar.
2 comentários »Comando SQL para corrigir problema com controle de entregas na linha 4U
Olá a todos,
A partir de agora começarei a postar no blog comandos SQL que ajudarão a realizar procedimentos diretamente no banco de dados. Estes procedimentos podem ajudar em algumas tarefas, como zerar o estoque dos produtos, por exemplo, ou mesmo a corrigir algum problema identificado no banco de dados antes da liberação de uma nova atualização.
Este primeiro comando visa justamente corrigir um problema encontrado nos sistemas da linha 4U (GE-COMERCIO 4U, GE-INFO 4U, GEPAD 4U, entre outros) após as últimas atualizações. O problema ocorre devido a inclusão de um controle de taxas de entrega regionais que foi liberado na versão 4.4.0.0. Este problema faz com que em programas onde não tenha sido selecionado um produto para a taxa de entrega as vendas com forma de transporte diferente de “CAIXA” não entrem no controle de entrega. Segue o comando:
SISTEMA: todos os da linha 4U - GE-COMERCIO 4U, GE-COMERCIO PLUS 4U, GE-INFO 4U, entre outros
CREATE OR ALTER PROCEDURE SP_VENDAENTREGAR (
VENDA INTEGER)
AS
begin
/* Procedure Text */
DELETE FROM ENTREGAR WHERE VEN_CODIGO = :VENDA;
DELETE FROM ENTREGUE WHERE VEN_CODIGO = :VENDA;
INSERT INTO ENTREGAR (VEI_CODIGO, VEN_CODIGO, PRO_CODIGO, CON_CODIGO, ENT_QTDE, ENT_DATA, ENT_HORA, ENT_ENTREGUE, ENT_TIPO)
SELECT VEI_CODIGO, VENDAS.VEN_CODIGO, PRO_CODIGO, CON_CODIGO, VEI_QTDE, VEI_DATAENTREGA, VEI_HORAENTREGA, CAST(0 AS INTEGER) ENT_ENTREGUE, VEN_ENTREGA
FROM VENDASITENS
INNER JOIN VENDAS ON (VENDAS.VEN_CODIGO = VENDASITENS.VEN_CODIGO)
LEFT JOIN CONFIGURA ON (CFG_CODIGO IS NOT NULL)
WHERE VENDAS.VEN_CODIGO = :VENDA AND VEN_ENTREGA>0
/* caso tenha acréscimo dos 10% do garçom e o produto sejao acréscimo, remove ele da lista de entregas */
AND ((CFG_PDV_ACRESCPORC = 0) OR (PRO_CODIGO_ACRESCIMO <> VENDASITENS.PRO_CODIGO))
/* remove taxa de entrega */
AND ((PRO_CODIGO_ENTREGA <> VENDASITENS.PRO_CODIGO) OR (PRO_CODIGO_ENTREGA IS NULL));
endPara executar o comando acima abra o programa, vá ao menu FERRAMENTAS, em INTERPRETADOR SQL. Copie todo o comando que aparece dentro do bloco em laranja acima e cole na tela do interpretador. Clique em EXECUTAR. Se der certo deverá aparecer uma mensagem “COMANDO EXECUTADO COM SUCESSO”.
Sem comentários »