require 'interfactura/parser/emisor'
require 'interfactura/parser/receptor'
require 'interfactura/parser/conceptos'
require 'interfactura/parser/impuestos'
require 'interfactura/parser/complemento'
require 'interfactura/parser/addenda'

module Interfactura
  module Parser
    class Comprobante
      include HappyMapper

      tag 'cfdi:Comprobante'
      attribute "forma_de_pago", String, tag: "formaDePago"
      attribute "condiciones_de_pago", String, tag: "condicionesDePago"
      attribute "sub_total", String, tag: "subTotal"
      attribute "tipo_cambio", String, tag: "TipoCambio"
      attribute "moneda", String, tag: "Moneda"
      attribute "total", String
      attribute "tipo_de_comprobante", String, tag: "tipoDeComprobante"
      attribute "metodo_de_pago", String, tag: "metodoDePago"
      attribute "lugar_expedicion", String, tag: "LugarExpedicion"

      element "emisor", Interfactura::Parser::Emisor, tag: "cfdi:Emisor"
      element "receptor", Interfactura::Parser::Receptor, tag: "cfdi:Receptor"
      element "conceptos", Interfactura::Parser::Conceptos, tag: "cfdi:Conceptos"
      element "impuestos", Interfactura::Parser::Impuestos, tag: "cfdi:Impuestos"
      element "complemento", Interfactura::Parser::Complemento, tag: "cfdi:Complemento"
      element "addenda", Interfactura::Parser::Addenda, tag: "cfdi:Addenda"
    end
  end
end
