defmodule WebmaniaNfe do
@moduledoc """
Documentation for `WebmaniaNfe`.
## Usage
"""
alias WebmaniaNfe.Client
alias WebmaniaNfe.Invoice
@derive [Nestru.Encoder, Nestru.Decoder]
defstruct client: %Client{},
invoice: %Invoice{}
def new(base_url, consumer_key, consumer_secret, access_token, access_token_secret) do
new(Client.new(
base_url,
consumer_key,
consumer_secret,
access_token,
access_token_secret
))
end
def new(%Client.Config{} = client_config) do
new(Client.new(client_config))
end
def new(%Client{} = client) do
%__MODULE__{
client: client,
invoice: Invoice.new(client)
}
end
def invoice(%__MODULE__{} = webmania_nfe, %Invoice.Create.Request{} = request) do
invoice = webmania_nfe.invoice |> Invoice.create(request)
%__MODULE__{
webmania_nfe |
client: invoice.client,
invoice: invoice
}
end
def get_invoice(%__MODULE__{} = webmania_nfe, %Invoice.Get.Request{} = request) do
invoice = webmania_nfe.invoice
|> Invoice.Get.add(request)
|> Invoice.Get.add(webmania_nfe.client)
|> Invoice.Get.request()
%__MODULE__{
webmania_nfe |
client: invoice.client,
invoice: invoice
}
end
end