Programação, Dicas_Técnicas
Resumo
Esse artigo trata dos procedimentos para realizar o descancelamento de uma venda na base de dados do Totali Commerce.
Criando Tabela de Vendas a serem descanceladas
Utilizar o script para selecionar as vendas a serem descanceladas e criar uma tabela temporária, a qual deve ter ao menos as colunas CODFIL e SEQUEN da TT_VEN. Caso ocorra algum problema o processo possa desfeito utilizando essas informações.
CREATE TABLE TEMP_DESCANCELAMENTOS AS( SELECT VEN.CODFIL, VEN.SEQUEN, VEN.NUMECF, VEN.CODSER, VEN.NUMNOT, VEN.DATHOR, VEN.FLGEST, VEN.FLGNFE, VEN.CHAVEA, VEN.MODNOT, VEN.DATCAN, VEN.PROCAN, Agora() AS DATOPE
FROM TT_VEN VEN WHERE VEN.CODFIL = '006' AND VEN.CODSER = 'CE' AND VEN.NUMNOT IN (' 61781') );
Realizar registro da conexão
- Obter o CODUID da conexão atual.
select conectauid() from dual
- Solicitar Hash do CODUID obtido anteriormente.
- Realizar registro da conexão.
/* Oracle */ declare nVerbas number(5); begin SELECT verbas into nVerbas from tt_idf; RegistraAcesso( 0, -- TOTALI '8C587B4A35BC8A65CA0ED9E4B3900516', -- Hash calculado 238869, -- Resultado do ConectaUID 'totali', Agora(), 'TOTALI', nVerbas, '--', 'Totali', userenv('sessionid')); end;
/* PostgreSQL */ select RegistraAcesso( 0, -- TOTALI '551DDB3D6A6DE67DAF1B246A788893B0', -- Hash calculado 2915, -- Resultado do ConectaUID 'totali', Agora(), 'TOTALI', verbas, '--', 'Totali', userenv('sessionid')) from tt_idf;
Processos para descancelamento
Esse processo atualmente irá descancelar apenas Venda, Itens de Venda e Reabrir o financeiro conforme cada caso, para maiores informações sobre o que está tratado no processo verificar documentação na função Descancela_Venda.
/* Oracle */ DECLARE WK_FILIAL TT_VEN.CODFIL%TYPE; WK_SEQUEN TT_VEN.SEQUEN%TYPE; DUMMY VARCHAR2(1000); CURSOR CR_DESCANCELAMENTOS IS SELECT TMP.CODFIL, TMP.SEQUEN FROM TEMP_DESCANCELAMENTOS TMP; --Inicio BEGIN OPEN CR_DESCANCELAMENTOS; LOOP FETCH CR_DESCANCELAMENTOS INTO WK_FILIAL, WK_SEQUEN; EXIT WHEN CR_DESCANCELAMENTOS%NOTFOUND;
DUMMY := Descancela_Venda(WK_FILIAL, WK_SEQUEN); END LOOP; CLOSE CR_DESCANCELAMENTOS; END;
/* PostgreSQL */ CREATE OR REPLACE FUNCTION DESCANCELAMENTOS_VENDA() RETURNS VARCHAR AS $$ DECLARE WK_FILIAL TT_VEN.CODFIL%TYPE; WK_SEQUEN TT_VEN.SEQUEN%TYPE; DUMMY VARCHAR2(2); CR_DESCANCELAMENTOS CURSOR FOR SELECT TMP.CODFIL, TMP.SEQUEN FROM TEMP_DESCANCELAMENTOS TMP;
--Inicio BEGIN OPEN CR_DESCANCELAMENTOS; LOOP FETCH CR_DESCANCELAMENTOS INTO WK_FILIAL, WK_SEQUEN; EXIT WHEN NOT FOUND;
DUMMY := Descancela_Venda(WK_FILIAL, WK_SEQUEN); END LOOP; CLOSE CR_DESCANCELAMENTOS; RETURN 'OK'; END; $$ language 'plpgsql'; /* Executa a função de descancelamento */ SELECT DESCANCELAMENTOS_VENDA(); /* Deleta a função temporária criada */ DROP FUNCTION DESCANCELAMENTOS_VENDA() CASCADE;
Conferir dados da venda conforme a necessidade. Após conclusão da conferencia da venda deletar a tabela temporária "TEMP_DESCANCELAMENTOS" criada.
DROP TABLE TEMP_DESCANCELAMENTOS;
Analisar Vendas Canceladas
Algumas coisas devem ser analisadas ao cancelar uma venda:
1 - Nota Inutilizada no Commerce e Autorizada na SEFAZ. Em alguns casos a NFe é autorizada na SEFAZ e fica cancelada no commerce/guarda, isso já aconteceu na troca da versão de XML da NFe da versão 3.10 para 4.00.
Nesse caso, deve-se utilizar o Testador do middleware, ir até a aba de Consulta NFe, inserir os dados da nota e Consultar, com isso a guarda vai ficar com "GUA_SITUACAO" = 1, e com o "GUA_CHAVEA" preenchido.
Depois disso, verificar o processo abaixo para descancelar a Nota.