diff --git a/app/services/simpli_route/planilha_carga.rb b/app/services/simpli_route/planilha_carga.rb index 68d8d5e..579e60e 100644 --- a/app/services/simpli_route/planilha_carga.rb +++ b/app/services/simpli_route/planilha_carga.rb @@ -146,9 +146,9 @@ module SimpliRoute [base, cep].compact.join('|') end - # Coordenada como Float (com PONTO). O rastreio pode trazer texto com vírgula - # decimal ("-23,62"); coordenadas não usam separador de milhar, então trocar - # a vírgula por ponto é seguro e garante a saída numérica (ponto) no .xlsx. + # Coordenada como Float. O rastreio pode trazer texto com vírgula decimal + # ("-23,62"); coordenadas não usam separador de milhar, então trocar a + # vírgula por ponto é seguro — o Float#to_s do xlsx sai sempre com PONTO. def to_coord(valor) Float(valor.to_s.strip.tr(',', '.')) rescue ArgumentError, TypeError diff --git a/app/services/simpli_route/planilha_carga_xlsx.rb b/app/services/simpli_route/planilha_carga_xlsx.rb index 79ead25..0c74d5d 100644 --- a/app/services/simpli_route/planilha_carga_xlsx.rb +++ b/app/services/simpli_route/planilha_carga_xlsx.rb @@ -59,8 +59,10 @@ module SimpliRoute private - # Monta [valores, tipos] de uma linha (A..Z). Lat/long numéricos quando há - # match; D/E como texto ("08:00"/"18:00"); NF/ref como texto (igual ao exemplo). + # Monta [valores, tipos] de uma linha (A..Z). Lat/long como TEXTO com ponto + # decimal — se fossem numéricas, Excel/LibreOffice em pt-BR exibiria vírgula + # (locale) e o cliente subiria "-23,57" pro SimpliRoute; D/E como texto + # ("08:00"/"18:00"); NF/ref como texto (igual ao exemplo). def linha(l) lat = l[:latitude] lng = l[:longitude] @@ -72,8 +74,8 @@ module SimpliRoute l[:janela_fim], # E l[:tempo], # F l[:anotacoes].to_s, # G - (lat.nil? ? '' : lat), # H - (lng.nil? ? '' : lng), # I + lat.to_s, # H + lng.to_s, # I l[:referencia].to_s, # J '', '', # K, L l[:contato].to_s, # M @@ -82,8 +84,8 @@ module SimpliRoute ] tipos = [ :string, :string, :integer, :string, :string, :integer, :string, - (lat.nil? ? :string : :float), # H - (lng.nil? ? :string : :float), # I + :string, # H + :string, # I :string, :string, :string, :string, :string, *Array.new(VAZIAS_FINAIS.size, :string) ]