Prezados, Sou um iniciante no scriptcase e estou com um problema.
Tenho um sistema de vendas e preciso de um campo especial para receber o código de venda.
São muitos Vendedores em tempo real (talvez milhares) e no cadastro do vendedor(CadVend) criei 2 campos DataVenda (date()) e CountVenda(Interger).
Acontece que o código da venda tem este formato “201801-1”(AnoMês-contador).
Como tem vendedores espertos que utilizam membros da família para aumentar a área de venda. colocam estes membros para vender também com o seu login.
Nesse caso Preciso Bloquear o Registro (Lock Transacional) desse vendedor para fazer o seguinte:
1º Inicia Transação
2º - Verificar a data com o campo DataVenda, Se For a Mesma data Pega o valor do campo Datavenda (guarda numa variável), Pega o valor do campo CountVenda e acrescenta + 1 (guardando numa variável), Se for uma data Posterior Pega a data corrente (guarda numa variável), Pega a Variável do Campo CountVenda e seta para 1.
3º - Concatena os resultados das 2 variáveis (Data e contador) para deixar no formato: “201801-1”(AnoMês-contador)
4º - Atualiza os campos DataVenda e CountVenda do cadastro do vendedor
5º - Termina transação
6º - Retorna resultado do 3º passo para o campo CodVenda do cadastro de vendas.
Pensei em fazer isso no evento no evento “After insert”
Já consegui fazer funcionar numa procedure dentro do mysql mas não consigo fazer retornar o valor do 3º passo para o formulario de cadastro PHP
Alguém poderia me ajudar? sou dba mas não manjo ainda dos paranauê de php + scriptcase ainda.
Segue Abaixo Procedure MYSQL
CREATE PROCEDURE Iserver.Gera_CodProd(OUT V_CodProd CHAR(13))
DETERMINISTIC
SQL SECURITY INVOKER
COMMENT ‘Gera Código de Produção a Partir da Tabela de Configuração geral’
BEGIN
DECLARE V_CodProd VARCHAR(13);
DECLARE V_CountProd decimal(5,0);
DECLARE V_Data_CodProd DATE;
START TRANSACTION;
SELECT tab_Config_Geral.Config_Data_CodProd INTO @V_Data_CodProd FROM tab_Config_Geral FOR UPDATE;
SELECT tab_Config_Geral.Config_CodProd INTO @V_CountProd FROM tab_Config_Geral;
IF @V_Data_CodProd = CURDATE() THEN
SET @V_CountProd = @V_CountProd + 1;
ELSE
SET @V_CountProd = 1;
END IF;
UPDATE tab_Config_Geral SET Config_Data_CodProd = CURDATE(), Config_CodProd = @V_CountProd;
SET @V_CodProd = CONCAT_WS(’-’, CAST(DATE_FORMAT(CURDATE(),’%Y%m’) AS CHAR),CAST(@V_CountProd AS CHAR));
COMMIT;
#SET V_CodProd = CONCAT_WS(’-’, CAST(DATE_FORMAT(CURDATE(),’%Y%m’) AS CHAR),CAST(V_CountProd AS CHAR));
END
