Perguntas Conta de Estoque por Vendedor
- diego
- Autor do Tópico
- Desconectado
- Administrator
Menos
Mais
- Postagens: 62
- Obrigados Recebidos: 5
1 ano 4 meses atrás - 1 ano 4 meses atrás #112
por diego
Conta de Estoque por Vendedor foi criado por diego
- Uma nova configuração no sistema, permite que os vendedores ao enviar os pedidos, tenham os saldos debitados da sua própria conta de estoque. Para isso devemos realizar a configuração em "Configurações - Senhas - Estoque Vendedor". No campo parâmetros devemos colocar as transações que iram obedecer essa condição, separadas por ponto e vírgula.
- OBS: Esta configuração está disponível a partir da versão 2.7.015.115. Mas caso seja necessário inserir a configuração sem atualizar a versão, segue o script para inserir o campo na base de dados.[justify]
[/justify]
Cuidado: Spoiler!
{$IfNotExists SELECT ID FROM ZMENSAGEM WHERE ID = 'ESTOQUE_VENDEDOR'}
INSERT INTO ZMENSAGEM (ID, MENSAGEM, TIPO, USUARIO, STATUS, SEMPRE, PARAMETRO, VALIDACAO, OBS_OBRIG, SQL_TESTE_VALIDACAO)
VALUES ('ESTOQUE_VENDEDOR', NULL, 'SENHA', NULL, '1', NULL, NULL, NULL, NULL, NULL);
{$IfNotExists SELECT CAMPO FROM ZAXU WHERE TABELA = 'CONFIG' AND SECAO = 'EST_VEND' AND CAMPO = 'ESTOQUE_VENDEDOR'}
INSERT INTO ZAUX (TABELA, SECAO, CAMPO, ORDEM, TITULO, TIPO, TAMANHO, DECIMAIS, VALID, MASCARA, MSG, TABELA_OPCOES)
VALUES ('CONFIG', 'EST_VEND', 'ESTOQUE_VENDEDOR', NULL, 'Campo referente a tabela ZMENSAGEM', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
SET TERM ^ ;
CREATE OR ALTER procedure ATUALIZA_VENDEDOR_ESTOQUE (
PEDIDOID integer,
TIPO integer,
ITEMID integer)
as
begin
if (:tipo = 1) then
update orcamento o set o.conta_estoque = o.vendedorid
where o.pedidoid = :pedidoid;
if (:tipo = 2) then
update item_orcamento io set io.conta_estoque = (select o.vendedorid from orcamento o where o.pedidoid = io.pedidoid)
where io.itemid = :itemid;
if (:tipo = 3) then
update pedido p set p.conta_estoque = p.vendedorid
where p.pedidoid = :pedidoid;
if (:tipo = 4) then
update item i set i.conta_estoque = (select p.vendedorid from orcamento p where p.pedidoid = i.pedidoid)
where i.itemid = :itemid;
end^
SET TERM ; ^
SET TERM ^ ;
CREATE OR ALTER trigger atualiza_estoque_item for item
active after insert position 0
AS
begin
if ((SELECT parametro FROM zmensagem WHERE id = 'ESTOQUE_VENDEDOR')
containing (SELECT P.TRANSACAOID FROM PEDIDO P
WHERE P.PEDIDOID = NEW.PEDIDOID AND P.CLASSE_PEDIDO = 'S' AND P.TIPO_PEDIDO = 'S')) then
execute procedure atualiza_vendedor_estoque(new.itemid,4,0);
end^
SET TERM ; ^
SET TERM ^ ;
CREATE OR ALTER trigger atualiza_estoque_item_orcamento for item_orcamento
active after insert position 0
AS
begin
if ((SELECT parametro FROM zmensagem WHERE id = 'ESTOQUE_VENDEDOR')
containing (SELECT P.TRANSACAOID FROM PEDIDO P
WHERE P.PEDIDOID = NEW.PEDIDOID AND P.CLASSE_PEDIDO = 'S' AND P.TIPO_PEDIDO = 'S')) then
execute procedure atualiza_vendedor_estoque(0,2,new.itemid);
end^
SET TERM ; ^
SET TERM ^ ;
CREATE OR ALTER trigger atualiza_estoque_orcamento for orcamento
active after insert position 0
AS
begin
if (new.classe_pedido = 'S' and new.tipo_pedido = 'S' and
(SELECT parametro FROM zmensagem WHERE id = 'ESTOQUE_VENDEDOR') containing new.transacaoid) then
execute procedure atualiza_vendedor_estoque(new.pedidoid,1,0);
end^
SET TERM ; ^
SET TERM ^ ;
CREATE OR ALTER trigger atualiza_estoque_pedido for pedido
active after insert position 0
AS
begin
if (new.classe_pedido = 'S' and new.tipo_pedido = 'S' and
(SELECT parametro FROM zmensagem WHERE id = 'ESTOQUE_VENDEDOR') containing new.transacaoid) then
execute procedure atualiza_vendedor_estoque(new.pedidoid,3,0);
end^
SET TERM ; ^
INSERT INTO ZMENSAGEM (ID, MENSAGEM, TIPO, USUARIO, STATUS, SEMPRE, PARAMETRO, VALIDACAO, OBS_OBRIG, SQL_TESTE_VALIDACAO)
VALUES ('ESTOQUE_VENDEDOR', NULL, 'SENHA', NULL, '1', NULL, NULL, NULL, NULL, NULL);
{$IfNotExists SELECT CAMPO FROM ZAXU WHERE TABELA = 'CONFIG' AND SECAO = 'EST_VEND' AND CAMPO = 'ESTOQUE_VENDEDOR'}
INSERT INTO ZAUX (TABELA, SECAO, CAMPO, ORDEM, TITULO, TIPO, TAMANHO, DECIMAIS, VALID, MASCARA, MSG, TABELA_OPCOES)
VALUES ('CONFIG', 'EST_VEND', 'ESTOQUE_VENDEDOR', NULL, 'Campo referente a tabela ZMENSAGEM', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
SET TERM ^ ;
CREATE OR ALTER procedure ATUALIZA_VENDEDOR_ESTOQUE (
PEDIDOID integer,
TIPO integer,
ITEMID integer)
as
begin
if (:tipo = 1) then
update orcamento o set o.conta_estoque = o.vendedorid
where o.pedidoid = :pedidoid;
if (:tipo = 2) then
update item_orcamento io set io.conta_estoque = (select o.vendedorid from orcamento o where o.pedidoid = io.pedidoid)
where io.itemid = :itemid;
if (:tipo = 3) then
update pedido p set p.conta_estoque = p.vendedorid
where p.pedidoid = :pedidoid;
if (:tipo = 4) then
update item i set i.conta_estoque = (select p.vendedorid from orcamento p where p.pedidoid = i.pedidoid)
where i.itemid = :itemid;
end^
SET TERM ; ^
SET TERM ^ ;
CREATE OR ALTER trigger atualiza_estoque_item for item
active after insert position 0
AS
begin
if ((SELECT parametro FROM zmensagem WHERE id = 'ESTOQUE_VENDEDOR')
containing (SELECT P.TRANSACAOID FROM PEDIDO P
WHERE P.PEDIDOID = NEW.PEDIDOID AND P.CLASSE_PEDIDO = 'S' AND P.TIPO_PEDIDO = 'S')) then
execute procedure atualiza_vendedor_estoque(new.itemid,4,0);
end^
SET TERM ; ^
SET TERM ^ ;
CREATE OR ALTER trigger atualiza_estoque_item_orcamento for item_orcamento
active after insert position 0
AS
begin
if ((SELECT parametro FROM zmensagem WHERE id = 'ESTOQUE_VENDEDOR')
containing (SELECT P.TRANSACAOID FROM PEDIDO P
WHERE P.PEDIDOID = NEW.PEDIDOID AND P.CLASSE_PEDIDO = 'S' AND P.TIPO_PEDIDO = 'S')) then
execute procedure atualiza_vendedor_estoque(0,2,new.itemid);
end^
SET TERM ; ^
SET TERM ^ ;
CREATE OR ALTER trigger atualiza_estoque_orcamento for orcamento
active after insert position 0
AS
begin
if (new.classe_pedido = 'S' and new.tipo_pedido = 'S' and
(SELECT parametro FROM zmensagem WHERE id = 'ESTOQUE_VENDEDOR') containing new.transacaoid) then
execute procedure atualiza_vendedor_estoque(new.pedidoid,1,0);
end^
SET TERM ; ^
SET TERM ^ ;
CREATE OR ALTER trigger atualiza_estoque_pedido for pedido
active after insert position 0
AS
begin
if (new.classe_pedido = 'S' and new.tipo_pedido = 'S' and
(SELECT parametro FROM zmensagem WHERE id = 'ESTOQUE_VENDEDOR') containing new.transacaoid) then
execute procedure atualiza_vendedor_estoque(new.pedidoid,3,0);
end^
SET TERM ; ^
Ultima edição: 1 ano 4 meses atrás por diego.
Por favor Acessar ou Registrar para participar da conversa.
Tempo para a criação da página:0.092 segundos