/****** Script do comando SelectTopNRows de SSMS  ******/
select
	
	concat('update TBNFS s set s.imp_notafiscal = ',NotaFiscal,', s.imp_serie = ''',NotaFiscal_Serie,''', s.imp_chavedeacesso = ''',ChavedeAcesso,''', s.imp_valordesconto = ',ValorDesconto,', s.imp_valor = ',ValorNota,', where s.comanda = fn_lpad(''',Loja,''',3,''0'')||fn_lpad(''',Comanda,''',8,''0'');') as SQL

from(
	SELECT 
		A.loja,
		a.Comanda,
		a.NotaFiscal,
		a.NotaFiscal_Serie,
		s.ChavedeAcesso,
		s.ValorDesconto,
		s.ValorNota
	  FROM [AlphaInd 5].[dbo].[Comandas] A, [Alphaind 5].[dbo].[Clientes] b, [Alphaind 5].[dbo].[Cidades] c, [Alphaind 5].[dbo].[NFSaida] s
	  WHERE A.cliente = b.[Codigo]
	  and c.Codigo = b.cidade
	  and s.Numero = a.NotaFiscal
	  and s.Loja   = a.Loja
	  and a.data >= cast('2022-01-01' as date) 
) f




-------TBNF_LOTE
select

   s.estabelecimento_codigo ESTABELECIMENTO_CODIGO,
   s.controle NFS_CONTROLE,
   0 NFE_CONTROLE,
   s.controle LOTE,
   s.data_emissao  DATAHORA_INICIO,
   s.data_emissao DATAHORA_FIM,
   '' RECIBO,
   '' OBSERVACAO,
   '07' XML,
   '' PROTOCOLO,
   null PROTOCOLO_CANCELAMENTO

from tbnfs s
where s.imp = 1
and s.natureza = 1


--outro
update tbnfs s set s.OLD_NOTA = s.numero_notafiscal, s.chave_acesso = s.imp_chavedeacesso, s.numero_notafiscal = s.imp_notafiscal, s.serie = s.imp_serie, s.natureza = 1
where s.imp = 1
and char_length(coalesce(s.chave_acesso,'')) > 10
and imp_notafiscal is not null
and imp_serie is not null


---tbnfs_item
select
    controle,
    iif(valor_desconto > 0, valor_desconto, 0) as valor_desconto
from(
	select
		i.controle,
		iif(tag = 1, valor_desconto_i + (imp_valordesconto - (QUANTIDADE_t * valor_desconto_j)), valor_desconto_i) as valor_desconto
	from(
		select
		  coalesce(lead(0) over(partition by s.controle),1) as tag,
		  s.imp_valor, s.controle as cnf, i.controle, t.valor_total_nf, s.imp_valordesconto,i.quantidade, i.valor_unitario, i.valor_total, i.valor_desconto,
		  cast(i.quantidade * (imp_valordesconto / s.QUANTIDADE_t) as numeric(15,2)) valor_desconto_i,
		  cast((imp_valordesconto / s.QUANTIDADE_t) as numeric(15,2)) valor_desconto_j,
		  QUANTIDADE_t

		from (
			select
				(select sum(g.quantidade) from tbnfs_item_saldo g where g.nfs_controle = s.controle) as QUANTIDADE_T,
				s.*
			from tbnfs s
			where s.imp = 1
		and s.imp_valordesconto > 0

		) S, tbnfs_item i, tbnfs_totais t
		where s.imp = 1
		and s.imp_valordesconto > 0
		and i.nfs_controle = s.controle
		and t.nfs_controle = s.controle
		
		--and s.controle = 1006903
		--and i.controle = 1056862
	) i
)