Class: CieloDetalhe
- Inherits:
-
FormatSection
- Object
- FormatSection
- CieloDetalhe
- Defined in:
- lib/formatos/cielo/cielo_detalhe.rb
Instance Method Summary collapse
- #get_codigo_autorizacao ⇒ Object
- #get_codigo_erro ⇒ Object
- #get_data_liquidacao ⇒ Object
- #get_data_venda ⇒ Object
- #get_mensagem_erro ⇒ Object
- #get_mensagem_retorno ⇒ Object
- #get_numero_cartao ⇒ Object
- #get_numero_cielo ⇒ Object
- #get_numero_lote ⇒ Object
- #get_reservado ⇒ Object
-
#get_sequencial ⇒ Object
——————————————————————- ——————————————————————- Getters.
- #get_status_venda ⇒ Object
- #get_validade_cartao ⇒ Object
- #get_valor ⇒ Object
- #hard_bounce? ⇒ Boolean
-
#initialize(master) ⇒ CieloDetalhe
constructor
A new instance of CieloDetalhe.
-
#is_valid? ⇒ Boolean
——————————————————————- ——————————————————————- Validações.
- #numero_parcelas(valor = "0") ⇒ Object
-
#process_section(file) ⇒ Object
——————————————————————- ——————————————————————- Gerais.
- #set_cartao_novo(valor) ⇒ Object
- #set_codigo_autorizacao(valor = "000000") ⇒ Object
- #set_codigo_erro(valor = "") ⇒ Object
- #set_data_liquidacao(valor = "0") ⇒ Object
- #set_data_venda(valor) ⇒ Object
- #set_numero_cartao(valor) ⇒ Object
- #set_numero_cielo(valor) ⇒ Object
- #set_numero_lote(valor) ⇒ Object
- #set_opcao_venda(valor = "0") ⇒ Object
- #set_reservado_1(valor = "0") ⇒ Object
- #set_reservado_10(valor = "") ⇒ Object
- #set_reservado_2(valor = "0") ⇒ Object
- #set_reservado_3(valor = "0") ⇒ Object
- #set_reservado_4(valor = "0") ⇒ Object
- #set_reservado_5(valor = "") ⇒ Object
- #set_reservado_6(valor = "0") ⇒ Object
- #set_reservado_7(valor = "0") ⇒ Object
- #set_reservado_8(valor = "") ⇒ Object
- #set_reservado_9(valor = "") ⇒ Object
-
#set_sequencial(valor) ⇒ Object
——————————————————————- ——————————————————————- Setters.
- #set_status_venda(valor = "0") ⇒ Object
-
#set_validade_cartao(valor) ⇒ Object
format yymm.
- #set_valor_parcela(valor = "0") ⇒ Object
- #set_valor_venda(valor) ⇒ Object
- #set_vencimento_novo(valor) ⇒ Object
- #soft_bounce? ⇒ Boolean
- #success? ⇒ Boolean
Constructor Details
#initialize(master) ⇒ CieloDetalhe
Returns a new instance of CieloDetalhe.
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 4 def initialize master super(master, true, true, false) @section = Section.new({ 0 => Position.new(1, 2, false, "01", true), # Tipo do Registro 1 => Position.new(2, 7, true), # Numero Sequencial 2 => Position.new(3, 19, true), # Numero do Cartão 3 => Position.new(4, 6, false, "000000"), # Código de Autorização 4 => Position.new(5, 8, false), # Data da Venda 5 => Position.new(6, 1, true), # Opção da Venda 6 => Position.new(7, 15, true), # Valor da venda 7 => Position.new(8, 3, true), # Quantidade de Parcelas 8 => Position.new(9, 15, true), # Preencher com zeros 9 => Position.new(10, 15, true), # Preencher com zeros 10 => Position.new(11, 15, true), # Preencher com zeros 11 => Position.new(12, 15, true), # Valor da Parcela 12 => Position.new(13, 7, true), # Numero do resumo da operação 13 => Position.new(14, 3, true), # Preencher com zeros 14 => Position.new(15, 10, true), # Numero do estabelecimento 15 => Position.new(16, 30, false), # Reservado 16 => Position.new(17, 2, true), # Status da venda 17 => Position.new(18, 8, true), # Data prevista da liquidação 18 => Position.new(19, 4, false), # Validade do cartao 19 => Position.new(20, 7, true), # Preencher com zeros 20 => Position.new(21, 15, true), # Preencher com zeros 21 => Position.new(22, 3, false), # Reservado(Brancos) 22 => Position.new(23, 4, false), # Código do erro(Brancos na remessa) 23 => Position.new(24, 11, false), # Referencia (Brancos) 24 => Position.new(25, 19, false), # Cartao Novo(Brancos) 25 => Position.new(26, 4, false), # Vencimento Novo (Brancos) 26 => Position.new(27, 2, false), # Reservado(Brancos) }) end |
Instance Method Details
#get_codigo_autorizacao ⇒ Object
81 82 83 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 81 def get_codigo_autorizacao self.get_section_value(3) end |
#get_codigo_erro ⇒ Object
117 118 119 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 117 def get_codigo_erro self.get_section_value(22) end |
#get_data_liquidacao ⇒ Object
109 110 111 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 109 def get_data_liquidacao self.get_section_value(17) end |
#get_data_venda ⇒ Object
85 86 87 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 85 def get_data_venda self.get_section_value(4) end |
#get_mensagem_erro ⇒ Object
237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 237 def get_mensagem_erro case self.get_codigo_erro when "E001" "Validar estrutura do Arquivo" when "E002" "Reveja os dados do cartão" when "E005" "Problema no seu cadastro na Cielo" when "E010" "Problema no seu cadastro na Cielo" when "E023" "Problema no seu cadastro na Cielo" when "E024" "Tipo de cartão não permitido neste canal" when "E044" "Data da transação não confere" when "E045" "Código de autorização não encontrado" when "E048" "Data de vencimento cartão incorreta" when "E054" "Estrutura do lote incorreta" when "E055" "Quantidade de Parcelas invalida" when "E056" "Transação não permitida para seu cadastro" when "E057" "Cartão cancelado" when "E061" "Reveja os dados do cartão" when "E094" "Transação não permitida para cartão Internacional" when "E095" "Transação não permitida para cartão Débito" when "E097" "Parcelado com valor inferior a R$ 5,00" when "E101" "Transação rejeitada pelo banco Emissor" when "E102" "Transação rejeitada pelo banco Emissor" when "E103" "Problema no seu cadastro na Cielo" when "E104" "Cartão cancelado" when "E105" "Transação rejeitada pelo banco Emissor" when "E107" "ransação rejeitada pelo banco Emissor" when "E112" "Validar Transação e Cartão" when "E114" "Reveja os dados do cartão" when "E141" "Cartão cancelado" when "E143" "Cartão cancelado" when "E151" "Transação não autorizada pelo banco Emissor" when "E154" "Data de vencimento cartão incorreta" when "E157" "Cartão cancelado" when "E158" "Tipo de cartão não permitido neste canal" when "E162" "Cartão não permitido para esta transação" when "E180" "Data da transação não confere" when "E182" "Código de segurança do cartão inválido" when "E191" "Banco Emissor sem comunicação" when "E192" "Aplicável para Cias Aéreas" when "E205" "Reveja os dados do cartão" when "E207" "Validar Número de Lote" when "E209" "Aplicável para Cias Aéreas" when "E210" "Validar Parcelas" when "E211" "Aplicável para Cias Aéreas" when "E212" "Aplicável para Cias Aéreas" when "E213" "Valor de cancelamento não permitido" when "E214" "Transação não localizada" when "E215" "Transação já cancelada" when "E216" "Transação cancelada anteriormente" when "E217" "Valor de cancelamento maior venda" when "E218" "Cancelamento não permitido neste canal" when "E219" "Número do RO não localizado" when "E220" "Prazo excedido para cancelar transação" when "E900" "Tipo de Registro Inválido" when "E901" "Data do Depósito do Header Inválida" when "E902" "Número do Resumo de Operações (RO) do Header Inválido" when "E903" "Número do Estabelecimento do Header Inválido" when "E904" "Moeda do header Inválida" when "E905" "Indicador de teste do Header Inválido" when "E906" "Indicador de venda do Header Inválido" when "E911" "Número de Comprovante de Venda(CV) Inválido" when "E912" "Data de Venda Inválida" when "E913" "Opção de Venda Inválida" when "E914" "Número do Cartão Inválido" when "E915" "Valor de Venda Inválido" when "E916" "Quantidade de Parcelas Inválida" when "E917" "Valor Financiado Inválido" when "E918" "Valor de Entrada Inválido" when "E919" "Valor da Taxa Embarque Inválido" when "E920" "Valor da Parcela Inválido" when "E921" "Número do Resumo de Operações (RO) Inválido" when "E922" "Número do Estabelecimento Inválido" when "E923" "Validade do Cartão Inválido" when "E924" "Número do Resumo de Operações (RO) Original Inválido" when "E926" "Valor do Reembolso Inválido" when "E930" "Quantidade de Registros do Trailer não confere" when "E931" "Valor total bruto não confere" else "" end end |
#get_mensagem_retorno ⇒ Object
136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 136 def get_mensagem_retorno case self.get_status_venda when "00" "Transação OK (Transação Aceita)" when "01" "Erro no arquivo" when "02" "Código de autorização inválido" when "03" "Estabelecimento inválido" when "04" "Lote misturado" when "05" "Número de parcelas inválido" when "06" "Diferença de valor no RO" when "07" "Número do RO inválido (registro BH)" when "08" "Valor de entrada inválido" when "09" "Valor da taxa de embarque inválido" when "10" "Valor da parcela inválido" when "11" "Código de transação inválido" when "12" "Transação inválida" when "13" "Valor inválido" when "14" "Não aplicável" when "15" "Valor do cancelamento inválido" when "16" "Transação original não localizada (para cancelamento)" when "17" "Nº de itens informados no RO não compatível com os CV’s" when "18" "Número de referência inválido" when "20" "Cancelamento para parcelado de transação já cancelada" when "21" "Valor do cancelamento maior que o valor da venda" when "22" "Valor do cancelamento maior que o permitido (alçada)" when "23" "Número do RO original inválido (registro I2)" when "42" "Cartão cancelado" when "54" "Não é permitido cancelamento parcial de um plano parcelado que está sendo contestado pelo portador." when "56" "Tipo de plano de cartão inválido" when "59" "Tipo cartão inválido" when "60" "Data inválida" when "71" "Transação rejeitada pelo banco emissor" when "72" "Transação rejeitada pelo banco emissor" when "73" "Cartão com problema - reter o cartão" when "74" "Autorização negada" when "75" "Erro" when "76" "Transação rejeitada pelo banco emissor" when "77" "Erro de sintaxe - refaça a transação" when "78" "Não foi encontrada autorização no emissor" when "79" "Cartão cancelado" when "80" "Cartão cancelado" when "81" "Fundos insuficientes" when "82" "Cartão vencido ou data do vencimento errada" when "87" "Cartão não permitido" when "88" "Excedeu o número de transações no período" when "89" "Mensagem difere da mensagem original" when "92" "Banco emissor sem comunicação" when "93" "Cancelamento com mais de 365 dias" when "94" "Duplicidade de linhas aéreas" when "95" "Sem saldo em aberto" when "99" "Outros motivos" end end |
#get_numero_cartao ⇒ Object
77 78 79 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 77 def get_numero_cartao self.get_section_value(2) end |
#get_numero_cielo ⇒ Object
97 98 99 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 97 def get_numero_cielo self.get_section_value(14) end |
#get_numero_lote ⇒ Object
93 94 95 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 93 def get_numero_lote self.get_section_value(12) end |
#get_reservado ⇒ Object
101 102 103 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 101 def get_reservado self.get_section_value(15) end |
#get_sequencial ⇒ Object
Getters
73 74 75 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 73 def get_sequencial self.get_section_value(1) end |
#get_status_venda ⇒ Object
105 106 107 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 105 def get_status_venda self.get_section_value(16) end |
#get_validade_cartao ⇒ Object
113 114 115 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 113 def get_validade_cartao self.get_section_value(18) end |
#get_valor ⇒ Object
89 90 91 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 89 def get_valor self.get_section_value(6).to_i end |
#hard_bounce? ⇒ Boolean
132 133 134 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 132 def hard_bounce? !self.success? && !self.soft_bounce? end |
#is_valid? ⇒ Boolean
Validações
522 523 524 525 526 527 528 529 530 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 522 def is_valid? (self.get_sequencial.length > 0 and self.get_data_venda.length > 0 and self.get_numero_lote.length > 0 and self.get_numero_cielo.length > 0 and self.get_numero_cartao.length > 0 and self.get_validade_cartao.length > 0 and self.get_valor > 0) end |
#numero_parcelas(valor = "0") ⇒ Object
432 433 434 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 432 def numero_parcelas(valor = "0") self.set_section_value(7, valor) end |
#process_section(file) ⇒ Object
Gerais
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 41 def process_section file self.set_sequencial file[2..8] self.set_numero_cartao file[9..27] self.set_codigo_autorizacao file[28..33] self.set_data_venda file[34..41] self.set_opcao_venda file[42..42] self.set_valor_venda file[43..57] self.numero_parcelas file[58..60] self.set_reservado_1 file[61..75] self.set_reservado_2 file[76..90] self.set_reservado_3 file[91..105] self.set_valor_parcela file[106..120] self.set_numero_lote file[121..127] self.set_reservado_4 file[128..130] self.set_numero_cielo file[131..140] self.set_reservado_5 file[141..170] self.set_status_venda file[171..172] self.set_data_liquidacao file[173..180] self.set_validade_cartao file[181..184] self.set_reservado_6 file[185..191] self.set_reservado_7 file[192..206] self.set_reservado_8 file[207..209] self.set_codigo_erro file[210..213] self.set_reservado_9 file[214..224] self.set_cartao_novo file[225..243] self.set_vencimento_novo file[244..247] self.set_reservado_10 file[248..249] end |
#set_cartao_novo(valor) ⇒ Object
507 508 509 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 507 def set_cartao_novo(valor) self.set_section_value(24, valor) end |
#set_codigo_autorizacao(valor = "000000") ⇒ Object
403 404 405 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 403 def set_codigo_autorizacao(valor = "000000") self.set_section_value(3, valor) end |
#set_codigo_erro(valor = "") ⇒ Object
499 500 501 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 499 def set_codigo_erro(valor = "") self.set_section_value(22, valor) end |
#set_data_liquidacao(valor = "0") ⇒ Object
472 473 474 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 472 def set_data_liquidacao(valor = "0") self.set_section_value(17, valor) end |
#set_data_venda(valor) ⇒ Object
407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 407 def set_data_venda(valor) begin valor = Date.strptime(valor, "%d%m%Y") if valor.is_a?(String) real_data = valor.strftime("%d%m%Y") if real_data.length == 8 self.set_section_value(4, real_data) else raise "tamanho de data incorreto" end rescue raise "#{get_id}: Data de Geração Inválida Valor: #{valor}" end end |
#set_numero_cartao(valor) ⇒ Object
399 400 401 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 399 def set_numero_cartao(valor) self.set_section_value(2, valor) end |
#set_numero_cielo(valor) ⇒ Object
460 461 462 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 460 def set_numero_cielo(valor) self.set_section_value(14, valor) end |
#set_numero_lote(valor) ⇒ Object
452 453 454 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 452 def set_numero_lote(valor) self.set_section_value(12, valor) end |
#set_opcao_venda(valor = "0") ⇒ Object
424 425 426 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 424 def set_opcao_venda(valor = "0") self.set_section_value(5, valor) end |
#set_reservado_1(valor = "0") ⇒ Object
436 437 438 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 436 def set_reservado_1(valor = "0") self.set_section_value(8, valor) end |
#set_reservado_10(valor = "") ⇒ Object
515 516 517 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 515 def set_reservado_10(valor = "") self.set_section_value(26, valor) end |
#set_reservado_2(valor = "0") ⇒ Object
440 441 442 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 440 def set_reservado_2(valor = "0") self.set_section_value(9, valor) end |
#set_reservado_3(valor = "0") ⇒ Object
444 445 446 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 444 def set_reservado_3(valor = "0") self.set_section_value(10, valor) end |
#set_reservado_4(valor = "0") ⇒ Object
456 457 458 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 456 def set_reservado_4(valor = "0") self.set_section_value(13, valor) end |
#set_reservado_5(valor = "") ⇒ Object
464 465 466 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 464 def set_reservado_5(valor = "") self.set_section_value(15, valor) end |
#set_reservado_6(valor = "0") ⇒ Object
487 488 489 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 487 def set_reservado_6(valor = "0") self.set_section_value(19, valor) end |
#set_reservado_7(valor = "0") ⇒ Object
491 492 493 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 491 def set_reservado_7(valor = "0") self.set_section_value(20, valor) end |
#set_reservado_8(valor = "") ⇒ Object
495 496 497 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 495 def set_reservado_8(valor = "") self.set_section_value(21, valor) end |
#set_reservado_9(valor = "") ⇒ Object
503 504 505 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 503 def set_reservado_9(valor = "") self.set_section_value(23, valor) end |
#set_sequencial(valor) ⇒ Object
Setters
395 396 397 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 395 def set_sequencial(valor) self.set_section_value(1, valor) end |
#set_status_venda(valor = "0") ⇒ Object
468 469 470 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 468 def set_status_venda(valor = "0") self.set_section_value(16, valor) end |
#set_validade_cartao(valor) ⇒ Object
format yymm
477 478 479 480 481 482 483 484 485 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 477 def set_validade_cartao(valor) if valor.is_a? String validade = valor[-2..-1] + valor[0..1] else validade = valor.strftime("%y%m") end self.set_section_value(18, validade) end |
#set_valor_parcela(valor = "0") ⇒ Object
448 449 450 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 448 def set_valor_parcela(valor = "0") self.set_section_value(11, valor) end |
#set_valor_venda(valor) ⇒ Object
428 429 430 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 428 def set_valor_venda(valor) self.set_section_value(6, valor) end |
#set_vencimento_novo(valor) ⇒ Object
511 512 513 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 511 def set_vencimento_novo(valor) self.set_section_value(25, valor) end |
#soft_bounce? ⇒ Boolean
125 126 127 128 129 130 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 125 def soft_bounce? codes = ["04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "17", "18", "20", "21", "22", "23", "54", "77", "81", "88", "95", "99"] !self.success? && codes.include?(self.get_status_venda()) end |
#success? ⇒ Boolean
121 122 123 |
# File 'lib/formatos/cielo/cielo_detalhe.rb', line 121 def success? self.get_status_venda() == '00' end |