Advertisement
Guest User

Untitled

a guest
Mar 20th, 2019
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.00 KB | None | 0 0
  1. class CrawlerNfceJob < ApplicationJob
  2. include JobsHelper
  3. queue_as :nfces
  4.  
  5. discard_on(NfceCrawler::Models::NfceError) do |job, error|
  6. purchase = job.arguments.first
  7. purchase.nfce_error = error.message
  8. purchase.save
  9.  
  10. NotificationJob.perform_later(
  11. [purchase.customer.id],
  12. 'Error no Cupom!',
  13. error.message
  14. ) if purchase.company and purchase.company.config
  15. end
  16.  
  17. retry_on(NfceCrawler::Models::NfceInContingencyError, wait: 24.hours, attempts: 2) do |job, error|
  18. purchase = job.arguments.first
  19. purchase.nfce_error = error.message
  20. purchase.save
  21. key = NfceCrawler::Tools.get_key_from_url_nfce(purchase.url_nfce)
  22.  
  23. NotificationJob.perform_later(
  24. [purchase.customer.id],
  25. 'Falha ao registrar cupom',
  26. "Cupom de chave #{key} continua em contigência após o período de 24h"
  27. ) if purchase.company and purchase.company.config
  28. end
  29.  
  30. def perform(purchase)
  31. nfce = NfceCrawler::Qrcode.parsing purchase.url_nfce
  32.  
  33. purchase.date_buy = nfce.data_hora
  34. purchase.total = nfce.total * 100
  35. purchase.url_ncfe_ative = true
  36.  
  37. payment = PaymentMethod.where('name like ?', "%#{nfce.forma_de_pagamento}%").first
  38. purchase.payment_method = payment
  39.  
  40. if purchase.company.nil?
  41. purchase.company = Company.create(
  42. cnpj: nfce.cnpj,
  43. social_name: nfce.razao_social,
  44. email: "cnpj_#{nfce.cnpj.gsub(/[^0-9]/, '')}@notregistered.com",
  45. password: '123456'
  46. )
  47. end
  48.  
  49. purchase.save
  50.  
  51. if purchase.discount.present?
  52. value = price(purchase.discount.value)
  53. key = NfceCrawler::Tools.get_key_from_url_nfce(purchase.url_nfce)
  54.  
  55. NotificationJob.perform_later(
  56. [purchase.customer.id],
  57. 'Saldo atualizado',
  58. "Você acaba de receber #{value} ref. ao cupom de chave #{key}"
  59. )
  60. end
  61.  
  62. nfce.produtos.each do |produto|
  63. purchase.products.create(
  64. name: produto.nome,
  65. price: produto.valor_unitario * 100,
  66. quantity: produto.quantidade * 1000
  67. )
  68. end
  69. end
  70. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement