Current section

Files

Jump to
invoicex lib invoicex extra discount.ex
Raw

lib/invoicex/extra/discount.ex

defmodule Invoicex.Extra.Discount do
@moduledoc """
Extra embedded copy of `Invoicex.Ecommerce.Discount` which is used by `Invoicex.Document.Group`.
"""
use Ecto.Schema
alias Ecto.Changeset
alias Invoicex.Extra.Money
@required_fields [:label, :order]
@fields @required_fields
embedded_schema do
embeds_one(:value, Money)
field(:label, :string)
field(:order, :integer)
end
@doc false
def changeset(discount \\ %__MODULE__{}, attrs \\ %{}) do
discount
|> Changeset.cast(attrs, @fields)
|> Changeset.cast_embed(:value, required: true)
|> Changeset.validate_number(:order, greater_than: 0)
|> Changeset.validate_required(@required_fields)
end
end