USE [TryNFeOnline]
GO

ALTER TABLE [dbo].[notafiscal] ADD 
[nfeCodigoMensagem] [int] NULL,
[nfeMensagem] [varchar] (500) COLLATE Latin1_General_CI_AS NULL,
[idnRascunho] [bit] NULL
GO
-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[TRYNFE_ATUALIZA_CONSULTA_SIT]
(
    @nota_id integer,
    @cstat integer,
    @veraplic varchar(40),
    @motivo varchar(1000),
    @nrec varchar(30) = null,
    @dhrecbto datetime,
    @tmed integer,
    @prot varchar(52),
    @chave varchar(60) = null,
	@cMsg integer = null,
	@xMsg varchar(500) = null
)
AS
BEGIN
	SET NOCOUNT ON;
	
	declare @acao_atualizar integer;

  /*
    Atualiza a nota informada com os dados recebidos dos Webservices
  */

  if (@prot is null)
    set @acao_atualizar = 5;
  else
    set @acao_atualizar = 10;

  -- Atualiza a nota com os dados do recibo
  UPDATE notafiscal set
    nfeAcao = @acao_atualizar,
    nfeVerAplic = @veraplic,
    nfeCstat = @cstat,
    nfeMotivo = @motivo,
    nfeDhRecbto = @dhrecbto,
    nfeTmed = @tmed
  WHERE
    id = @nota_id;

  if (@prot is not null)
  begin
     UPDATE notafiscal SET
        nfeProt = @prot
     WHERE
        id = @nota_id;
  end

  if (@cMsg is not null)
	begin
		UPDATE notafiscal set
			nfeCodigoMensagem = @cMsg,
			nfeMensagem = @xMsg
		WHERE
			id = @nota_id
	end
	    
END
GO
ALTER PROCEDURE [dbo].[TRYNFE_ATUALIZA_STATUS] (
    @nota_id integer,
    @cstat integer = null,
    @veraplic varchar(40) = null,
    @motivo varchar(MAX),
    @nrec varchar(30) = null,
    @dhrecbto datetime,
    @tmed integer = -100,
    @prot varchar(52) = null,
    @chave varchar(60) = null,
	@cMsg integer = null,
	@xMsg varchar(500) = null
    )
AS
BEGIN
	declare @acao_atualizar integer;

	/*
		Atualiza a nota informada com os dados recebidos dos Webservices
	*/

	if (@prot is null)
		set @acao_atualizar = 5;
	else
	    set @acao_atualizar = 10;

	-- Atualiza a nota com os dados do recibo
	UPDATE notafiscal set
	    nfeAcao = @acao_atualizar,
	    nfeVerAplic = @veraplic,	    
	    nfeMotivo = @motivo,
	    nfeNrec = @nrec,
	    nfeDhRecbto = @dhrecbto,
	    dataAtualizacaoStatusNota = GETDATE(),
	    nfeTmed = @tmed
	WHERE
	    id = @nota_id;
	
	if (@cstat is not null)
	begin
		UPDATE notafiscal set
			nfeCstat = @cstat
		WHERE
			id = @nota_id
	end

	if (@prot is not null)
	begin
		UPDATE notafiscal set
	        nfeProt = @prot
		WHERE
	        id = @nota_id;
	end	

	if (@cMsg is not null)
	begin
		UPDATE notafiscal set
			nfeCodigoMensagem = @cMsg,
			nfeMensagem = @xMsg
		WHERE
			id = @nota_id
	end
	
	if (@cstat = 100)
	begin
	
	INSERT INTO TrySincronizacaoNotaFiscal
	SELECT id, modelo, serie, numero, dataEmissao, naturezaOperacao, tipodocumento, dataSaidaEnt,
	horaSaiEnt, finalidadeEmissao, infadicionaisfisco, infcomplcontribuinte, nfeChave, nfeTpAmb, nfeCstat, nfeProtCancelamento, nfeMotivoCancelamento, 
	idOperacao, tpEmis, idnEmiteNF, idnFatura, nfeRef, codigoNumericoChave, dvChave, dataCompetencia, 
	idnEmiteCF, numeroCF, idnEmiteCte, nfeCstatDpec, nfeMotivoDpec, nfeDhRecbtoDpec, nfeNumRegistroDpec, idCondicao, idForma, numeroMovimento, idnMovimento, 
	idnDocumentoEmitido, idVendedor, valorEntrada, idOperador, idnNotaEntrada, idnGeraFatura, idnCondicional, nfeCstatEvento, 
	(SELECT hashbytes('md5', (SELECT id, modelo, serie, numero, dataEmissao, naturezaOperacao, tipodocumento, dataSaidaEnt,
	horaSaiEnt, finalidadeEmissao, infadicionaisfisco, infcomplcontribuinte, nfeChave, nfeTpAmb, nfeCstat, nfeProtCancelamento, nfeMotivoCancelamento, 
	idOperacao, tpEmis, idnEmiteNF, idnFatura, nfeRef, codigoNumericoChave, dvChave, dataCompetencia, 
	idnEmiteCF, numeroCF, idnEmiteCte, nfeCstatDpec, nfeMotivoDpec, nfeDhRecbtoDpec, nfeNumRegistroDpec, idCondicao, idForma, numeroMovimento, idnMovimento, 
	idnDocumentoEmitido, idVendedor, valorEntrada, idOperador, idnNotaEntrada, idnGeraFatura, idnCondicional, nfeCstatEvento
	FROM notafiscal WHERE id = @nota_id FOR xml raw)))
	FROM notafiscal WHERE id = @nota_id
	
	INSERT INTO TrySincronizacaoNFProduto
	SELECT id, idNotaFiscal, idProduto, cean, descricao, ncm, cfop, ucom, qcom, vuncom, vprod, vfrete, vseg, vdesc, voutro, icmscst, 
	icmsorigem, icmsmodalidade, icmsperreducaobc, icmavalorbasecalc, icmsaliq, icmsvalor, ipicst, ipivalorbasecalculo, ipialiquota, ipivalor, pisst, 
	pisvalorbasecalculo, pisvaloraliq, pisvalor, cofinscst, cofinsvalorbasecalculo, cofinspercentualaliq, cofinsvaloraliq, cofinsvalor, csosn, 
	indiceAliqIcmsCupomFiscal, idnItemCanceladoCF, idProdutoClassificacao, sequenciaClassificacao, aliqVTotTrib, vTotTrib,
	(SELECT hashbytes('md5', (SELECT id, idNotaFiscal, idProduto, cean, descricao, ncm, cfop, ucom, qcom, vuncom, vprod, vfrete, vseg, vdesc, voutro, icmscst, 
	icmsorigem, icmsmodalidade, icmsperreducaobc, icmavalorbasecalc, icmsaliq, icmsvalor, ipicst, ipivalorbasecalculo, ipialiquota, ipivalor, pisst, 
	pisvalorbasecalculo, pisvaloraliq, pisvalor, cofinscst, cofinsvalorbasecalculo, cofinspercentualaliq, cofinsvaloraliq, cofinsvalor, csosn, 
	indiceAliqIcmsCupomFiscal, idnItemCanceladoCF, idProdutoClassificacao, sequenciaClassificacao, aliqVTotTrib, vTotTrib
	FROM NFProduto WHERE id = nfp.id FOR xml raw)))
	FROM NFProduto nfp WHERE idNotaFiscal = @nota_id
	
	end
	
END
GO
INSERT INTO VERSAO(VERSAO, VERSAOATUALIZACAO, DATAATUALIZACAO) VALUES(396, 654, GETDATE());