Skip to content

Conversation

@hotsoft-desenv2
Copy link

Se possível aceitem este pull request relativo ao alinhamento com o Fork da Hotsoft.

@acras
Copy link
Owner

acras commented Nov 24, 2016

Obrigado pelo pull request. Eu vou comentar lá, mas para registro vou comentar o mesmo por aqui também.

Para que os commits fiquem mais limpos, por favor evite deixar o código anterior comentado, como aqui por exemplo: 2bd352f
O git se encarrega de mostrar como o código era e como ele ficou.

Outro exemplo de "limpeza" seria neste commit: 64afab2

Aqui o arquivo ac_filters_utils.rb tem código anterior comentado, referência ao ticket resolvido no comentário do fonte e ainda uma alteração que não tem relação com o que o commit resolve.

Como boa prática os commits devem fazer somente o que se propõe e também o que foi alterado deve ser alterado e não comentado.

Peço por favor que ajuste o pull request neste sentido e reenvie para eu analisar.

@hotsoft-desenv2
Copy link
Author

hotsoft-desenv2 commented Nov 24, 2016

Bom dia @acras,

realizei a limpeza conforme solicitado e seguirei este padrão.
Segue o link com as alterações de limpeza: a5ff925
Segue estão este pull request para uma nova análise.

@data_end
end

def new_page(print_titles = true)
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Trouxe manualmente dos commits do nosso form.
Evita problemas com alguns relatórios.

class Listing < Report

#alias :super_new_page :new_page
alias :super_new_page :new_page
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Supre uso do super_new_page em alguns relatórios.

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Não entendi o objetivo desta alteração.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

É utilizado em alguns de nossos relatórios.
Alteração realizada para evitar problema com os relatórios que utilizam este alias.
Conforme o Ticket citado acima.

s.email = %q{ricardo@acras.com.br julianoch@gmail.com egon@acras.com.br viniciuscb@gmail.com}
s.version = "1.9.21"
s.date = %q{2016-11-23}
s.authors = ["Ricardo Acras", "Egon Hilgenstieler", "Juliano Andrade", "Vinicius Cubas Brand", "Wellington Torrejais da Silva"]
Copy link
Author

@hotsoft-desenv2 hotsoft-desenv2 Nov 24, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Array de emails não estava separado por ","

Agora segue conforme a documentação.

if !value.nil? && value != ''
if (formatter == :currency)
value = value.round(2)
value = value.round(2) rescue sprintf('%.2f', value).to_f
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gera problema com versões do framework mais antigas como no nossa caso.
Um simples rescue resolve o problema mantendo compatibilidade com Ruby antigo.

def run_totals(data_row)
@running_totals.each do |rt|
vl = get_raw_field_value(data_row, rt)
vl = (vl.is_a? (String) ? vl.to_f : vl)
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gerava problemas com alguns tipos de dados do Mysql.
De acordo com a query e o tipo retornado.

Este ajuste evitou muitos problemas com médias e suas totalizações.

sql_to_execute = ActiveRecord::Base.send(:sanitize_sql_array, conditions)
r = []
ActiveRecord::Base.connection.instance_exec(sql_to_execute).each(:as => :hash) {|i| r << i}
ActiveRecord::Base.connection.instance_exec(sql_to_execute).each(as :hash) {|i| r << i}
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Alteração sem relação direta com o commit portada do nosso fork.

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

O que faz esta alteração?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Só troca de sintaxe mesmo. Posso remover esta alteração.
Trouxe dos commits legados.

value.nil? ? {} : Marshal.load(value)
begin
value.nil? ? {} : Marshal.load(value)
rescue TypeError
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tratamento em relação a nulidade do valor

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Aqui você está abafando uma exceção. Isto não é uma boa prática pois apesar de resolver algum caso específico que você precisou resolver poderá abafar exceções que deveriam aparecer para o programador. Isto pode atrapalhar em debugs.
Poderia alterar e somente abafar nos casos em que necessita?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

O commit original somente descreve: tratamento de valor nulo.
Se desejar posso remover esta alteração e testar um por um dos relatórios.

No na época(2013) não foi documentado não sei se a alteração
pode tratar situação específicas ou influenciadas pela combinação de filtros.

Se eu remover apesar dos testes locais ainda haverá a possibilidade do erro ocorrer no cliente. Neste caso seria interessante manter esta alteração?

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Como boa prática peço que remova a alteração. Se for necessário de fato o ideal é criar em seu projeto uma subclasse desta classe que faça isto e a use somente no seu projeto. Como se trata de uma biblioteca usada em vários projetos não temos como aceitar esta mudança na classe comum.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hum. Entendi.
Neste caso irei refatorar e em breve subo as alterações.

No entanto devido a rotina interna irei alinhar um prazo.
Não conseguirei fazer neste momento.

