Advertisement
Guest User

Untitled

a guest
Apr 20th, 2018
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.32 KB | None | 0 0
  1. IF OBJECT_ID ('DBA.procObra') IS NOT NULL
  2. DROP PROCEDURE DBA.procObra
  3. GO
  4.  
  5. create procedure DBA.procObra(pCodempresa varchar(20) default '1',pDataInicial date,pDataFinal date,pTipoRelatorio varchar(1) default 'T')
  6. begin
  7. declare local temporary table dados(
  8. CodEmpresa varchar(20) null,
  9. CodObra integer null,
  10. NomeObra varchar(100) null,
  11. SituacaoObra VARCHAR(1) DEFAULT 'A',
  12. Origem varchar(5) null,
  13. NomeOrigem varchar(50) null,
  14. OrigemForma varchar(5) null,
  15. NomeOrigemForma varchar(50) null,
  16. CodContaFinanceira varchar(6) null,
  17. NomeContaFinanceira varchar(60) null,
  18. StatusRateio varchar(1) null,
  19. NomeStatusRateio varchar(20) null,
  20. TipoLancamento varchar(1) null,
  21. Data date null,
  22. DataSincronizacao DATETIME null default now(*),
  23. Documento varchar(20) null,
  24. Valor numeric(19,5) null default 0,
  25. CodCentroCusto integer null,
  26. NomeCentroCusto varchar(50) null,
  27. CodContaContabil integer null,
  28. NomeContaContabil varchar(50) null,
  29. CodItemContabil integer null,
  30. NomeItemContabil varchar(50) null,
  31. HistoricoTitulo varchar(2000) null,
  32. Beneficiario varchar(100) null,
  33. CodContaPagar integer null,
  34. CodContaReceber integer null,
  35. CodTipoTitulo varchar(20) null,
  36. NomeTipoTitulo varchar(50) null,
  37. DataEmissao date null,
  38. DataVencimento date null,
  39. CodMovContaFinanceira integer null,
  40. CodPeriodoCaixa integer null,
  41. DataLancamento date null,
  42. NumeroCheque varchar(20) null,
  43. CodMovimentacaoEstoque integer null,
  44. CodTipoMovimentoEstoque integer null,
  45. TipoMovimentoEstoque varchar(1) null,
  46. CodProduto integer null,
  47. NomeProduto varchar(200) null,
  48. CodUnidadeMedida varchar(3) null,
  49. Quantidade numeric(19,5) null default 0,
  50. CodLocalArmazenagem integer null,
  51. NomeLocalArmazenagem varchar(100) null,
  52. Historico varchar(50) null,
  53. RevisaoObra VARCHAR(6) NULL DEFAULT '-',
  54. PercentualConclusaoObra numeric(19,2) null,
  55. NumeroContrato varchar(30) null,
  56. DataInicioObra date NULL,
  57. DataTerminoObra date null,
  58. ValorOrcadoObra numeric(19,5) null,
  59. ValorExecutadoObra numeric(19,5) null,
  60. StatusObra varchar(1) null,
  61. NomeStatusObra varchar(20) null,
  62. ObservacaoObra varchar(3000) null,
  63. CodClienteObra integer null,
  64. NomeClienteObra varchar(100) null,
  65. NumeroApartamentosObra integer null,
  66. EnderecoObra varchar(100) null,
  67. BairroObra varchar(100) null,
  68. QuadraObra varchar(3) null,
  69. LoteObra varchar(3) null,
  70. ComplementoObra varchar(200) null,
  71. CodMunicipioObra integer null,
  72. NomeMunicipioObra varchar(100) null,
  73. NumeroMatriculaObra varchar(20) null,
  74. EnergiaUnidadeConsumidoraObra varchar(20) null,
  75. AguaUnidadeConsumidoraObra varchar(20) null,
  76. NumeroAlvaraObra varchar(20) null,
  77. AreaConstruidaObra numeric(19,5) null,
  78. AreaTerrenoObra numeric(19,5) null,
  79. NumeroPavimentoObra integer null,
  80. NumeroHabiteSeObra varchar(20) null,
  81. RRTExecucaoObra integer null,
  82. RRTProjetoObra integer null,
  83. MatriculaCEIObra varchar(20) null,
  84. ProtocoloBombeiroObra varchar(20) null,
  85. AlvaraBombeiroObra varchar(20) null,
  86. ProfissionalAprovacaoObra varchar(50) null,
  87. CodItemObra integer null,
  88. CodEtapaObra integer null,
  89. CodTipoItemObra integer null,
  90. NomeItemObra varchar(500) null,
  91. DataPlanejadoInicioItemObra date null,
  92. DataPlanejadoTerminoItemObra date null,
  93. DataExecutadoInicioItemObra date null,
  94. DataExecutadoTerminoItemObra date null,
  95. ValorOrcadoItemObra numeric(19,5) null,
  96. StatusItemObra varchar(1) null,
  97. NomeStatusItemObra varchar(20) null,
  98. ObservacaoItemObra varchar(3000) null,
  99. PercentualConclusaoItemObra numeric(19,2) null,
  100. CodOrdemItemObra integer null,
  101. CodItemObraCronograma integer null,
  102. NomeItemObraCronograma varchar(500) null,
  103. DataPlanejadoInicioItemObraCronograma date null,
  104. DataPlanejadoTerminoItemObraCronograma date null,
  105. DataExecutadoInicioItemObraCronograma date null,
  106. DataExecutadoTerminoItemObraCronograma date null,
  107. StatusItemObraCronograma varchar(1) null,
  108. NomeStatusItemObraCronograma varchar(20) null,
  109. ObservacaoItemObraCronograma varchar(3000) null,
  110. CodOrdemItemObraCronograma integer null,
  111. CodFornecedorItemObraCronograma integer null,
  112. CodClienteItemObraCronograma integer null,
  113. ServicoTercerizadoItemObraCronograma varchar(1) null,
  114. GeraContaReceberItemObraCronograma varchar(1) null,
  115. SaldoReceberItemObraCronograma numeric(19,5) null,
  116. CodContaReceberItemObraCronograma integer null,
  117. GeraContaPagarItemObraCronograma varchar(1) null,
  118. SaldoPagarItemObraCronograma numeric(19,5) null,
  119. CodContaPagarItemObraCronograma integer null,
  120. ObservacaoPlanejadoItemObraCronograma varchar(3000) null,
  121. ObservacaoExecutadoItemObraCronograma varchar(3000) null,
  122. CodResponsavelItemObraCronograma integer null,
  123. TipoOrigem varchar(1) null,
  124. TipoRelatorio varchar(1) null,
  125. GrupoNivel01 varchar(100) null,
  126. GrupoNivel02 varchar(100) null,
  127. GrupoNivel03 varchar(100) null,
  128. GrupoNivel04 varchar(100) null,
  129. ) on commit delete rows;
  130. if pTipoRelatorio is null then
  131. set pTipoRelatorio='T'
  132. end if;
  133. if pDataInicial is null then
  134. set pDataInicial='2000/01/01'
  135. end if;
  136. if pDataFinal is null then
  137. set pDataFinal='2099/01/01'
  138. end if;
  139. --Insere Temporarias
  140. select * into #Obra from Obra;
  141. select * into #ItemObra from ItemObra;
  142. select * into #ItemObraCronograma from ItemObraCronograma;
  143. select * into #procRateioMovimentoContabil from procRateioMovimentoContabil(pCodEmpresa,pDataInicial,pDataFinal,'A');
  144. select * into #MovimentacaoEstoque from MovimentacaoEstoque where DataMovimento between pDataInicial and pDataFinal;
  145. if pTipoRelatorio in( 'F','T') then
  146. --Insere dados da Rateio
  147. insert into dados with auto name select 'F' as TipoOrigem,pTipoRelatorio as TipoRelatorio,CodEmpresa,Data,CodObra,CodItemObraCronograma,Origem,NomeOrigem,OrigemForma,NomeOrigemForma,CodContaFinanceira,NomeContaFinanceira,StatusRateio,NomeStatusRateio,TipoLancamento,DataSincronizacao,Documento,Valor,CodCentroCusto,NomeCentroCusto,CodContaContabil,NomeContaContabil,CodItemContabil,NomeItemContabil,HistoricoTitulo,Beneficiario,CodContaPagar,CodContaReceber,CodTipoTitulo,NomeTipoTitulo,DataEmissao,DataVencimento,CodMovContaFinanceira,CodPeriodoCaixa,DataLancamento,NumeroCheque from #procRateioMovimentoContabil
  148. end if;
  149. if pTipoRelatorio in( 'E','T') then
  150. --Insere Estoque
  151. insert into dados with auto name select 'E' as TipoOrigem,pTipoRelatorio as TipoRelatorio,CodEmpresa,DataMovimento as DATA,CodTipoMovimentoEstoque,CodProduto,CodMovimentacaoEstoque,CodMovimentacaoEstoque as Documento,NumeroDocumento as NumeroCheque,Origem,CodUnidadeMedida,Quantidade,CodLocalArmazenagem,ValorUnitario as Valor,Observacao as HistoricoTitulo,CodObra,CodEtapaObra from #MovimentacaoEstoque
  152. end if;
  153. --Atualiza e Insere dados da ItemObraCronograma
  154. update dados as d join #ItemObraCronograma as I on(d.CodItemObraCronograma = I.CodItemObraCronograma) set d.CodItemObra = I.CodItemObra,d.NomeItemObraCronograma = I.Nome,d.DataPlanejadoInicioItemObraCronograma = I.DataPlanejadoInicio,d.DataPlanejadoTerminoItemObraCronograma = I.DataPlanejadoTermino,d.DataExecutadoInicioItemObraCronograma = I.DataExecutadoInicio,d.DataExecutadoTerminoItemObraCronograma = I.DataExecutadoTermino,d.StatusItemObraCronograma = I.Status,d.ObservacaoItemObraCronograma = I.Observacao,d.CodOrdemItemObraCronograma = I.CodOrdem,d.CodFornecedorItemObraCronograma = I.CodFornecedor,d.CodClienteItemObraCronograma = I.CodCliente,d.ServicoTercerizadoItemObraCronograma = I.ServicoTercerizado,d.ObservacaoPlanejadoItemObraCronograma = I.ObservacaoPlanejado,d.ObservacaoExecutadoItemObraCronograma = I.ObservacaoExecutado;
  155. insert into dados with auto name select pTipoRelatorio as TipoRelatorio,CodEmpresa,CodItemObraCronograma,CodItemObra,CodObra,Nome as NomeItemObraCronograma,DataPlanejadoInicio as DataPlanejadoInicioItemObraCronograma,DataPlanejadoTermino as DataPlanejadoTerminoItemObraCronograma,DataExecutadoInicio as DataExecutadoInicioItemObraCronograma,DataExecutadoTermino as DataExecutadoTerminoItemObraCronograma,Status as StatusItemObraCronograma,Observacao as ObservacaoItemObraCronograma,CodOrdem as CodOrdemItemObraCronograma,CodFornecedor as CodFornecedorItemObraCronograma,CodCliente as CodClienteItemObraCronograma,ServicoTercerizado as ServicoTercerizadoItemObraCronograma,CodContaReceber as CodContaReceberItemObraCronograma,CodContaPagar as CodContaPagarItemObraCronograma,ObservacaoPlanejado as ObservacaoPlanejadoItemObraCronograma,ObservacaoExecutado as ObservacaoExecutadoItemObraCronograma,CodResponsavel as CodResponsavelItemObraCronograma from #ItemObraCronograma as I where not exists(select CodItemObraCronograma from dados as d where d.CodItemObraCronograma = I.CodItemObraCronograma);
  156. --Atualiza Etapa da Obra e Inclui Etapas sem ItemObraCronograma
  157. update dados as d join #ItemObra as I on(d.CodItemObra = I.CodItemObra and d.CodObra = I.CodObra) set d.NomeItemObra = I.Nome,d.DataPlanejadoInicioItemObra = I.DataPlanejadoInicio,d.DataPlanejadoTerminoItemObra = I.DataPlanejadoTermino,d.DataExecutadoInicioItemObra = I.DataExecutadoInicio,d.DataExecutadoTerminoItemObra = I.DataExecutadoTermino,d.ValorOrcadoItemObra = I.ValorOrcado,d.StatusItemObra = I.Status,d.ObservacaoItemObra = I.Observacao,d.PercentualConclusaoItemObra = I.PercentualConclusao,d.CodOrdemItemObra = I.CodOrdem;
  158. insert into dados with auto name select pTipoRelatorio as TipoRelatorio,I.CodEmpresa,I.CodItemObra,I.CodObra,I.Nome as NomeItemObra,I.DataPlanejadoInicio as DataPlanejadoInicioItemObra,I.DataPlanejadoTermino as DataPlanejadoTerminoItemObra,I.DataExecutadoInicio as DataExecutadoInicioItemObra,I.DataExecutadoTermino as DataExecutadoTerminoItemObra,I.ValorOrcado as ValorOrcadoItemObra,I.Status as StatusItemObra,I.Observacao as ObservacaoItemObra,I.PercentualConclusao as PercentualConclusaoItemObra,I.CodOrdem as CodOrdemItemObra from #ItemObra as I where not exists(select CodItemObra from dados as d where I.CodItemObra = d.CodItemObra);
  159. --Atualiza Obra e Inclui obras sem ItemObra
  160. update dados as d join #Obra as O on(d.CodObra = O.CodObra) set d.PercentualConclusaoObra = O.PercentualConclusao,d.NumeroContrato = O.NumeroContrato,d.DataInicioObra = O.DataInicio,d.DataTerminoObra = O.DataTermino,d.ValorOrcadoObra = O.ValorOrcado,d.ValorExecutadoObra = O.ValorExecutado,d.StatusObra = O.Status,d.ObservacaoObra = O.Observacao,d.NomeObra = O.Nome,d.CodClienteObra = O.CodCliente,d.NumeroApartamentosObra = O.NumeroApartamentos,d.EnderecoObra = O.Endereco,d.BairroObra = O.Bairro,d.QuadraObra = O.Quadra,d.LoteObra = O.Lote,d.ComplementoObra = O.Complemento,d.CodMunicipioObra = O.CodMunicipio,d.NumeroMatriculaObra = O.NumeroMatricula,d.EnergiaUnidadeConsumidoraObra = O.EnergiaUnidadeConsumidora,d.AguaUnidadeConsumidoraObra = O.AguaUnidadeConsumidora,d.NumeroAlvaraObra = O.NumeroAlvara,d.AreaConstruidaObra = O.AreaConstruida,d.AreaTerrenoObra = O.AreaTerreno,d.NumeroPavimentoObra = O.NumeroPavimento,d.NumeroHabiteSeObra = O.NumeroHabiteSe,d.RRTExecucaoObra = O.RRTExecucao,d.RRTProjetoObra = O.RRTProjeto,d.MatriculaCEIObra = O.MatriculaCEI,d.ProtocoloBombeiroObra = O.ProtocoloBombeiro,d.AlvaraBombeiroObra = O.AlvaraBombeiro,d.ProfissionalAprovacaoObra = O.ProfissionalAprovacao, d.RevisaoObra = O.Revisao, d.SituacaoObra = o.SituacaoObra;
  161. insert into dados with auto name select pTipoRelatorio as TipoRelatorio,O.CodEmpresa as CodEmpresa,O.CodObra as CodObra,O.PercentualConclusao as PercentualConclusaoObra,O.NumeroContrato as NumeroContrato,O.DataInicio as DataInicioObra,O.DataTermino as DataTerminoObra,O.ValorOrcado as ValorOrcadoObra,O.ValorExecutado as ValorExecutadoObra,O.Status as StatusObra,O.Observacao as ObservacaoObra,O.Nome as NomeObra,O.CodCliente as CodClienteObra,O.NumeroApartamentos as NumeroApartamentosObra,O.Endereco as EnderecoObra,O.Bairro as BairroObra,O.Quadra as QuadraObra,O.Lote as LoteObra,O.Complemento as ComplementoObra,O.CodMunicipio as CodMunicipioObra,O.NumeroMatricula as NumeroMatriculaObra,O.EnergiaUnidadeConsumidora as EnergiaUnidadeConsumidoraObra,O.AguaUnidadeConsumidora as AguaUnidadeConsumidoraObra,O.NumeroAlvara as NumeroAlvaraObra,O.AreaConstruida as AreaConstruidaObra,O.AreaTerreno as AreaTerrenoObra,O.NumeroPavimento as NumeroPavimentoObra,O.NumeroHabiteSe as NumeroHabiteSeObra,O.RRTExecucao as RRTExecucaoObra,O.RRTProjeto as RRTProjetoObra,O.MatriculaCEI as MatriculaCEIObra,O.ProtocoloBombeiro as ProtocoloBombeiroObra,O.AlvaraBombeiro as AlvaraBombeiroObra,O.ProfissionalAprovacao as ProfissionalAprovacaoObra from #Obra as O where not exists(select d.CodObra from dados as d where d.CodObra = O.CodObra);
  162. --Atualiza Status
  163. update dados set NomeStatusObra = (case StatusObra when 'A' then 'PENDENTE' when 'F' then 'CONCLUÍDO' when 'C' then 'CANCELADO' end),NomeStatusItemObra = (case StatusItemObra when 'A' then 'PENDENTE' when 'F' then 'CONCLUÍDO' when 'C' then 'CANCELADO' end),NomeStatusItemObraCronograma = (case StatusItemObraCronograma when 'A' then 'PENDENTE' when 'F' then 'CONCLUÍDO' when 'C' then 'CANCELADO' end);
  164. --Atualiza Cliente da Obra
  165. update dados as d join Cliente as C on(d.CodClienteObra = C.CodCliente) set d.NomeClienteObra = C.NomeFantasia;
  166. --Atualiza Produto
  167. update dados as d join produto as p on(d.CodProduto = p.CodProduto) set d.NomeProduto = p.Nome;
  168. --Atualiza Tipo Movimento Estoque
  169. update dados as d join TipoMovimentoEstoque as T on(d.CodTipoMovimentoEstoque = T.CodTipoMovimentoEstoque) set d.TipoMovimentoEstoque = T.Tipo;
  170. --Atualiza GrupoNivel01
  171. update dados set GrupoNivel01 = strzero(CodObra,2) || ' - ' || NomeObra where NomeObra is not null;
  172. update dados set GrupoNivel01 = '99 - OUTROS' where NomeObra is null;
  173. --Atualiza GrupoNivel02
  174. update dados set GrupoNivel02 = strzero(CodOrdemItemObra,2) || ' - ' || NomeItemObra where NomeItemObra is not null;
  175. update dados set GrupoNivel02 = '99 - OUTROS' where NomeItemObra is null;
  176. update dados set GrupoNivel02 = '00 - RECEBIMENTOS' where TipoLancamento = 'C';
  177. update dados set GrupoNivel02 = 'MOVIMENTAÇÃO DE ESTOQUE' where TIpoOrigem = 'E';
  178. --Atualiza GrupoNivel03
  179. update dados set GrupoNivel03 = strzero(CodOrdemItemObra,2) || '.' || strzero(CodOrdemItemObraCronograma,2) || ' - ' || NomeItemObraCronograma where NomeItemObraCronograma is not null;
  180. update dados set GrupoNivel03 = '99 - OUTROS' where NomeItemObraCronograma is null and NomeItemObra is not null and GrupoNivel04 is not null;
  181. --Atualiza GrupoNivel04
  182. update dados set GrupoNivel04 = strzero(CodOrdemItemObra,2) || '.' || strzero(CodOrdemItemObraCronograma,2) || '.' || NomeOrigemForma where NomeOrigemForma is not null;
  183. update dados set GrupoNivel04 = '99 - OUTROS' where NomeOrigemForma is null and NomeItemObraCronograma is not null;
  184. update dados set GrupoNivel04 = (case TipoMovimentoEstoque when 'E' then '01 - ENTRADA' when 'S' then '02 - SAÍDA' end) where TIpoOrigem = 'E';
  185. select * from dados order by(case when CodObra is null then 1 else 0 end) asc,GrupoNivel01 asc,(case when TipoLancamento = 'D' and CodItemObra is null then 1 else 0 end) asc,GrupoNivel02 asc,(case when CodItemObraCronograma is null then 1 else 0 end) asc,GrupoNivel03 asc,(case when NomeOrigemForma is null then 1 else 0 end) asc,GrupoNivel04 asc,DATA asc
  186. end
  187. GO
  188.  
  189. SELECT * FROM procObra('1',NULL,NULL,'T')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement