class Nfe::Operations::NfeDiscard

Public Class Methods

new(certificate:, private_key:, environment:, uf:, cnpj:, series:, reason:, initial_number:, final_number: nil, use_schema: true) click to toggle source
Calls superclass method Nfe::Operations::Base::new
# File lib/nfe/operations/nfe_discard.rb, line 6
def initialize(certificate:, private_key:, environment:, uf:, cnpj:, series:,
  reason:, initial_number:, final_number: nil, use_schema: true)
  super(certificate, private_key, use_schema: use_schema)

  @uf = uf
  @environment = environment

  @object = object_to_send(cnpj, series, reason, initial_number,
    final_number)

  @retInutNFe = Services::Regress::RetInutNFe.new
end

Public Instance Methods

discard_xml() click to toggle source
# File lib/nfe/operations/nfe_discard.rb, line 31
def discard_xml
  if success?
    procInutNFe = Nfe::Models::ProcInutNFe.new(@object, @retInutNFe)
    procInutNFe.to_xml
  end
end
message() click to toggle source
# File lib/nfe/operations/nfe_discard.rb, line 27
def message
  @retInutNFe.xMotivo if rejected? || success?
end
rejected?() click to toggle source
# File lib/nfe/operations/nfe_discard.rb, line 23
def rejected?
  @retInutNFe.cStat.to_i > 200
end
success?() click to toggle source
# File lib/nfe/operations/nfe_discard.rb, line 19
def success?
  @retInutNFe.cStat == discard_code
end

Protected Instance Methods

before_execute() click to toggle source
# File lib/nfe/operations/nfe_discard.rb, line 39
def before_execute
  sign @object, @object.id
end
handle_result(xml) click to toggle source
# File lib/nfe/operations/nfe_discard.rb, line 43
def handle_result(xml)
  @retInutNFe.parse! xml
  @retInutNFe
end
schema_name() click to toggle source
# File lib/nfe/operations/nfe_discard.rb, line 76
def schema_name
  ws_info.schema
end
valid?() click to toggle source
Calls superclass method Nfe::Operations::Base#valid?
# File lib/nfe/operations/nfe_discard.rb, line 48
def valid?
  if @object.uf.to_s.length != 2
    errors.add(:base, I18n.t("nfe_discard.invalid_uf"))
  end

  if @object.cnpj.to_s.length != 14
    errors.add(:base, I18n.t("nfe_discard.invalid_cnpj"))
  end

  if @object.serie.to_i <= 0
    errors.add(:base, I18n.t("nfe_discard.invalid_series"))
  end

  if @object.nNFIni.to_i <= 0
    errors.add(:base, I18n.t("nfe_discard.invalid_number"))
  end

  if @object.xJust.to_s.length < 15
    errors.add(:base, I18n.t("nfe_discard.invalid_reason"))
  end

  super
end
ws_info() click to toggle source
# File lib/nfe/operations/nfe_discard.rb, line 80
def ws_info
  Webservices::Wsinfo::NfeDisenable.new(@environment, @uf)
end
xpath() click to toggle source
# File lib/nfe/operations/nfe_discard.rb, line 72
def xpath
  "//ns:retInutNFe"
end

Private Instance Methods

discard_code() click to toggle source
# File lib/nfe/operations/nfe_discard.rb, line 101
def discard_code
  102
end
object_to_send(cnpj, series, reason, initial_number, final_number = nil) click to toggle source
# File lib/nfe/operations/nfe_discard.rb, line 85
def object_to_send(cnpj, series, reason, initial_number,
  final_number = nil)
  inutNFe = Services::Dispatch::InutNFe.new

  inutNFe.tpAmb = @environment
  inutNFe.versao = ws_info.version
  inutNFe.uf = @uf
  inutNFe.ano = Date.today.strftime("%y")
  inutNFe.cnpj = cnpj
  inutNFe.serie = series
  inutNFe.nNFIni = initial_number
  inutNFe.nNFFin = final_number || initial_number
  inutNFe.xJust = reason
  inutNFe
end