Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class CrawlerNfceJob < ApplicationJob
- include JobsHelper
- queue_as :nfces
- discard_on(NfceCrawler::Models::NfceError) do |job, error|
- purchase = job.arguments.first
- purchase.nfce_error = error.message
- purchase.save
- NotificationJob.perform_later(
- [purchase.customer.id],
- 'Error no Cupom!',
- error.message
- ) if purchase.company and purchase.company.config
- end
- retry_on(NfceCrawler::Models::NfceInContingencyError, wait: 24.hours, attempts: 2) do |job, error|
- purchase = job.arguments.first
- purchase.nfce_error = error.message
- purchase.save
- key = NfceCrawler::Tools.get_key_from_url_nfce(purchase.url_nfce)
- NotificationJob.perform_later(
- [purchase.customer.id],
- 'Falha ao registrar cupom',
- "Cupom de chave #{key} continua em contigência após o período de 24h"
- ) if purchase.company and purchase.company.config
- end
- def perform(purchase)
- nfce = NfceCrawler::Qrcode.parsing purchase.url_nfce
- purchase.date_buy = nfce.data_hora
- purchase.total = nfce.total * 100
- purchase.url_ncfe_ative = true
- payment = PaymentMethod.where('name like ?', "%#{nfce.forma_de_pagamento}%").first
- purchase.payment_method = payment
- if purchase.company.nil?
- purchase.company = Company.create(
- cnpj: nfce.cnpj,
- social_name: nfce.razao_social,
- email: "cnpj_#{nfce.cnpj.gsub(/[^0-9]/, '')}@notregistered.com",
- password: '123456'
- )
- end
- purchase.save
- if purchase.discount.present?
- value = price(purchase.discount.value)
- key = NfceCrawler::Tools.get_key_from_url_nfce(purchase.url_nfce)
- NotificationJob.perform_later(
- [purchase.customer.id],
- 'Saldo atualizado',
- "Você acaba de receber #{value} ref. ao cupom de chave #{key}"
- )
- end
- nfce.produtos.each do |produto|
- purchase.products.create(
- name: produto.nome,
- price: produto.valor_unitario * 100,
- quantity: produto.quantidade * 1000
- )
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement