Emitindo NF-e de devolução para empresas do Simples Nacional com destaque de ICMS.


--use [12929214000126]
-- Fazendo Nfe de devolução para empresas do simples nacional 
-- quando tem necessidade destacar icms
-- açaí Brasil Exemplo 
-- cfop 5202 ou 6202 de devolução
-- itens deverão estar com CFOP/CSON 900

select top 10 * from nf_eletronica order by nfe_id desc
select * from nf_eletronica_itens where nfe_id=38

DECLARE @nfe_codigo INT
SET @nfe_codigo = 38

UPDATE nf_eletronica_itens SET infe_vBC = '390.95' WHERE nfe_id = @nfe_codigo
UPDATE nf_eletronica_itens SET infe_pICMS = '12' WHERE nfe_id = @nfe_codigo
UPDATE nf_eletronica_itens SET infe_vICMS = '46.91' WHERE nfe_id = @nfe_codigo
UPDATE nf_eletronica SET nfe_vBC = '390.95' WHERE nfe_id = @nfe_codigo
UPDATE nf_eletronica SET nfe_vICMS = '46.91' WHERE nfe_id = @nfe_codigo

-- Se for Nota complementar tem que referenciar nossa nota anterior (apenas se o cliente errou)
UPDATE nf_eletronica SET nfe_refnfe='31231212929214000126550020000003091784281210' WHERE nfe_id = 38



SQL COMPLETO


BEGIN TRY
    -- Iniciar a transação
    BEGIN TRANSACTION;
 
    DECLARE @nfe_codigo INT;
    SET @nfe_codigo = 8141;
 
    -- Atualizar os itens da nota fiscal eletrônica
    UPDATE nf_eletronica_itens
    SET 
        infe_vBC = TRUNC(infe_vProd, 2),
        infe_pICMS = 0, 
        infe_vICMS = TRUNC(infe_vProd * 0 / 100, 2)
    WHERE nfe_id = @nfe_codigo
    AND infe_cfop = 5413;
 
    -- Atualizar os valores totais da nota fiscal eletrônica
    UPDATE nf_eletronica
    SET 
        nfe_vBC = (
            SELECT TRUNC(SUM(infe_vBC), 2)
            FROM nf_eletronica_itens WITH (NOLOCK)
            WHERE nfe_id = @nfe_codigo
        ),
        nfe_vICMS = (
            SELECT TRUNC(SUM(infe_vICMS), 2)
            FROM nf_eletronica_itens WITH (NOLOCK)
            WHERE nfe_id = @nfe_codigo
        )
    WHERE nfe_id = @nfe_codigo;
 
    -- Confirmar a transação
    COMMIT;
END TRY
BEGIN CATCH
    -- Em caso de erro, desfazer a transação
    ROLLBACK;
 
    -- Exibir a mensagem de erro
    DECLARE @ErrorMessage NVARCHAR(4000);
    SET @ErrorMessage = ERROR_MESSAGE();
    RAISERROR(@ErrorMessage, 16, 1);
END CATCH;