-- Emissão de Fatura por Período
-- Fatura
SELECT	
	tf.id_titulo_financeiro,
	se.nome AS nome_empresa,
	tf.numero_titulo,
	solv.titulo AS situacao_titulo,
	p.id_pessoa,
	p.nome AS nome_pessoa,
	p.codigo,
	p.natureza,
	ep.logradouro,
	ep.complemento,
	ep.numero,
	ep.cep,
	ep.bairro,
	ep.telefone,
	m.nome AS nome_municipio,
	CASE WHEN (p.natureza = 1) THEN
		SUBSTRING(LPAD(TRANSLATE(p.cnpj_cpf, '.-', ''), 11, '0'), 1, 3) || '.' || SUBSTRING(LPAD(TRANSLATE(p.cnpj_cpf, '.-', ''), 11, '0'), 4, 3) || '.' ||
		SUBSTRING(LPAD(TRANSLATE(p.cnpj_cpf, '.-', ''), 11, '0'), 7, 3) || '-' || SUBSTRING(LPAD(TRANSLATE(p.cnpj_cpf, '.-', ''), 11, '0'), 10)
	WHEN (p.natureza = 2) THEN
		SUBSTRING(LPAD(TRANSLATE(p.cnpj_cpf, '.-/', ''), 14, '0'), 1, 2) || '.' || SUBSTRING(LPAD(TRANSLATE(p.cnpj_cpf, '.-/', ''), 14, '0'), 3, 3) || '.' || SUBSTRING(LPAD(TRANSLATE(p.cnpj_cpf, '.-/', ''), 14, '0'), 6, 3) || '/' ||
		SUBSTRING(LPAD(TRANSLATE(p.cnpj_cpf, '.-/', ''), 14, '0'), 9, 4) || '-' || SUBSTRING(LPAD(TRANSLATE(p.cnpj_cpf, '.-/', ''), 14, '0'), 13) END AS cnpj_cpf,
	p.inscricao_estadual,
	tf.data_emissao,
	tf.data_vencimento,
	tf.valor_titulo AS valor_titulo,
	mu.nome AS municipio_empresa,
	uf.sigla AS uf_empresa,
	pes.natureza AS natureza_empresa,
	CASE WHEN (pes.natureza = 1) THEN
		SUBSTRING(LPAD(TRANSLATE(pes.cnpj_cpf, '.-', ''), 11, '0'), 1, 3) || '.' || SUBSTRING(LPAD(TRANSLATE(pes.cnpj_cpf, '.-', ''), 11, '0'), 4, 3) || '.' ||
		SUBSTRING(LPAD(TRANSLATE(pes.cnpj_cpf, '.-', ''), 11, '0'), 7, 3) || '-' || SUBSTRING(LPAD(TRANSLATE(pes.cnpj_cpf, '.-', ''), 11, '0'), 10)
	WHEN (pes.natureza = 2) THEN
		SUBSTRING(LPAD(TRANSLATE(pes.cnpj_cpf, '.-/', ''), 14, '0'), 1, 2) || '.' || SUBSTRING(LPAD(TRANSLATE(pes.cnpj_cpf, '.-/', ''), 14, '0'), 3, 3) || '.' || SUBSTRING(LPAD(TRANSLATE(pes.cnpj_cpf, '.-/', ''), 14, '0'), 6, 3) || '/' ||
		SUBSTRING(LPAD(TRANSLATE(pes.cnpj_cpf, '.-/', ''), 14, '0'), 9, 4) || '-' || SUBSTRING(LPAD(TRANSLATE(pes.cnpj_cpf, '.-/', ''), 14, '0'), 13) END AS cnpj_empresa,
	pes.inscricao_estadual AS ie_empresa,
	epe.logradouro AS logradouro_empresa,
	epe.complemento AS complemento_empresa,
	epe.numero AS numero_empresa,
	epe.cep AS cep_empresa,
	epe.bairro AS bairro_empresa,
	epe.telefone AS telefone_empresa,
	su.nome AS usuario_lancamento,
	pes.opcional_1 AS rodape_1,
	pes.opcional_2 AS rodape_2
FROM	titulo_financeiro AS tf
	INNER JOIN pessoa AS p ON (p.id_pessoa = tf.id_credor_devedor)
	INNER JOIN sis_empresa AS se ON (se.id_empresa = tf.id_empresa)
	INNER JOIN pessoa AS pes ON (pes.id_pessoa = (SELECT F_OBTEM_PARAMETRO_INTEIRO('sistema.id_pessoa_empresa', tf.id_empresa, 0, 'S')))
	INNER JOIN municipio AS mu ON (mu.id_municipio = pes.id_municipio)
	INNER JOIN uf AS uf ON (uf.id_uf = mu.id_uf)
	LEFT OUTER JOIN endereco_pessoa AS ep ON (ep.id_pessoa = p.id_pessoa AND ep.id_tipo_endereco = 1 AND ep.registro_ativo = 'S')
	LEFT OUTER JOIN municipio AS m ON (m.id_municipio = ep.id_municipio)
	LEFT OUTER JOIN sis_usuario AS su ON (su.id_usuario = tf.id_usuario_lancamento)
	LEFT OUTER JOIN endereco_pessoa AS epe ON (epe.id_pessoa = pes.id_pessoa AND epe.id_tipo_endereco = 1 AND epe.registro_ativo = 'S')
	LEFT OUTER JOIN sis_opcao_lista_valor solv ON (solv.id = tf.situacao AND solv.id_lista_valor = 'CEDBEA3BCD98445F98C29C5DAC4B809D')
WHERE	tf.id_empresa = :IdEmpresaObrigatorio
AND	tf.data_emissao BETWEEN :DataInicialEmissao AND :DataFinalEmissao
AND	(:IdCredorDevedorNaoObrigatorio = -1 OR tf.id_credor_devedor = :IdCredorDevedorNaoObrigatorio)
AND	(:IdUsuario = -1 OR tf.id_usuario_lancamento = :IdUsuario)
AND	tf.natureza_titulo IN (201, 209, 213, 220)
AND	tf.situacao IN (1, 2, 3, 10)
AND	tf.tipo_titulo = 3