Portanto o pull request vai demorar um tempo para ser realizado novamente.

def self.up
add_column :report_templates, :excluir, :boolean
end

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Migration relativa a coluna que agora controla a exclusão.

f = AcFilterDef.find_by_name(params.delete("filter_name"))
if f
params["ac_filter_def_id"] = f.id
r = ReportTemplate.find_by_name(params["name"])
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ajustes para o novo comportamento relativo a "exclusão".

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Favor detalhar esta lógica de exclusão. O que ela resolve? Por que foi implementada?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Alterado para atualizar ao invés de excluir. Para não perder relação entre os relatórios e os laboratórios. Só exibir relatórios para laboratórios específicos.

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Como se trata de uma implementação específica para o seu projeto peço que realize em classes fora do contexto da biblioteca, no seu projeto por exemplo. Ou então que insira este comportamento porém de forma configurável e mantendo o padrão como era anteriormente.

@hotsoft-desenv2
Copy link
Author

Bom dia @acras,

realizado além da limpeza alguns comentários adicionais.
Portei manualmente conforme nosso fork local.
(Ajustes realizados no passado)

Em novas alterações farei com Pull requests mais frequentes com
comentários mais concisos e sem alterações não relacionadas ao comentário. (Mantive os comentários originais do nosso Fork).

No entanto creio que agora este pull request esteja passível de ser aplicado.
Aguardo sua nova revisão.

Copy link
Owner

@acras acras left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Obrigado pela evolução Wellington, favor revisar os pontos que levantei e postar novamete.

value.nil? ? {} : Marshal.load(value)
begin
value.nil? ? {} : Marshal.load(value)
rescue TypeError
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Aqui você está abafando uma exceção. Isto não é uma boa prática pois apesar de resolver algum caso específico que você precisou resolver poderá abafar exceções que deveriam aparecer para o programador. Isto pode atrapalhar em debugs.
Poderia alterar e somente abafar nos casos em que necessita?

sql_to_execute = ActiveRecord::Base.send(:sanitize_sql_array, conditions)
r = []
ActiveRecord::Base.connection.instance_exec(sql_to_execute).each(:as => :hash) {|i| r << i}
ActiveRecord::Base.connection.instance_exec(sql_to_execute).each(as :hash) {|i| r << i}
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

O que faz esta alteração?

f = AcFilterDef.find_by_name(params.delete("filter_name"))
if f
params["ac_filter_def_id"] = f.id
r = ReportTemplate.find_by_name(params["name"])
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Favor detalhar esta lógica de exclusão. O que ela resolve? Por que foi implementada?

class Listing < Report

#alias :super_new_page :new_page
alias :super_new_page :new_page
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Não entendi o objetivo desta alteração.

@acras
Copy link
Owner

acras commented Nov 25, 2016 via email

Copy link
Author

@hotsoft-desenv2 hotsoft-desenv2 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Realizei novos comentários. Favor validar.

class Listing < Report

#alias :super_new_page :new_page
alias :super_new_page :new_page
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

f = AcFilterDef.find_by_name(params.delete("filter_name"))
if f
params["ac_filter_def_id"] = f.id
r = ReportTemplate.find_by_name(params["name"])
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Alterado para atualizar ao invés de excluir. Para não perder relação entre os relatórios e os laboratórios. Só exibir relatórios para laboratórios específicos.

sql_to_execute = ActiveRecord::Base.send(:sanitize_sql_array, conditions)
r = []
ActiveRecord::Base.connection.instance_exec(sql_to_execute).each(:as => :hash) {|i| r << i}
ActiveRecord::Base.connection.instance_exec(sql_to_execute).each(as :hash) {|i| r << i}
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Só troca de sintaxe mesmo. Posso remover esta alteração.
Trouxe dos commits legados.

class Listing < Report

#alias :super_new_page :new_page
alias :super_new_page :new_page
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

É utilizado em alguns de nossos relatórios.
Alteração realizada para evitar problema com os relatórios que utilizam este alias.
Conforme o Ticket citado acima.

value.nil? ? {} : Marshal.load(value)
begin
value.nil? ? {} : Marshal.load(value)
rescue TypeError
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

O commit original somente descreve: tratamento de valor nulo.
Se desejar posso remover esta alteração e testar um por um dos relatórios.

No na época(2013) não foi documentado não sei se a alteração
pode tratar situação específicas ou influenciadas pela combinação de filtros.

Se eu remover apesar dos testes locais ainda haverá a possibilidade do erro ocorrer no cliente. Neste caso seria interessante manter esta alteração?

@hotsoft-desenv2
Copy link
Author

Bom dia @acras,

acabo de enviar novos comentários complementando as informações anteriores.
Segue então para uma nova análise.

Obrigado.

@acras
Copy link
Owner

acras commented Nov 28, 2016

Enviados mais comentários...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants