Created
May 4, 2016 20:07
-
-
Save saferodrigo/c3a23e67ea01172bcbc58fafc21c8ea7 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #encoding: utf-8 | |
| module ProcessosHelper | |
| def self.notificar_despacho(processoId) | |
| interesses = ProcessoInteresse.where("processo_id = ?", processoId) | |
| interesses.each do |i| | |
| n = Notificacao.new | |
| n.pessoa_id = i.pessoa_id | |
| n.processo_id = processoId | |
| n.mensagem = "" | |
| n.lida = false | |
| if n.save == false | |
| ActiveRecord::Rollback | |
| end | |
| end | |
| end | |
| def self.notificar(processoId) | |
| interesses = ProcessoInteresse.where("processo_id = ?", processoId) | |
| interesses.each do |i| | |
| n = Notificacao.new | |
| n.pessoa_id = i.pessoa_id | |
| n.processo_id = processoId | |
| n.mensagem = "" | |
| n.lida = false | |
| if n.save == false | |
| ActiveRecord::Rollback | |
| end | |
| end | |
| end | |
| def self.notificar_com_excessao(processoId, usuario_id_ignorar) | |
| interesses = ProcessoInteresse.where("processo_id = ? AND pessoa_id != ?", processoId, usuario_id_ignorar) | |
| interesses.each do |i| | |
| n = Notificacao.new | |
| n.pessoa_id = i.pessoa_id | |
| n.processo_id = processoId | |
| n.mensagem = "" | |
| n.lida = false | |
| if n.save == false | |
| ActiveRecord::Rollback | |
| end | |
| end | |
| end | |
| def self.etiqueta_antiga(processo) | |
| larguraMaxima = 340 | |
| margenEsquerda = 40 | |
| margenEsquerda2 = 120 | |
| pdf = Prawn::Document.new :page_layout => :landscape, :page_size => [275, 410], :margin => [0, 0, 0, 0] | |
| size = 12 | |
| categoria = "" | |
| if (processo.categoria == 1) | |
| categoria = "Processo Administrativo" | |
| elsif (processo.categoria == 2) | |
| categoria = "Processo Legislativo" | |
| # elsif (processo.categoria == 3) | |
| # categoria = "Processo Financeiro" | |
| end | |
| pdf.font_families.update("Arial" => { | |
| :normal => {:file => "#{Rails.root.to_s}/app/assets/images/Arial.ttf"}, | |
| :bold => {:file => "#{Rails.root.to_s}/app/assets/images/Arial_Bold.ttf"} | |
| }) | |
| pdf.font "Arial" | |
| pdf.move_cursor_to 260 | |
| if (processo.categoria == Processo::CATEGORIA_LEGISLATIVO) | |
| pdf.span(larguraMaxima, :position => margenEsquerda) do | |
| pdf.text categoria, :size => 18, :inline_format => true, :style => :bold, :align => :center | |
| end | |
| pdf.move_down 7 | |
| end | |
| if processo.legislativo? | |
| dados_legislativos = ProcessoLegislativo.where(:processo_id => processo.id).first | |
| end | |
| up = 13 | |
| pdf.span(larguraMaxima/2, :position => margenEsquerda) do | |
| pdf.text "<b>Data da autuação:</b> "+processo.data.strftime("%d/%m/%Y"), :size => size, :inline_format => true | |
| if dados_legislativos | |
| pdf.text "<b>Número Projeto:</b>" + dados_legislativos.projeto_numero.to_s, :size => size, :inline_format => true if !dados_legislativos.projeto_numero.to_s.vazia? | |
| up = 26 if !dados_legislativos.projeto_numero.to_s.vazia? | |
| end | |
| end | |
| pdf.move_up up | |
| pdf.span((larguraMaxima/2), :position => (larguraMaxima/2 + 40)) do | |
| pdf.text "<b>Nº do Processo:</b> "+processo.numero, :size => size, :inline_format => true | |
| end | |
| if processo.legislativo? | |
| dados_legislativos = ProcessoLegislativo.where(:processo_id => processo.id).first | |
| if dados_legislativos.numero_oficio_mensagem != nil or dados_legislativos.numero_oficio_mensagem != "" | |
| pdf.span((larguraMaxima/2), :position => (larguraMaxima/2 + 40)) do | |
| pdf.text "<b>Nº Ofício MSG:</b> " + dados_legislativos.numero_oficio_mensagem.to_s, :size => size, :inline_format => true | |
| end | |
| end | |
| end | |
| pdf.move_down 4 | |
| pdf.span(margenEsquerda2, :position => margenEsquerda) do | |
| pdf.text "<b>Origem: </b>", :size => size, :inline_format => true | |
| end | |
| pdf.move_up 12 | |
| pdf.span(larguraMaxima- margenEsquerda2, :position => margenEsquerda2) do | |
| if (processo.orgao_externo_id == 0) | |
| pdf.text "ASSEMBLEIA LEGISLATIVA - GO", :size => size, :inline_format => true | |
| elsif (processo.orgao_externo_id > 0) | |
| pdf.text processo.orgao_externo.nome.mb_chars.upcase, :size => size, :inline_format => true | |
| end | |
| end | |
| pdf.move_down 3 | |
| if (processo.categoria == Processo::CATEGORIA_LEGISLATIVO) | |
| pdf.span(margenEsquerda2, :position => margenEsquerda) do | |
| pdf.text "<b>Nº: </b>", :size => size, :inline_format => true | |
| end | |
| pdf.move_up 12 | |
| pdf.span(larguraMaxima-margenEsquerda2, :position => margenEsquerda2) do | |
| pdf.text processo.numero_projeto, :size => size, :inline_format => true | |
| end | |
| pdf.move_down 3 | |
| end | |
| foram = []; | |
| textoAutor = "" | |
| textoInteressado = "" | |
| if (processo.envolvidos) | |
| processo.envolvidos.includes(:tipo_envolvimento).order("tipo_envolvimentos.descricao ASC").each do |i| | |
| if (i.tipo_envolvimento.id == TipoEnvolvimento::AUTOR) | |
| if (i.interessado_id) | |
| textoAutor+= i.interessado.nome.mb_chars.upcase + "; " | |
| elsif (i.orgao_externo_id) | |
| textoAutor+= i.orgao_externo.nome.mb_chars.upcase+"; " | |
| end | |
| elsif (i.tipo_envolvimento.id == TipoEnvolvimento::INTERESSADO) | |
| if (i.interessado_id) | |
| textoInteressado+= i.interessado.nome.mb_chars.upcase + "; " | |
| elsif (i.orgao_externo_id) | |
| textoInteressado+= i.orgao_externo.nome.mb_chars.upcase+"; " | |
| end | |
| end | |
| end | |
| end | |
| if (textoAutor != "") | |
| pdf.span(80, :position => margenEsquerda) do | |
| pdf.text "<b>Autor:</b> ", :size => size, :inline_format => true | |
| end | |
| pdf.move_up 12 | |
| pdf.span(220, :position => margenEsquerda2) do | |
| pdf.text textoAutor, :size => size, :inline_format => true | |
| end | |
| pdf.move_down 3 | |
| end | |
| if (textoInteressado != "") | |
| pdf.span(80, :position => margenEsquerda) do | |
| pdf.text "<b>Interessado:</b> ", :size => size, :inline_format => true | |
| end | |
| pdf.move_up 12 | |
| pdf.span(220, :position => margenEsquerda2) do | |
| pdf.text textoInteressado, :size => size, :inline_format => true | |
| end | |
| pdf.move_down 3 | |
| end | |
| pdf.span(70, :position => margenEsquerda) do | |
| pdf.text "<b>Tipo: </b>", :size => size, :inline_format => true | |
| end | |
| pdf.move_up 9 | |
| pdf.span(100, :position => margenEsquerda2) do | |
| pdf.text processo.sub_tipo.tipo.descricao.mb_chars.upcase, :size => size, :inline_format => true | |
| end | |
| pdf.move_down 3 | |
| pdf.span(70, :position => margenEsquerda) do | |
| pdf.text "<b>Sub tipo: </b>", :size => size, :inline_format => true | |
| end | |
| pdf.move_up 10 | |
| pdf.span(230, :position => margenEsquerda2) do | |
| pdf.text processo.sub_tipo.descricao.mb_chars.upcase, :size => size, :inline_format => true | |
| end | |
| pdf.move_down 3 | |
| pdf.span(270, :position => margenEsquerda) do | |
| pdf.text "<b>Assunto: </b>", :size => size, :inline_format => true | |
| end | |
| pdf.move_down 5 | |
| pdf.span(larguraMaxima, :position => margenEsquerda) do | |
| pdf.text processo.assunto[0, 200].mb_chars.upcase, :size => size, :inline_format => true | |
| end | |
| pdf.move_down 35 | |
| barcode = Barby::Code128B.new(processo.numero) | |
| pdf.span(larguraMaxima, :position => margenEsquerda) do | |
| barcode.annotate_pdf(pdf, :x => 100, :y => 0, :height => 30) | |
| pdf.move_down 2 | |
| pdf.text processo.numero, :align => :center, :size => 9 | |
| end | |
| return pdf | |
| end | |
| def self.etiqueta_nova(processo) | |
| larguraMaxima = 280 | |
| margenEsquerda = 160 | |
| margenEsquerda2 = 200 | |
| pdf = Prawn::Document.new :page_layout => :landscape, :margin => [0, 0, 0, 10], :page_size => [70.4, 140] | |
| size = 8 | |
| categoria = "" | |
| if (processo.categoria_id == Processo::CATEGORIA_ADMINISTRATIVO) | |
| categoria = "PROCESSO ADMINISTRATIVO" | |
| elsif (processo.categoria_id == Processo::CATEGORIA_LEGISLATIVO) | |
| categoria = "PROCESSO LEGISLATIVO" | |
| end | |
| pdf.font_families.update("Arial" => { | |
| :normal => {:file => "#{Rails.root.to_s}/app/assets/images/Arial.ttf"}, | |
| :bold => {:file => "#{Rails.root.to_s}/app/assets/images/Arial_Bold.ttf"} | |
| }) | |
| pdf.font "Arial" | |
| pdf.move_cursor_to 780 | |
| pdf.span(larguraMaxima, :position => margenEsquerda) do | |
| pdf.text categoria, :size => 6, :inline_format => true, :align => :center | |
| end | |
| pdf.move_down 1 | |
| pdf.span(larguraMaxima, :position => margenEsquerda) do | |
| pdf.text "Nº " + processo.numero, :size => 12, :inline_format => true, :align => :center, :style => :bold | |
| end | |
| pdf.move_down 3 | |
| if processo.legislativo? | |
| dados_legislativos = ProcessoLegislativo.where(:processo_id => processo.id).first | |
| end | |
| largura_tabela = 270 | |
| numero_oficio_msg = "" | |
| label_numero_oficio_msg = "" | |
| numero_oficio = "" | |
| label_numero_oficio = "" | |
| numero_documento = "" | |
| label_numero_documento = "" | |
| numero_documento = "" | |
| label_documento = "" | |
| pdf.move_up 2 | |
| pdf.text "<b>Data Autuação:</b> " + processo.data.strftime("%d/%m/%Y"), :size => size - 1, :inline_format => true, :align => :center | |
| pdf.move_down 2 | |
| up = 0 | |
| if dados_legislativos | |
| valor_numero_projeto = dados_legislativos.projeto_numero.to_s | |
| if !valor_numero_projeto.to_s.vazia? | |
| numero_documento = valor_numero_projeto | |
| label_documento = "Projeto :" | |
| end | |
| valor_numero_oficio = dados_legislativos.num_oficio.to_s | |
| if !valor_numero_oficio.to_s.vazia? && numero_documento.to_s.vazia? | |
| numero_documento = valor_numero_oficio | |
| label_documento = "Nº Ofício:" | |
| end | |
| valor_numero_oficio_msg = dados_legislativos.numero_oficio_mensagem.to_s | |
| if !valor_numero_oficio_msg.to_s.vazia? && numero_documento.to_s.vazia? | |
| numero_documento = valor_numero_oficio_msg | |
| label_documento = "Nº Ofício MSG:" | |
| end | |
| tabela = [ | |
| [ | |
| {:content => label_documento, :width => 60, :align => :left, :size => size}, | |
| {:content => numero_documento, :align => :left, :size => size} | |
| ] | |
| ] | |
| else | |
| valor_numero_documento = processo.numero_documento.to_s | |
| if !valor_numero_documento.to_s.vazia? | |
| numero_documento = valor_numero_documento | |
| label_numero_documento = "Nº Documento:" | |
| end | |
| tabela = [ | |
| [ | |
| {:content => label_numero_documento, :width => 60, :size => size}, | |
| {:content => numero_documento, :size => size} | |
| ] | |
| ] | |
| end | |
| pdf.table tabela, :width => largura_tabela, :position => :center, :cell_style => {:borders => []} do | |
| cells.style :padding => 1 | |
| rows(0..10).columns([0, 2]).font_style = :bold | |
| end | |
| pdf.move_up up | |
| origem = "ASSEMBLEIA LEGISLATIVA - GO" | |
| origem = processo.orgao_externo.nome.mb_chars.upcase.to_s if processo.orgao_externo_id != 0 | |
| tabela2 = [ | |
| [ | |
| {:content => "Origem:", :width => 60}, | |
| {:content => origem, :width => 210} | |
| ] | |
| ] | |
| textoAutor = "" | |
| textoInteressado = "" | |
| if (processo.envolvidos) | |
| processo.envolvidos.includes(:tipo_envolvimento).order("tipo_envolvimentos.descricao ASC").each do |i| | |
| if (i.tipo_envolvimento.id == TipoEnvolvimento::AUTOR) | |
| if (i.interessado_id) | |
| textoAutor+= i.interessado.nome.mb_chars.upcase + "; " | |
| elsif (i.orgao_externo_id) | |
| textoAutor+= i.orgao_externo.nome.mb_chars.upcase+"; " | |
| end | |
| elsif (i.tipo_envolvimento.id == TipoEnvolvimento::INTERESSADO) | |
| if (i.interessado_id) | |
| textoInteressado+= i.interessado.nome.mb_chars.upcase + "; " | |
| elsif (i.orgao_externo_id) | |
| textoInteressado+= i.orgao_externo.nome.mb_chars.upcase+"; " | |
| end | |
| end | |
| end | |
| end | |
| if !textoAutor.to_s.vazia? | |
| tabela2.push([ | |
| "Autor:", | |
| textoAutor.to_s | |
| ]) | |
| end | |
| if !textoInteressado.to_s.vazia? | |
| tabela2.push([ | |
| "Interessado:", | |
| textoInteressado.to_s | |
| ]) | |
| end | |
| tabela2.push( | |
| [ | |
| "Tipo:", | |
| processo.sub_tipo.tipo.descricao.mb_chars.upcase.to_s | |
| ] | |
| ) | |
| tabela2.push( | |
| [ | |
| "Subtipo:", | |
| processo.sub_tipo.descricao.mb_chars.upcase.to_s | |
| ] | |
| ) | |
| pdf.table tabela2, :width => largura_tabela, :position => :center, :cell_style => {:borders => []} do | |
| cells.style :padding => 1, :size => size | |
| rows(0..10).columns(0).font_style = :bold | |
| end | |
| pdf.table [ | |
| [ | |
| "Assunto:" | |
| ], | |
| [ | |
| {:content => processo.assunto[0, 400].mb_chars.upcase.to_s, :align => :justify} | |
| ] | |
| ], :width => largura_tabela, :position => :center, :cell_style => {:borders => []} do | |
| cells.style :padding => 1, :size => size | |
| rows(0).columns(0).font_style = :bold | |
| end | |
| pdf.move_down 35 | |
| barcode = Barby::Code128B.new(processo.numero) | |
| pdf.span(larguraMaxima, :position => margenEsquerda) do | |
| barcode.annotate_pdf(pdf, :x => 70, :y => 0, :height => 30) | |
| pdf.move_down 2 | |
| pdf.text processo.numero, :align => :center, :size => 9 | |
| end | |
| return pdf | |
| end | |
| def self.espelho_pdf(processo) | |
| size = 9 | |
| size2 = 10 | |
| size3 = 16 | |
| size4 = 13 | |
| pdf = Prawn::Document.new | |
| pdf.font_families.update("Times" => { | |
| :normal => {:file => "#{Rails.root.to_s}/app/assets/images/times_new_roman.ttf"}, | |
| :bold => {:file => "#{Rails.root.to_s}/app/assets/images/times_new_roman_bold.ttf"}, | |
| :italic => {:file => "#{Rails.root.to_s}/app/assets/images/times_new_roman_italic.ttf"}, | |
| :bold_italic => {:file => "#{Rails.root.to_s}/app/assets/images/times_new_roman_bold_italic.ttf"} | |
| }) | |
| pdf.font "Times" | |
| pdf.move_cursor_to 750 | |
| pdf.image Rails.root.to_s+ "/app/assets/images/brasao_alego_colorido_pequeno.png", :height => 80, :position => :center | |
| pdf.move_down 5 | |
| pdf.text "ESTADO DE GOIÁS", :leading => 2, :size => 11, :align => :center | |
| pdf.text "ASSEMBLEIA LEGISLATIVA", :leading => 2, :size => 11, :align => :center | |
| pdf.move_down 10 | |
| pdf.font "Helvetica" | |
| pdf.text "PROCESSO #{processo.categoria.descricao} #{processo.numero}".upcase, :style => :bold, :size => 27 | |
| pdf.move_down 5 | |
| pdf.font_size = size | |
| origem = "" | |
| autores_txt = "" | |
| envolvidos_txt = "" | |
| if (processo.orgao_externo_id == 0) | |
| origem = "Origem: <strong>ASSEMBLEIA LEGISLATIVA - GO</strong>" | |
| elsif (processo.orgao_externo_id > 0) | |
| origem = "Origem: <strong>" + processo.orgao_externo.nome.mb_chars.upcase + "</strong>" | |
| end | |
| autores = [] | |
| interessados = [] | |
| if (processo.envolvidos) | |
| processo.envolvidos.includes(:tipo_envolvimento).order("tipo_envolvimentos.descricao ASC").each do |i| | |
| if (i.tipo_envolvimento.id == TipoEnvolvimento::AUTOR) | |
| if (i.interessado_id) | |
| autores.push(i.interessado.nome.mb_chars.upcase) | |
| elsif (i.orgao_externo_id) | |
| autores.push(i.orgao_externo.nome.mb_chars.upcase) | |
| end | |
| elsif (i.tipo_envolvimento.id == TipoEnvolvimento::INTERESSADO) | |
| if (i.interessado_id) | |
| interessados.push(i.interessado.nome.mb_chars.upcase) | |
| elsif (i.orgao_externo_id) | |
| interessados.push(i.orgao_externo.nome.mb_chars.upcase) | |
| end | |
| end | |
| end | |
| end | |
| # Autores | |
| if autores.any? | |
| autores_txt = "Autor: <strong>#{autores.join(", ")}</strong>" | |
| end | |
| # Interessados | |
| if interessados.any? | |
| envolvidos_txt = "Interessados: <strong>#{interessados.join(", ")}</strong>" | |
| end | |
| numero_documento = "" | |
| numero_documento = "Número Documento: <strong>#{processo.numero_documento}</strong>" if !processo.numero_documento.to_s.vazia? && !processo.legislativo? | |
| pdf.table [ | |
| [ | |
| {:content => "Data autuação: <strong>#{processo.data.strftime("%d/%m/%Y")}</strong>", :inline_format => true, :width => 270}, | |
| {:content => "Tipo: <strong>#{processo.sub_tipo.tipo.descricao.mb_chars.upcase}</strong>", :inline_format => true, :width => 270} | |
| ], | |
| [ | |
| {:content => origem, :inline_format => true}, | |
| {:content => "Subtipo: <strong>#{processo.sub_tipo.descricao.mb_chars.upcase}</strong>", :inline_format => true}, | |
| ], | |
| [ | |
| {:content => autores_txt, :inline_format => true}, | |
| {:content => envolvidos_txt, :inline_format => true} | |
| ], | |
| [ | |
| {:content => numero_documento, :inline_format => true}, "" | |
| ], | |
| [ | |
| {:content => "Assunto: <strong>" + processo.assunto.html_safe + "</strong>", :inline_format => true, :colspan => 2} | |
| ] | |
| ], :width => 540, :cell_style => {:borders => []} do | |
| cells.style :padding => 1 | |
| end | |
| pdf.move_down 15 | |
| # DADOS LEGISLATIVOS | |
| if processo.legislativo? && processo.processo_legislativos.any? | |
| dados_legislativos = processo.processo_legislativos.first | |
| subtipo_descricao = processo.sub_tipo.nome_apresentavel | |
| protocolo_numero_oficio_mensagem = "Número ofício mensagem: <strong>#{dados_legislativos.numero_oficio_mensagem}</strong>" if !dados_legislativos.numero_oficio_mensagem.to_s.vazia? | |
| protocolo_numero_oficio = "Número ofício: <strong>#{dados_legislativos.num_oficio}</strong>" if !dados_legislativos.num_oficio.to_s.vazia? | |
| if protocolo_numero_oficio || protocolo_numero_oficio_mensagem | |
| titulo_protocolo = "<strong>Protocolo</strong>" | |
| end | |
| autografo_numero_autografo = "Número autógrafo #{subtipo_descricao}: <strong>#{dados_legislativos.num_autografo}</strong>" if !dados_legislativos.num_autografo.to_s.vazia? | |
| autografo_data_autografo = "Data autógrafo #{subtipo_descricao}: <strong>#{dados_legislativos.data_autografo.strftime("%d/%m/%Y")}</strong>" if dados_legislativos.data_autografo | |
| autografo_numero_oficio = "Número do Ofício: <strong>#{dados_legislativos.autografo_numero_oficio}</strong>" if !dados_legislativos.autografo_numero_oficio.to_s.vazia? | |
| autografo_data_envio_governadoria = "Data de envio a governadoria: <strong>#{dados_legislativos.data_envio_governadoria.strftime("%d/%m/%Y")}</strong>" if dados_legislativos.data_envio_governadoria | |
| autografo_data_oficio = "Data ofício: <strong>#{dados_legislativos.autografo_data_oficio.strftime("%d/%m/%Y")}</strong>" if dados_legislativos.autografo_data_oficio | |
| if autografo_numero_autografo || autografo_data_autografo || autografo_numero_oficio || autografo_data_envio_governadoria || autografo_data_oficio | |
| titulo_autografo = "" | |
| titulo_autografo = "<br/>" if titulo_protocolo | |
| titulo_autografo += "<strong>Autógrafo</strong>" | |
| end | |
| lei_numero = "Número #{subtipo_descricao}: <strong>#{dados_legislativos.num_lei}</strong>" if !dados_legislativos.num_lei.to_s.vazia? | |
| lei_data = "Data #{subtipo_descricao}: <strong>#{dados_legislativos.data_lei.strftime("%d/%m/%Y")}</strong>" if dados_legislativos.data_lei | |
| lei_diario = "Número diário oficial: <strong>#{dados_legislativos.num_diario}</strong>" if !dados_legislativos.num_diario.to_s.vazia? | |
| lei_diario_data = "Data diário oficial: <strong>#{dados_legislativos.data_diario.strftime("%d/%m/%Y")}</strong>" if dados_legislativos.data_diario | |
| lei_numero_da_promulgacao = "Número diário oficial de promulgação: <strong>#{dados_legislativos.numero_dop}</strong>" if !dados_legislativos.numero_dop.to_s.vazia? | |
| lei_data_da_promulgacao = "Data diário oficial de promulgação: <strong>#{dados_legislativos.data_dop.strftime("%d/%m/%Y")}</strong>" if dados_legislativos.data_dop | |
| lei_numero_da = "Número diário da assembleia: <strong>#{dados_legislativos.numero_da}</strong>" if !dados_legislativos.numero_da.to_s.vazia? | |
| lei_data_da = "Data diário da assembleia: <strong>#{dados_legislativos.data_da.strftime("%d/%m/%Y")}</strong>" if dados_legislativos.data_da | |
| if lei_numero || lei_data || lei_diario || lei_diario_data || lei_diario_data || lei_numero_da_promulgacao || lei_numero_da | |
| titulo_lei = "<strong>Dados legislativos</strong>" | |
| end | |
| veto_votacao = "Votação Veto: <strong>#{dados_legislativos.votacao_veto}</strong>" if !dados_legislativos.votacao_veto.to_s.vazia? | |
| veto_data = "Data Veto: <strong>#{dados_legislativos.data_veto.strftime("%d/%m/%Y")}</strong>" if dados_legislativos.data_veto | |
| veto_numero_oficio = "Número Ofício: <strong>#{dados_legislativos.veto_numero_oficio}</strong>" if !dados_legislativos.veto_numero_oficio.to_s.vazia? | |
| veto_data_envio = "Data Envio: <strong>#{dados_legislativos.veto_data_envio.strftime("%d/%m/%Y")}</strong>" if dados_legislativos.veto_data_envio | |
| veto_situacao = "Situação: <strong>#{dados_legislativos.situacao_veto}</strong>" if !dados_legislativos.situacao_veto.to_s.vazia? | |
| if veto_votacao || veto_data || veto_numero_oficio || veto_data_envio || veto_situacao | |
| titulo_veto = "" | |
| titulo_veto = "<br/>" if titulo_lei | |
| titulo_veto = "<br/><strong>Veto</strong>" | |
| end | |
| if titulo_lei || titulo_protocolo || titulo_veto || titulo_autografo | |
| pdf.text "<strong>Informações legislativas</strong>", :inline_format => true, :size => size3 | |
| end | |
| coluna1 = [] | |
| coluna2 = [] | |
| coluna1.push(titulo_protocolo) if titulo_protocolo | |
| coluna1.push(protocolo_numero_oficio_mensagem) if protocolo_numero_oficio_mensagem | |
| coluna1.push(protocolo_numero_oficio) if protocolo_numero_oficio | |
| coluna1.push(titulo_autografo) if titulo_autografo | |
| coluna1.push(autografo_numero_autografo) if autografo_numero_autografo | |
| coluna1.push(autografo_data_autografo) if autografo_data_autografo | |
| coluna1.push(autografo_numero_oficio) if autografo_numero_oficio | |
| coluna1.push(autografo_data_oficio) if autografo_data_oficio | |
| coluna1.push(autografo_data_envio_governadoria) if autografo_data_envio_governadoria | |
| coluna2.push(titulo_lei) if titulo_lei | |
| coluna2.push(lei_numero) if lei_numero | |
| coluna2.push(lei_data) if lei_data | |
| coluna2.push(lei_diario) if lei_diario | |
| coluna2.push(lei_diario_data) if lei_diario_data | |
| coluna2.push(lei_numero_da_promulgacao) if lei_numero_da_promulgacao | |
| coluna2.push(lei_data_da_promulgacao) if lei_data_da_promulgacao | |
| coluna2.push(lei_numero_da) if lei_numero_da | |
| coluna2.push(lei_data_da) if lei_data_da | |
| coluna2.push(titulo_veto) if titulo_veto | |
| coluna2.push(veto_votacao) if veto_votacao | |
| coluna2.push(veto_data) if veto_data | |
| coluna2.push(veto_numero_oficio) if veto_numero_oficio | |
| coluna2.push(veto_data_envio) if veto_data_envio | |
| coluna2.push(veto_situacao) if veto_situacao | |
| pdf.table [ | |
| [ | |
| {:content => coluna1.join("<br/>"), :inline_format => true, :width => 270}, | |
| {:content => coluna2.join("<br/>"), :inline_format => true, :width => 270} | |
| ] | |
| ], :width => 540, :cell_style => {:borders => []} do | |
| cells.style :padding => 1, :size => size2 | |
| end | |
| end | |
| #tramitação | |
| acoes = ProcessoAcao.where(:processo_id => processo.id).order("created_at DESC") | |
| pdf.move_down 20 | |
| linhas = [ | |
| [ | |
| {:content => "Data", :width => 100}, | |
| {:content => "Lotação", :width => 140}, | |
| {:content => "Ação", :width => 300} | |
| ] | |
| ] | |
| acoes.each do |a| | |
| linhas.push( | |
| [ | |
| a.created_at.strftime("%d/%m/%Y às %H:%M"), | |
| (a.lotacao_id ? a.lotacao.descricao : ""), | |
| {:content => a.acao.html_safe, :inline_format => true} | |
| ] | |
| ) | |
| end | |
| pdf.table linhas, :width => 540 do | |
| rows(0).columns(0..2).background_color = "424242" | |
| rows(0).columns(0..2).text_color = "ffffff" | |
| rows(0).columns(0..2).size = size4 | |
| rows(0).columns(0..2).font_style = :bold | |
| linha = 1 | |
| while (linha < linhas.count) | |
| if linha % 2 == 0 | |
| rows(linha).columns(0..2).background_color = "eeeeee" | |
| end | |
| linha += 1 | |
| end | |
| end | |
| return pdf | |
| end | |
| def self.path_pdf_completo(processo) | |
| path_pdf_final = Rails.root.to_s + "/app/assets/tmp/processo_"+ processo.numero + "_" + Time.new.to_i.to_s + ".pdf" | |
| documentos_anexos = Anexo.find_by_sql( | |
| " | |
| SELECT * FROM ( | |
| ( | |
| SELECT d.id, 'documento' as tipo, d.modelo_documento_id, '' as arquivo, d.created_at | |
| FROM documentos as d WHERE d.processo_id = #{processo.id} AND d.assinado IS TRUE | |
| ) | |
| UNION | |
| ( | |
| SELECT a.id, 'anexo' as tipo, '0' as modelo_documento_id, a.arquivo, a.created_at | |
| FROM anexos as a WHERE a.processo_id = #{processo.id} | |
| ) | |
| ) as union_sql ORDER BY created_at ASC | |
| " | |
| ) | |
| if documentos_anexos.size == 1 | |
| d = documentos_anexos.first | |
| pdf_file = "" | |
| if d.tipo == 'anexo' | |
| pdf_file = Rails.root.to_s + "/app/assets/processos/anexos/" + d.arquivo | |
| elsif d.tipo == "documento" | |
| pdf_file = DocumentosHelper.gerar_path(d) | |
| if !DocumentosHelper.checar_existencia_arquivo_fisico?(d) | |
| pdf_file = DocumentosHelper.gerar_arquivo_fisico(d) | |
| end | |
| end | |
| path_pdf_final = pdf_file | |
| elsif documentos_anexos.size > 1 | |
| paths = [] | |
| documentos_anexos.each do |d| | |
| pdf_file = "" | |
| if d.tipo == 'anexo' | |
| pdf_file = Rails.root.to_s + "/app/assets/processos/anexos/" + d.arquivo | |
| elsif d.tipo == "documento" | |
| pdf_file = DocumentosHelper.gerar_path(d) | |
| if !DocumentosHelper.checar_existencia_arquivo_fisico?(d) | |
| pdf_file = DocumentosHelper.gerar_arquivo_fisico(d) | |
| end | |
| end | |
| paths << pdf_file | |
| end | |
| command_path = "/usr/local/bin/pdfunite " + paths.join(" ") + " " + path_pdf_final | |
| system(command_path) | |
| end | |
| return path_pdf_final | |
| end | |
| def self.zip(processo) | |
| dir = Rails.root.to_s + "/app/assets/tmp/" | |
| if !File.exists?(dir) | |
| Dir.mkdir(dir) | |
| end | |
| dirInto = "processo_#{processo.numero}" | |
| dirIntoDocumentos = dirInto + "/documentos" | |
| zipFileName = "processo_#{processo.numero}.zip" | |
| zipFilePath = dir + zipFileName | |
| if FileTest.exists?(zipFilePath) | |
| FileUtils.rm(zipFilePath) | |
| end | |
| documentosCriados = [] | |
| nomes = [] | |
| zip = Zip::ZipFile.open(zipFilePath, Zip::ZipFile::CREATE) do |z| | |
| z.mkdir(dirIntoDocumentos) | |
| processo.anexos.order("created_at ASC").each do |anexo| | |
| descricao_formatada = anexo.descricao.gsub(/[^0-9a-zA-Z]/, "") | |
| nomeArquivo = anexo.arquivo | |
| if nomes.include?(descricao_formatada) | |
| descricao_formatada = descricao_formatada + "_" + nomes.size.to_s | |
| end | |
| anexoPath = Rails.root.to_s + "/app/assets/processos/anexos/" + anexo.arquivo | |
| if File.exists?(anexoPath) | |
| z.add("#{dirIntoDocumentos}/#{descricao_formatada}.pdf", anexoPath) | |
| nomes.push(descricao_formatada) | |
| end | |
| end | |
| processo.documentos.where("documentos.assinado = TRUE").order("created_at ASC").each do |d| | |
| pdf = ModelosHelper.pdf(d.id, d.modelo_documento_id) | |
| if (pdf) | |
| if !File.exists?(dir + processo.id.to_s + "/") | |
| Dir.mkdir(dir + processo.id.to_s + "/"); | |
| end | |
| filename = dir + "#{processo.id.to_s}_#{d.id}_.pdf" | |
| documentosCriados << filename | |
| pdf.render_file(filename); | |
| z.add("#{dirIntoDocumentos}/#{d.modelo_documento.nome_action}_#{d.id}.pdf", filename) | |
| end | |
| end | |
| end | |
| documentosCriados.each do |a| | |
| FileUtils.rm(a) | |
| end | |
| return zipFilePath | |
| end | |
| def self.capa_pdf(processo) | |
| larguraMaxima = 280 | |
| margenEsquerda = 140 | |
| margenEsquerda2 = 200 | |
| largura_tabela = 300 | |
| fundo = Rails.root.to_s+ "/app/assets/images/capa_processo.jpg" | |
| pdf = Prawn::Document.new :page_layout => :portrait, :margin => [0, 0, 0, 100], :page_size => "A4" | |
| pdf.image fundo, :width => pdf.bounds.width + 101, :height => pdf.bounds.height, :at => [-101, pdf.bounds.height] | |
| size = 8 | |
| categoria = "" | |
| pdf.move_cursor_to 370 | |
| if (processo.categoria_id == Processo::CATEGORIA_ADMINISTRATIVO) | |
| categoria = "PROCESSO ADMINISTRATIVO" | |
| elsif (processo.categoria_id == Processo::CATEGORIA_LEGISLATIVO) | |
| categoria = "PROCESSO LEGISLATIVO" | |
| end | |
| pdf.font_families.update("Arial" => { | |
| :normal => {:file => "#{Rails.root.to_s}/app/assets/images/Arial.ttf"}, | |
| :bold => {:file => "#{Rails.root.to_s}/app/assets/images/Arial_Bold.ttf"} | |
| }) | |
| pdf.font "Arial" | |
| #pdf.move_cursor_to 780 | |
| pdf.table [ | |
| [{:content => categoria, :size => 6, :inline_format => true, :align => :center}], | |
| [{:content => "Nº " + processo.numero, :size => 12, :inline_format => true, :align => :center, :font_style => :bold}] | |
| ], :width => largura_tabela, :position => :center, :cell_style => {:borders => []} do | |
| cells.style :padding => 1 | |
| end | |
| pdf.move_down 3 | |
| if processo.legislativo? | |
| dados_legislativos = ProcessoLegislativo.where(:processo_id => processo.id).first | |
| end | |
| numero_oficio_msg = "" | |
| label_numero_oficio_msg = "" | |
| numero_oficio = "" | |
| label_numero_oficio = "" | |
| numero_documento = "" | |
| label_numero_documento = "" | |
| numero_documento = "" | |
| label_documento = "" | |
| up = 0 | |
| if dados_legislativos | |
| valor_numero_projeto = dados_legislativos.projeto_numero.to_s | |
| if !valor_numero_projeto.to_s.vazia? | |
| numero_documento = valor_numero_projeto | |
| label_documento = "Projeto :" | |
| end | |
| valor_numero_oficio = dados_legislativos.num_oficio.to_s | |
| if !valor_numero_oficio.to_s.vazia? && numero_documento.to_s.vazia? | |
| numero_documento = valor_numero_oficio | |
| label_documento = "Nº Ofício:" | |
| end | |
| valor_numero_oficio_msg = dados_legislativos.numero_oficio_mensagem.to_s | |
| if !valor_numero_oficio_msg.to_s.vazia? && numero_documento.to_s.vazia? | |
| numero_documento = valor_numero_oficio_msg | |
| label_documento = "Nº Ofício MSG:" | |
| end | |
| tabela = [ | |
| [ | |
| {:content => "Data Autuação:", :width => 65}, | |
| {:content => processo.data.strftime("%d/%m/%Y"), :width => 90}, | |
| {:content => label_documento, :width => 65, :align => :right}, | |
| {:content => numero_documento, :align => :right} | |
| ] | |
| ] | |
| else | |
| valor_numero_documento = processo.numero_documento.to_s | |
| if !valor_numero_documento.to_s.vazia? | |
| numero_documento = valor_numero_documento | |
| label_numero_documento = "Nº Documento:" | |
| end | |
| tabela = [ | |
| [ | |
| {:content => "Data Autuação:", :width => 65}, | |
| {:content => processo.data.strftime("%d/%m/%Y")}, | |
| {:content => label_numero_documento, :width => 65}, | |
| {:content => numero_documento} | |
| ] | |
| ] | |
| end | |
| pdf.table tabela, :width => largura_tabela, :position => :center, :cell_style => {:borders => []} do | |
| cells.style :padding => 1, :size => size | |
| rows(0..10).columns([0, 2]).font_style = :bold | |
| end | |
| pdf.move_up up | |
| origem = "ASSEMBLEIA LEGISLATIVA - GO" | |
| origem = processo.orgao_externo.nome.mb_chars.upcase.to_s if processo.orgao_externo_id != 0 | |
| tabela2 = [ | |
| [ | |
| {:content => "Origem:", :width => 50}, | |
| {:content => origem} | |
| ] | |
| ] | |
| textoAutor = "" | |
| textoInteressado = "" | |
| if (processo.envolvidos) | |
| processo.envolvidos.includes(:tipo_envolvimento).order("tipo_envolvimentos.descricao ASC").each do |i| | |
| if (i.tipo_envolvimento.id == TipoEnvolvimento::AUTOR) | |
| if (i.interessado_id) | |
| textoAutor+= i.interessado.nome.mb_chars.upcase + "; " | |
| elsif (i.orgao_externo_id) | |
| textoAutor+= i.orgao_externo.nome.mb_chars.upcase+"; " | |
| end | |
| elsif (i.tipo_envolvimento.id == TipoEnvolvimento::INTERESSADO) | |
| if (i.interessado_id) | |
| textoInteressado+= i.interessado.nome.mb_chars.upcase + "; " | |
| elsif (i.orgao_externo_id) | |
| textoInteressado+= i.orgao_externo.nome.mb_chars.upcase+"; " | |
| end | |
| end | |
| end | |
| end | |
| if !textoAutor.to_s.vazia? | |
| tabela2.push([ | |
| "Autor:", | |
| textoAutor.to_s | |
| ]) | |
| end | |
| if !textoInteressado.to_s.vazia? | |
| tabela2.push([ | |
| "Interessado:", | |
| textoInteressado.to_s | |
| ]) | |
| end | |
| tabela2.push( | |
| [ | |
| "Tipo:", | |
| processo.sub_tipo.tipo.descricao.mb_chars.upcase.to_s | |
| ] | |
| ) | |
| tabela2.push( | |
| [ | |
| "Subtipo:", | |
| processo.sub_tipo.descricao.mb_chars.upcase.to_s | |
| ] | |
| ) | |
| pdf.table tabela2, :width => largura_tabela, :position => :center, :cell_style => {:borders => []} do | |
| cells.style :padding => 1, :size => size | |
| rows(0..10).columns(0).font_style = :bold | |
| end | |
| pdf.table [ | |
| [ | |
| "Assunto:" | |
| ], | |
| [ | |
| {:content => processo.assunto[0, 400].mb_chars.upcase.to_s, :align => :justify} | |
| ] | |
| ], :width => largura_tabela, :position => :center, :cell_style => {:borders => []} do | |
| cells.style :padding => 1, :size => size | |
| rows(0).columns(0).font_style = :bold | |
| end | |
| pdf.move_down 35 | |
| barcode = Barby::Code128B.new(processo.numero) | |
| pdf.span(larguraMaxima, :position => :center) do | |
| barcode.annotate_pdf(pdf, :x => 70, :y => 0, :height => 30) | |
| pdf.move_down 2 | |
| pdf.text processo.numero, :align => :center, :size => 9 | |
| end | |
| return pdf | |
| end | |
| end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment