diff --git a/CHANGELOG.md b/CHANGELOG.md
index f70eba50..6b062e5f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+# v0.9.2
+- Add lot number to packs
+- Don't show price paid and lot number columns when displaying packs if not used
+
# v0.9.1
- Rename ammo type's "type" to "class" to avoid confusion
- Rename "ammo type" to "type" to avoid confusion
diff --git a/lib/cannery/ammo/pack.ex b/lib/cannery/ammo/pack.ex
index a33521cc..54fcdbe8 100644
--- a/lib/cannery/ammo/pack.ex
+++ b/lib/cannery/ammo/pack.ex
@@ -19,6 +19,7 @@ defmodule Cannery.Ammo.Pack do
:count,
:notes,
:price_paid,
+ :lot_number,
:staged,
:type_id,
:container_id
@@ -30,6 +31,7 @@ defmodule Cannery.Ammo.Pack do
field :notes, :string
field :price_paid, :float
field :staged, :boolean, default: false
+ field :lot_number, :string
field :purchased_on, :date
belongs_to :type, Type
@@ -45,6 +47,7 @@ defmodule Cannery.Ammo.Pack do
notes: String.t() | nil,
price_paid: float() | nil,
staged: boolean(),
+ lot_number: String.t() | nil,
purchased_on: Date.t(),
type: Type.t() | nil,
type_id: Type.id(),
@@ -77,8 +80,10 @@ defmodule Cannery.Ammo.Pack do
|> change(type_id: type_id)
|> change(user_id: user_id)
|> change(container_id: container_id)
- |> cast(attrs, [:count, :price_paid, :notes, :staged, :purchased_on])
+ |> cast(attrs, [:count, :price_paid, :notes, :staged, :purchased_on, :lot_number])
|> validate_number(:count, greater_than: 0)
+ |> validate_number(:price_paid, greater_than_or_equal_to: 0)
+ |> validate_length(:lot_number, max: 255)
|> validate_required([:count, :staged, :purchased_on, :type_id, :container_id, :user_id])
end
@@ -89,6 +94,9 @@ defmodule Cannery.Ammo.Pack do
pack
|> cast(attrs, [:type_id, :container_id])
|> validate_required([:type_id, :container_id])
+ |> validate_number(:count, greater_than: 0)
+ |> validate_number(:price_paid, greater_than_or_equal_to: 0)
+ |> validate_length(:lot_number, max: 255)
|> add_error(:invalid, dgettext("errors", "Please select a type and container"))
end
@@ -96,9 +104,19 @@ defmodule Cannery.Ammo.Pack do
@spec update_changeset(t() | new_pack(), attrs :: map(), User.t()) :: changeset()
def update_changeset(pack, attrs, user) do
pack
- |> cast(attrs, [:count, :price_paid, :notes, :staged, :purchased_on, :container_id])
+ |> cast(attrs, [
+ :count,
+ :price_paid,
+ :notes,
+ :staged,
+ :purchased_on,
+ :lot_number,
+ :container_id
+ ])
|> validate_number(:count, greater_than_or_equal_to: 0)
+ |> validate_number(:price_paid, greater_than_or_equal_to: 0)
|> validate_container_id(user)
+ |> validate_length(:lot_number, max: 255)
|> validate_required([:count, :staged, :purchased_on, :container_id])
end
diff --git a/lib/cannery_web/components/core_components/pack_card.html.heex b/lib/cannery_web/components/core_components/pack_card.html.heex
index 517a3cf4..a39b6d29 100644
--- a/lib/cannery_web/components/core_components/pack_card.html.heex
+++ b/lib/cannery_web/components/core_components/pack_card.html.heex
@@ -47,6 +47,11 @@
<%= gettext("$%{amount}", amount: display_currency(@cpr)) %>
+
+ <%= gettext("Lot number:") %>
+ <%= @pack.lot_number %>
+
+
<%= gettext("Container:") %>
diff --git a/lib/cannery_web/components/pack_table_component.ex b/lib/cannery_web/components/pack_table_component.ex
index 749fdc15..7b7643f3 100644
--- a/lib/cannery_web/components/pack_table_component.ex
+++ b/lib/cannery_web/components/pack_table_component.ex
@@ -53,6 +53,9 @@ defmodule CanneryWeb.Components.PackTableComponent do
}
} = socket
) do
+ lot_number_used = packs |> Enum.any?(fn %{lot_number: lot_number} -> !!lot_number end)
+ price_paid_used = packs |> Enum.any?(fn %{price_paid: price_paid} -> !!price_paid end)
+
columns =
[]
|> TableComponent.maybe_compose_columns(
@@ -77,8 +80,18 @@ defmodule CanneryWeb.Components.PackTableComponent do
%{label: gettext("Range"), key: :range},
range != []
)
- |> TableComponent.maybe_compose_columns(%{label: gettext("CPR"), key: :cpr})
- |> TableComponent.maybe_compose_columns(%{label: gettext("Price paid"), key: :price_paid})
+ |> TableComponent.maybe_compose_columns(
+ %{label: gettext("Lot number"), key: :lot_number},
+ lot_number_used
+ )
+ |> TableComponent.maybe_compose_columns(
+ %{label: gettext("CPR"), key: :cpr},
+ price_paid_used
+ )
+ |> TableComponent.maybe_compose_columns(
+ %{label: gettext("Price paid"), key: :price_paid},
+ price_paid_used
+ )
|> TableComponent.maybe_compose_columns(
%{label: gettext("% left"), key: :remaining},
show_used
diff --git a/lib/cannery_web/live/pack_live/form_component.html.heex b/lib/cannery_web/live/pack_live/form_component.html.heex
index 4a5b93d3..b51202c3 100644
--- a/lib/cannery_web/live/pack_live/form_component.html.heex
+++ b/lib/cannery_web/live/pack_live/form_component.html.heex
@@ -39,6 +39,13 @@
) %>
<%= error_tag(f, :price_paid, "col-span-3 text-center") %>
+ <%= label(f, :lot_number, gettext("Lot number"), class: "title text-lg text-primary-600") %>
+ <%= text_input(f, :lot_number,
+ class: "text-center col-span-2 input input-primary",
+ maxlength: 255
+ ) %>
+ <%= error_tag(f, :price_paid, "col-span-3 text-center") %>
+
<%= label(f, :purchased_on, gettext("Purchased on"), class: "title text-lg text-primary-600") %>
<%= date_input(f, :purchased_on,
class: "input input-primary col-span-2",
diff --git a/mix.exs b/mix.exs
index 0e47f5d7..9922bad0 100644
--- a/mix.exs
+++ b/mix.exs
@@ -4,7 +4,7 @@ defmodule Cannery.MixProject do
def project do
[
app: :cannery,
- version: "0.9.1",
+ version: "0.9.2",
elixir: "1.14.1",
elixirc_paths: elixirc_paths(Mix.env()),
compilers: Mix.compilers(),
diff --git a/priv/gettext/actions.pot b/priv/gettext/actions.pot
index cee6a2d9..db4fcb75 100644
--- a/priv/gettext/actions.pot
+++ b/priv/gettext/actions.pot
@@ -118,7 +118,7 @@ msgstr ""
#: lib/cannery_web/components/add_shot_record_component.html.heex:57
#: lib/cannery_web/live/container_live/form_component.html.heex:57
#: lib/cannery_web/live/invite_live/form_component.html.heex:35
-#: lib/cannery_web/live/pack_live/form_component.html.heex:84
+#: lib/cannery_web/live/pack_live/form_component.html.heex:91
#: lib/cannery_web/live/range_live/form_component.html.heex:45
#: lib/cannery_web/live/tag_live/form_component.html.heex:37
#: lib/cannery_web/live/type_live/form_component.html.heex:350
@@ -178,7 +178,7 @@ msgstr ""
msgid "add a container first"
msgstr ""
-#: lib/cannery_web/live/pack_live/form_component.html.heex:77
+#: lib/cannery_web/live/pack_live/form_component.html.heex:84
#, elixir-autogen, elixir-format
msgid "Create"
msgstr ""
diff --git a/priv/gettext/de/LC_MESSAGES/actions.po b/priv/gettext/de/LC_MESSAGES/actions.po
index dda0edab..5142edd0 100644
--- a/priv/gettext/de/LC_MESSAGES/actions.po
+++ b/priv/gettext/de/LC_MESSAGES/actions.po
@@ -131,7 +131,7 @@ msgstr "Passwort zurücksetzen"
#: lib/cannery_web/components/add_shot_record_component.html.heex:57
#: lib/cannery_web/live/container_live/form_component.html.heex:57
#: lib/cannery_web/live/invite_live/form_component.html.heex:35
-#: lib/cannery_web/live/pack_live/form_component.html.heex:84
+#: lib/cannery_web/live/pack_live/form_component.html.heex:91
#: lib/cannery_web/live/range_live/form_component.html.heex:45
#: lib/cannery_web/live/tag_live/form_component.html.heex:37
#: lib/cannery_web/live/type_live/form_component.html.heex:350
@@ -191,7 +191,7 @@ msgstr "In die Zwischenablage kopieren"
msgid "add a container first"
msgstr "Zuerst einen Behälter hinzufügen"
-#: lib/cannery_web/live/pack_live/form_component.html.heex:77
+#: lib/cannery_web/live/pack_live/form_component.html.heex:84
#, elixir-autogen, elixir-format
msgid "Create"
msgstr "Erstellen"
diff --git a/priv/gettext/de/LC_MESSAGES/default.po b/priv/gettext/de/LC_MESSAGES/default.po
index f5959195..77d8a7c0 100644
--- a/priv/gettext/de/LC_MESSAGES/default.po
+++ b/priv/gettext/de/LC_MESSAGES/default.po
@@ -85,8 +85,8 @@ msgid "Case material"
msgstr "Gehäusematerial"
#: lib/cannery_web/components/move_pack_component.ex:65
-#: lib/cannery_web/components/pack_table_component.ex:73
-#: lib/cannery_web/live/pack_live/form_component.html.heex:59
+#: lib/cannery_web/components/pack_table_component.ex:76
+#: lib/cannery_web/live/pack_live/form_component.html.heex:66
#, elixir-autogen, elixir-format
msgid "Container"
msgstr "Behälter"
@@ -105,7 +105,7 @@ msgstr "Behälter"
msgid "Corrosive"
msgstr "Korrosiv"
-#: lib/cannery_web/components/pack_table_component.ex:91
+#: lib/cannery_web/components/pack_table_component.ex:104
#: lib/cannery_web/live/pack_live/form_component.html.heex:28
#, elixir-autogen, elixir-format
msgid "Count"
@@ -280,7 +280,7 @@ msgstr "Keine Tags"
#: lib/cannery_web/components/add_shot_record_component.html.heex:38
#: lib/cannery_web/components/shot_record_table_component.ex:46
-#: lib/cannery_web/live/pack_live/form_component.html.heex:50
+#: lib/cannery_web/live/pack_live/form_component.html.heex:57
#: lib/cannery_web/live/pack_live/show.ex:91
#: lib/cannery_web/live/range_live/form_component.html.heex:30
#, elixir-autogen, elixir-format
@@ -304,7 +304,7 @@ msgstr "Auf dem Bücherregal"
msgid "Pressure"
msgstr "Druck"
-#: lib/cannery_web/components/pack_table_component.ex:81
+#: lib/cannery_web/components/pack_table_component.ex:92
#: lib/cannery_web/live/pack_live/form_component.html.heex:35
#, elixir-autogen, elixir-format
msgid "Price paid"
@@ -391,7 +391,7 @@ msgstr "Leuchtspur"
#: lib/cannery_web/components/container_table_component.ex:48
#: lib/cannery_web/components/move_pack_component.ex:66
-#: lib/cannery_web/components/pack_table_component.ex:95
+#: lib/cannery_web/components/pack_table_component.ex:108
#: lib/cannery_web/live/container_live/form_component.html.heex:39
#: lib/cannery_web/live/pack_live/form_component.html.heex:22
#, elixir-autogen, elixir-format
@@ -425,7 +425,7 @@ msgid "No tags for this container"
msgstr "Keine Tags für diesen Behälter"
#: lib/cannery_web/components/core_components/topbar.html.heex:66
-#: lib/cannery_web/components/pack_table_component.ex:77
+#: lib/cannery_web/components/pack_table_component.ex:80
#, elixir-autogen, elixir-format
msgid "Range"
msgstr "Schießplatz"
@@ -500,8 +500,8 @@ msgstr "Schießkladde"
#: lib/cannery_web/components/core_components/pack_card.html.heex:42
#: lib/cannery_web/components/core_components/pack_card.html.heex:47
-#: lib/cannery_web/components/pack_table_component.ex:163
-#: lib/cannery_web/components/pack_table_component.ex:246
+#: lib/cannery_web/components/pack_table_component.ex:176
+#: lib/cannery_web/components/pack_table_component.ex:259
#: lib/cannery_web/components/type_table_component.ex:261
#: lib/cannery_web/live/pack_live/show.html.heex:37
#: lib/cannery_web/live/pack_live/show.html.heex:42
@@ -592,15 +592,15 @@ msgstr "Editiere %{name} Tags"
msgid "Rounds:"
msgstr "Patronen:"
-#: lib/cannery_web/components/pack_table_component.ex:160
-#: lib/cannery_web/components/pack_table_component.ex:242
+#: lib/cannery_web/components/pack_table_component.ex:173
+#: lib/cannery_web/components/pack_table_component.ex:255
#: lib/cannery_web/components/type_table_component.ex:260
#: lib/cannery_web/live/type_live/show.html.heex:154
#, elixir-autogen, elixir-format
msgid "No cost information"
msgstr "Keine Preisinformationen"
-#: lib/cannery_web/components/pack_table_component.ex:83
+#: lib/cannery_web/components/pack_table_component.ex:96
#, elixir-autogen, elixir-format
msgid "% left"
msgstr "% verbleibend"
@@ -661,7 +661,7 @@ msgstr "Passwort zurücksetzen"
msgid "Record Shots"
msgstr "Schüsse dokumentieren"
-#: lib/cannery_web/live/pack_live/form_component.html.heex:69
+#: lib/cannery_web/live/pack_live/form_component.html.heex:76
#, elixir-autogen, elixir-format
msgid "Copies"
msgstr "Kopien"
@@ -768,7 +768,7 @@ msgstr ""
msgid "Leave \"Uses left\" blank to make invite unlimited"
msgstr ""
-#: lib/cannery_web/components/core_components/pack_card.html.heex:51
+#: lib/cannery_web/components/core_components/pack_card.html.heex:56
#, elixir-autogen, elixir-format, fuzzy
msgid "Container:"
msgstr "Behälter"
@@ -780,7 +780,7 @@ msgstr "Behälter"
msgid "Show used"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:201
+#: lib/cannery_web/components/pack_table_component.ex:214
#: lib/cannery_web/live/pack_live/show.html.heex:19
#, elixir-autogen, elixir-format
msgid "%{percentage}%"
@@ -957,12 +957,12 @@ msgid "Average CPR"
msgstr ""
#: lib/cannery_web/components/core_components/pack_card.html.heex:17
-#: lib/cannery_web/components/pack_table_component.ex:250
+#: lib/cannery_web/components/pack_table_component.ex:263
#, elixir-autogen, elixir-format
msgid "Empty"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:80
+#: lib/cannery_web/components/pack_table_component.ex:88
#, elixir-autogen, elixir-format
msgid "CPR"
msgstr ""
@@ -972,7 +972,7 @@ msgstr ""
msgid "CPR:"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:87
+#: lib/cannery_web/components/pack_table_component.ex:100
#, elixir-autogen, elixir-format, fuzzy
msgid "Original Count"
msgstr "Ursprüngliche Anzahl:"
@@ -987,7 +987,7 @@ msgstr "Ursprüngliche Anzahl:"
msgid "Home"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:63
+#: lib/cannery_web/components/pack_table_component.ex:66
#, elixir-autogen, elixir-format
msgid "Last used on"
msgstr ""
@@ -997,13 +997,13 @@ msgstr ""
msgid "Last used on:"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:181
+#: lib/cannery_web/components/pack_table_component.ex:194
#, elixir-autogen, elixir-format
msgid "Never used"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:68
-#: lib/cannery_web/live/pack_live/form_component.html.heex:42
+#: lib/cannery_web/components/pack_table_component.ex:71
+#: lib/cannery_web/live/pack_live/form_component.html.heex:49
#, elixir-autogen, elixir-format
msgid "Purchased on"
msgstr ""
@@ -1181,7 +1181,7 @@ msgstr ""
#: lib/cannery_web/components/container_table_component.ex:67
#: lib/cannery_web/components/move_pack_component.ex:68
-#: lib/cannery_web/components/pack_table_component.ex:59
+#: lib/cannery_web/components/pack_table_component.ex:62
#: lib/cannery_web/components/shot_record_table_component.ex:48
#: lib/cannery_web/components/type_table_component.ex:100
#: lib/cannery_web/live/pack_live/show.ex:93
@@ -1199,7 +1199,7 @@ msgstr ""
msgid "Log out"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:91
+#: lib/cannery_web/components/pack_table_component.ex:104
#, elixir-autogen, elixir-format
msgid "Current Count"
msgstr ""
@@ -1461,3 +1461,14 @@ msgstr "Neuer Munitionstyp"
#, elixir-autogen, elixir-format, fuzzy
msgid "No Types"
msgstr "Art"
+
+#: lib/cannery_web/components/pack_table_component.ex:84
+#: lib/cannery_web/live/pack_live/form_component.html.heex:42
+#, elixir-autogen, elixir-format
+msgid "Lot number"
+msgstr ""
+
+#: lib/cannery_web/components/core_components/pack_card.html.heex:51
+#, elixir-autogen, elixir-format
+msgid "Lot number:"
+msgstr ""
diff --git a/priv/gettext/de/LC_MESSAGES/errors.po b/priv/gettext/de/LC_MESSAGES/errors.po
index 1af46ef3..0ff40014 100644
--- a/priv/gettext/de/LC_MESSAGES/errors.po
+++ b/priv/gettext/de/LC_MESSAGES/errors.po
@@ -208,7 +208,7 @@ msgstr "Anzahl muss weniger als %{count} betragen"
msgid "can't be blank"
msgstr ""
-#: lib/cannery/ammo/pack.ex:92
+#: lib/cannery/ammo/pack.ex:100
#, elixir-autogen, elixir-format, fuzzy
msgid "Please select a type and container"
msgstr ""
diff --git a/priv/gettext/de/LC_MESSAGES/prompts.po b/priv/gettext/de/LC_MESSAGES/prompts.po
index bd9f6c68..be8346b1 100644
--- a/priv/gettext/de/LC_MESSAGES/prompts.po
+++ b/priv/gettext/de/LC_MESSAGES/prompts.po
@@ -131,7 +131,7 @@ msgstr "Bitte überprüfen Sie ihre Mailbox und bestätigen Sie das Nutzerkonto"
#: lib/cannery_web/components/add_shot_record_component.html.heex:59
#: lib/cannery_web/live/container_live/form_component.html.heex:59
#: lib/cannery_web/live/invite_live/form_component.html.heex:37
-#: lib/cannery_web/live/pack_live/form_component.html.heex:85
+#: lib/cannery_web/live/pack_live/form_component.html.heex:92
#: lib/cannery_web/live/range_live/form_component.html.heex:47
#: lib/cannery_web/live/tag_live/form_component.html.heex:39
#: lib/cannery_web/live/type_live/form_component.html.heex:351
@@ -219,7 +219,7 @@ msgstr "%{name} erfolgreich entfernt"
msgid "You'll need to"
msgstr "Sie müssen"
-#: lib/cannery_web/live/pack_live/form_component.html.heex:78
+#: lib/cannery_web/live/pack_live/form_component.html.heex:85
#, elixir-autogen, elixir-format
msgid "Creating..."
msgstr "Erstellen..."
diff --git a/priv/gettext/default.pot b/priv/gettext/default.pot
index 8cfe6fd2..94865922 100644
--- a/priv/gettext/default.pot
+++ b/priv/gettext/default.pot
@@ -81,8 +81,8 @@ msgid "Case material"
msgstr ""
#: lib/cannery_web/components/move_pack_component.ex:65
-#: lib/cannery_web/components/pack_table_component.ex:73
-#: lib/cannery_web/live/pack_live/form_component.html.heex:59
+#: lib/cannery_web/components/pack_table_component.ex:76
+#: lib/cannery_web/live/pack_live/form_component.html.heex:66
#, elixir-autogen, elixir-format
msgid "Container"
msgstr ""
@@ -101,7 +101,7 @@ msgstr ""
msgid "Corrosive"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:91
+#: lib/cannery_web/components/pack_table_component.ex:104
#: lib/cannery_web/live/pack_live/form_component.html.heex:28
#, elixir-autogen, elixir-format
msgid "Count"
@@ -276,7 +276,7 @@ msgstr ""
#: lib/cannery_web/components/add_shot_record_component.html.heex:38
#: lib/cannery_web/components/shot_record_table_component.ex:46
-#: lib/cannery_web/live/pack_live/form_component.html.heex:50
+#: lib/cannery_web/live/pack_live/form_component.html.heex:57
#: lib/cannery_web/live/pack_live/show.ex:91
#: lib/cannery_web/live/range_live/form_component.html.heex:30
#, elixir-autogen, elixir-format
@@ -300,7 +300,7 @@ msgstr ""
msgid "Pressure"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:81
+#: lib/cannery_web/components/pack_table_component.ex:92
#: lib/cannery_web/live/pack_live/form_component.html.heex:35
#, elixir-autogen, elixir-format
msgid "Price paid"
@@ -385,7 +385,7 @@ msgstr ""
#: lib/cannery_web/components/container_table_component.ex:48
#: lib/cannery_web/components/move_pack_component.ex:66
-#: lib/cannery_web/components/pack_table_component.ex:95
+#: lib/cannery_web/components/pack_table_component.ex:108
#: lib/cannery_web/live/container_live/form_component.html.heex:39
#: lib/cannery_web/live/pack_live/form_component.html.heex:22
#, elixir-autogen, elixir-format
@@ -419,7 +419,7 @@ msgid "No tags for this container"
msgstr ""
#: lib/cannery_web/components/core_components/topbar.html.heex:66
-#: lib/cannery_web/components/pack_table_component.ex:77
+#: lib/cannery_web/components/pack_table_component.ex:80
#, elixir-autogen, elixir-format
msgid "Range"
msgstr ""
@@ -494,8 +494,8 @@ msgstr ""
#: lib/cannery_web/components/core_components/pack_card.html.heex:42
#: lib/cannery_web/components/core_components/pack_card.html.heex:47
-#: lib/cannery_web/components/pack_table_component.ex:163
-#: lib/cannery_web/components/pack_table_component.ex:246
+#: lib/cannery_web/components/pack_table_component.ex:176
+#: lib/cannery_web/components/pack_table_component.ex:259
#: lib/cannery_web/components/type_table_component.ex:261
#: lib/cannery_web/live/pack_live/show.html.heex:37
#: lib/cannery_web/live/pack_live/show.html.heex:42
@@ -586,15 +586,15 @@ msgstr ""
msgid "Rounds:"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:160
-#: lib/cannery_web/components/pack_table_component.ex:242
+#: lib/cannery_web/components/pack_table_component.ex:173
+#: lib/cannery_web/components/pack_table_component.ex:255
#: lib/cannery_web/components/type_table_component.ex:260
#: lib/cannery_web/live/type_live/show.html.heex:154
#, elixir-autogen, elixir-format
msgid "No cost information"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:83
+#: lib/cannery_web/components/pack_table_component.ex:96
#, elixir-autogen, elixir-format
msgid "% left"
msgstr ""
@@ -655,7 +655,7 @@ msgstr ""
msgid "Record Shots"
msgstr ""
-#: lib/cannery_web/live/pack_live/form_component.html.heex:69
+#: lib/cannery_web/live/pack_live/form_component.html.heex:76
#, elixir-autogen, elixir-format
msgid "Copies"
msgstr ""
@@ -762,7 +762,7 @@ msgstr ""
msgid "Leave \"Uses left\" blank to make invite unlimited"
msgstr ""
-#: lib/cannery_web/components/core_components/pack_card.html.heex:51
+#: lib/cannery_web/components/core_components/pack_card.html.heex:56
#, elixir-autogen, elixir-format
msgid "Container:"
msgstr ""
@@ -774,7 +774,7 @@ msgstr ""
msgid "Show used"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:201
+#: lib/cannery_web/components/pack_table_component.ex:214
#: lib/cannery_web/live/pack_live/show.html.heex:19
#, elixir-autogen, elixir-format
msgid "%{percentage}%"
@@ -951,12 +951,12 @@ msgid "Average CPR"
msgstr ""
#: lib/cannery_web/components/core_components/pack_card.html.heex:17
-#: lib/cannery_web/components/pack_table_component.ex:250
+#: lib/cannery_web/components/pack_table_component.ex:263
#, elixir-autogen, elixir-format
msgid "Empty"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:80
+#: lib/cannery_web/components/pack_table_component.ex:88
#, elixir-autogen, elixir-format
msgid "CPR"
msgstr ""
@@ -966,7 +966,7 @@ msgstr ""
msgid "CPR:"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:87
+#: lib/cannery_web/components/pack_table_component.ex:100
#, elixir-autogen, elixir-format
msgid "Original Count"
msgstr ""
@@ -981,7 +981,7 @@ msgstr ""
msgid "Home"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:63
+#: lib/cannery_web/components/pack_table_component.ex:66
#, elixir-autogen, elixir-format
msgid "Last used on"
msgstr ""
@@ -991,13 +991,13 @@ msgstr ""
msgid "Last used on:"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:181
+#: lib/cannery_web/components/pack_table_component.ex:194
#, elixir-autogen, elixir-format
msgid "Never used"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:68
-#: lib/cannery_web/live/pack_live/form_component.html.heex:42
+#: lib/cannery_web/components/pack_table_component.ex:71
+#: lib/cannery_web/live/pack_live/form_component.html.heex:49
#, elixir-autogen, elixir-format
msgid "Purchased on"
msgstr ""
@@ -1164,7 +1164,7 @@ msgstr ""
#: lib/cannery_web/components/container_table_component.ex:67
#: lib/cannery_web/components/move_pack_component.ex:68
-#: lib/cannery_web/components/pack_table_component.ex:59
+#: lib/cannery_web/components/pack_table_component.ex:62
#: lib/cannery_web/components/shot_record_table_component.ex:48
#: lib/cannery_web/components/type_table_component.ex:100
#: lib/cannery_web/live/pack_live/show.ex:93
@@ -1182,7 +1182,7 @@ msgstr ""
msgid "Log out"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:91
+#: lib/cannery_web/components/pack_table_component.ex:104
#, elixir-autogen, elixir-format
msgid "Current Count"
msgstr ""
@@ -1444,3 +1444,14 @@ msgstr ""
#, elixir-autogen, elixir-format
msgid "No Types"
msgstr ""
+
+#: lib/cannery_web/components/pack_table_component.ex:84
+#: lib/cannery_web/live/pack_live/form_component.html.heex:42
+#, elixir-autogen, elixir-format
+msgid "Lot number"
+msgstr ""
+
+#: lib/cannery_web/components/core_components/pack_card.html.heex:51
+#, elixir-autogen, elixir-format
+msgid "Lot number:"
+msgstr ""
diff --git a/priv/gettext/en/LC_MESSAGES/actions.po b/priv/gettext/en/LC_MESSAGES/actions.po
index c7f3152f..8c61a89a 100644
--- a/priv/gettext/en/LC_MESSAGES/actions.po
+++ b/priv/gettext/en/LC_MESSAGES/actions.po
@@ -118,7 +118,7 @@ msgstr ""
#: lib/cannery_web/components/add_shot_record_component.html.heex:57
#: lib/cannery_web/live/container_live/form_component.html.heex:57
#: lib/cannery_web/live/invite_live/form_component.html.heex:35
-#: lib/cannery_web/live/pack_live/form_component.html.heex:84
+#: lib/cannery_web/live/pack_live/form_component.html.heex:91
#: lib/cannery_web/live/range_live/form_component.html.heex:45
#: lib/cannery_web/live/tag_live/form_component.html.heex:37
#: lib/cannery_web/live/type_live/form_component.html.heex:350
@@ -178,7 +178,7 @@ msgstr ""
msgid "add a container first"
msgstr ""
-#: lib/cannery_web/live/pack_live/form_component.html.heex:77
+#: lib/cannery_web/live/pack_live/form_component.html.heex:84
#, elixir-autogen, elixir-format, fuzzy
msgid "Create"
msgstr ""
diff --git a/priv/gettext/en/LC_MESSAGES/default.po b/priv/gettext/en/LC_MESSAGES/default.po
index 7f45b3df..3589ad3e 100644
--- a/priv/gettext/en/LC_MESSAGES/default.po
+++ b/priv/gettext/en/LC_MESSAGES/default.po
@@ -81,8 +81,8 @@ msgid "Case material"
msgstr ""
#: lib/cannery_web/components/move_pack_component.ex:65
-#: lib/cannery_web/components/pack_table_component.ex:73
-#: lib/cannery_web/live/pack_live/form_component.html.heex:59
+#: lib/cannery_web/components/pack_table_component.ex:76
+#: lib/cannery_web/live/pack_live/form_component.html.heex:66
#, elixir-autogen, elixir-format
msgid "Container"
msgstr ""
@@ -101,7 +101,7 @@ msgstr ""
msgid "Corrosive"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:91
+#: lib/cannery_web/components/pack_table_component.ex:104
#: lib/cannery_web/live/pack_live/form_component.html.heex:28
#, elixir-autogen, elixir-format
msgid "Count"
@@ -276,7 +276,7 @@ msgstr ""
#: lib/cannery_web/components/add_shot_record_component.html.heex:38
#: lib/cannery_web/components/shot_record_table_component.ex:46
-#: lib/cannery_web/live/pack_live/form_component.html.heex:50
+#: lib/cannery_web/live/pack_live/form_component.html.heex:57
#: lib/cannery_web/live/pack_live/show.ex:91
#: lib/cannery_web/live/range_live/form_component.html.heex:30
#, elixir-autogen, elixir-format
@@ -300,7 +300,7 @@ msgstr ""
msgid "Pressure"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:81
+#: lib/cannery_web/components/pack_table_component.ex:92
#: lib/cannery_web/live/pack_live/form_component.html.heex:35
#, elixir-autogen, elixir-format
msgid "Price paid"
@@ -385,7 +385,7 @@ msgstr ""
#: lib/cannery_web/components/container_table_component.ex:48
#: lib/cannery_web/components/move_pack_component.ex:66
-#: lib/cannery_web/components/pack_table_component.ex:95
+#: lib/cannery_web/components/pack_table_component.ex:108
#: lib/cannery_web/live/container_live/form_component.html.heex:39
#: lib/cannery_web/live/pack_live/form_component.html.heex:22
#, elixir-autogen, elixir-format
@@ -419,7 +419,7 @@ msgid "No tags for this container"
msgstr ""
#: lib/cannery_web/components/core_components/topbar.html.heex:66
-#: lib/cannery_web/components/pack_table_component.ex:77
+#: lib/cannery_web/components/pack_table_component.ex:80
#, elixir-autogen, elixir-format
msgid "Range"
msgstr ""
@@ -494,8 +494,8 @@ msgstr ""
#: lib/cannery_web/components/core_components/pack_card.html.heex:42
#: lib/cannery_web/components/core_components/pack_card.html.heex:47
-#: lib/cannery_web/components/pack_table_component.ex:163
-#: lib/cannery_web/components/pack_table_component.ex:246
+#: lib/cannery_web/components/pack_table_component.ex:176
+#: lib/cannery_web/components/pack_table_component.ex:259
#: lib/cannery_web/components/type_table_component.ex:261
#: lib/cannery_web/live/pack_live/show.html.heex:37
#: lib/cannery_web/live/pack_live/show.html.heex:42
@@ -586,15 +586,15 @@ msgstr ""
msgid "Rounds:"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:160
-#: lib/cannery_web/components/pack_table_component.ex:242
+#: lib/cannery_web/components/pack_table_component.ex:173
+#: lib/cannery_web/components/pack_table_component.ex:255
#: lib/cannery_web/components/type_table_component.ex:260
#: lib/cannery_web/live/type_live/show.html.heex:154
#, elixir-autogen, elixir-format
msgid "No cost information"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:83
+#: lib/cannery_web/components/pack_table_component.ex:96
#, elixir-autogen, elixir-format
msgid "% left"
msgstr ""
@@ -655,7 +655,7 @@ msgstr ""
msgid "Record Shots"
msgstr ""
-#: lib/cannery_web/live/pack_live/form_component.html.heex:69
+#: lib/cannery_web/live/pack_live/form_component.html.heex:76
#, elixir-autogen, elixir-format
msgid "Copies"
msgstr ""
@@ -762,7 +762,7 @@ msgstr ""
msgid "Leave \"Uses left\" blank to make invite unlimited"
msgstr ""
-#: lib/cannery_web/components/core_components/pack_card.html.heex:51
+#: lib/cannery_web/components/core_components/pack_card.html.heex:56
#, elixir-autogen, elixir-format, fuzzy
msgid "Container:"
msgstr ""
@@ -774,7 +774,7 @@ msgstr ""
msgid "Show used"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:201
+#: lib/cannery_web/components/pack_table_component.ex:214
#: lib/cannery_web/live/pack_live/show.html.heex:19
#, elixir-autogen, elixir-format
msgid "%{percentage}%"
@@ -951,12 +951,12 @@ msgid "Average CPR"
msgstr ""
#: lib/cannery_web/components/core_components/pack_card.html.heex:17
-#: lib/cannery_web/components/pack_table_component.ex:250
+#: lib/cannery_web/components/pack_table_component.ex:263
#, elixir-autogen, elixir-format
msgid "Empty"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:80
+#: lib/cannery_web/components/pack_table_component.ex:88
#, elixir-autogen, elixir-format
msgid "CPR"
msgstr ""
@@ -966,7 +966,7 @@ msgstr ""
msgid "CPR:"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:87
+#: lib/cannery_web/components/pack_table_component.ex:100
#, elixir-autogen, elixir-format, fuzzy
msgid "Original Count"
msgstr ""
@@ -981,7 +981,7 @@ msgstr ""
msgid "Home"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:63
+#: lib/cannery_web/components/pack_table_component.ex:66
#, elixir-autogen, elixir-format
msgid "Last used on"
msgstr ""
@@ -991,13 +991,13 @@ msgstr ""
msgid "Last used on:"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:181
+#: lib/cannery_web/components/pack_table_component.ex:194
#, elixir-autogen, elixir-format
msgid "Never used"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:68
-#: lib/cannery_web/live/pack_live/form_component.html.heex:42
+#: lib/cannery_web/components/pack_table_component.ex:71
+#: lib/cannery_web/live/pack_live/form_component.html.heex:49
#, elixir-autogen, elixir-format
msgid "Purchased on"
msgstr ""
@@ -1164,7 +1164,7 @@ msgstr ""
#: lib/cannery_web/components/container_table_component.ex:67
#: lib/cannery_web/components/move_pack_component.ex:68
-#: lib/cannery_web/components/pack_table_component.ex:59
+#: lib/cannery_web/components/pack_table_component.ex:62
#: lib/cannery_web/components/shot_record_table_component.ex:48
#: lib/cannery_web/components/type_table_component.ex:100
#: lib/cannery_web/live/pack_live/show.ex:93
@@ -1182,7 +1182,7 @@ msgstr ""
msgid "Log out"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:91
+#: lib/cannery_web/components/pack_table_component.ex:104
#, elixir-autogen, elixir-format
msgid "Current Count"
msgstr ""
@@ -1444,3 +1444,14 @@ msgstr ""
#, elixir-autogen, elixir-format, fuzzy
msgid "No Types"
msgstr ""
+
+#: lib/cannery_web/components/pack_table_component.ex:84
+#: lib/cannery_web/live/pack_live/form_component.html.heex:42
+#, elixir-autogen, elixir-format
+msgid "Lot number"
+msgstr ""
+
+#: lib/cannery_web/components/core_components/pack_card.html.heex:51
+#, elixir-autogen, elixir-format
+msgid "Lot number:"
+msgstr ""
diff --git a/priv/gettext/en/LC_MESSAGES/errors.po b/priv/gettext/en/LC_MESSAGES/errors.po
index cbd840e3..093c37fb 100644
--- a/priv/gettext/en/LC_MESSAGES/errors.po
+++ b/priv/gettext/en/LC_MESSAGES/errors.po
@@ -191,7 +191,7 @@ msgstr ""
msgid "can't be blank"
msgstr ""
-#: lib/cannery/ammo/pack.ex:92
+#: lib/cannery/ammo/pack.ex:100
#, elixir-autogen, elixir-format, fuzzy
msgid "Please select a type and container"
msgstr ""
diff --git a/priv/gettext/en/LC_MESSAGES/prompts.po b/priv/gettext/en/LC_MESSAGES/prompts.po
index b5617b3e..0d4d45dc 100644
--- a/priv/gettext/en/LC_MESSAGES/prompts.po
+++ b/priv/gettext/en/LC_MESSAGES/prompts.po
@@ -112,7 +112,7 @@ msgstr ""
#: lib/cannery_web/components/add_shot_record_component.html.heex:59
#: lib/cannery_web/live/container_live/form_component.html.heex:59
#: lib/cannery_web/live/invite_live/form_component.html.heex:37
-#: lib/cannery_web/live/pack_live/form_component.html.heex:85
+#: lib/cannery_web/live/pack_live/form_component.html.heex:92
#: lib/cannery_web/live/range_live/form_component.html.heex:47
#: lib/cannery_web/live/tag_live/form_component.html.heex:39
#: lib/cannery_web/live/type_live/form_component.html.heex:351
@@ -198,7 +198,7 @@ msgstr ""
msgid "You'll need to"
msgstr ""
-#: lib/cannery_web/live/pack_live/form_component.html.heex:78
+#: lib/cannery_web/live/pack_live/form_component.html.heex:85
#, elixir-autogen, elixir-format, fuzzy
msgid "Creating..."
msgstr ""
diff --git a/priv/gettext/errors.pot b/priv/gettext/errors.pot
index 3411eb1d..db1c509b 100644
--- a/priv/gettext/errors.pot
+++ b/priv/gettext/errors.pot
@@ -190,7 +190,7 @@ msgstr ""
msgid "can't be blank"
msgstr ""
-#: lib/cannery/ammo/pack.ex:92
+#: lib/cannery/ammo/pack.ex:100
#, elixir-autogen, elixir-format
msgid "Please select a type and container"
msgstr ""
diff --git a/priv/gettext/es/LC_MESSAGES/actions.po b/priv/gettext/es/LC_MESSAGES/actions.po
index 5a004973..a05f604a 100644
--- a/priv/gettext/es/LC_MESSAGES/actions.po
+++ b/priv/gettext/es/LC_MESSAGES/actions.po
@@ -131,7 +131,7 @@ msgstr "Resetear contraseña"
#: lib/cannery_web/components/add_shot_record_component.html.heex:57
#: lib/cannery_web/live/container_live/form_component.html.heex:57
#: lib/cannery_web/live/invite_live/form_component.html.heex:35
-#: lib/cannery_web/live/pack_live/form_component.html.heex:84
+#: lib/cannery_web/live/pack_live/form_component.html.heex:91
#: lib/cannery_web/live/range_live/form_component.html.heex:45
#: lib/cannery_web/live/tag_live/form_component.html.heex:37
#: lib/cannery_web/live/type_live/form_component.html.heex:350
@@ -191,7 +191,7 @@ msgstr "Copiar al portapapeles"
msgid "add a container first"
msgstr "añade primero un contenedor"
-#: lib/cannery_web/live/pack_live/form_component.html.heex:77
+#: lib/cannery_web/live/pack_live/form_component.html.heex:84
#, elixir-autogen, elixir-format
msgid "Create"
msgstr "Crear"
diff --git a/priv/gettext/es/LC_MESSAGES/default.po b/priv/gettext/es/LC_MESSAGES/default.po
index a89300ec..87f82b7c 100644
--- a/priv/gettext/es/LC_MESSAGES/default.po
+++ b/priv/gettext/es/LC_MESSAGES/default.po
@@ -85,8 +85,8 @@ msgid "Case material"
msgstr "Material del casquillo"
#: lib/cannery_web/components/move_pack_component.ex:65
-#: lib/cannery_web/components/pack_table_component.ex:73
-#: lib/cannery_web/live/pack_live/form_component.html.heex:59
+#: lib/cannery_web/components/pack_table_component.ex:76
+#: lib/cannery_web/live/pack_live/form_component.html.heex:66
#, elixir-autogen, elixir-format
msgid "Container"
msgstr "Contenedor"
@@ -105,7 +105,7 @@ msgstr "Contenedores"
msgid "Corrosive"
msgstr "Corrosiva"
-#: lib/cannery_web/components/pack_table_component.ex:91
+#: lib/cannery_web/components/pack_table_component.ex:104
#: lib/cannery_web/live/pack_live/form_component.html.heex:28
#, elixir-autogen, elixir-format
msgid "Count"
@@ -280,7 +280,7 @@ msgstr "Sin etiquetas"
#: lib/cannery_web/components/add_shot_record_component.html.heex:38
#: lib/cannery_web/components/shot_record_table_component.ex:46
-#: lib/cannery_web/live/pack_live/form_component.html.heex:50
+#: lib/cannery_web/live/pack_live/form_component.html.heex:57
#: lib/cannery_web/live/pack_live/show.ex:91
#: lib/cannery_web/live/range_live/form_component.html.heex:30
#, elixir-autogen, elixir-format
@@ -304,7 +304,7 @@ msgstr "En la estantería"
msgid "Pressure"
msgstr "Presión"
-#: lib/cannery_web/components/pack_table_component.ex:81
+#: lib/cannery_web/components/pack_table_component.ex:92
#: lib/cannery_web/live/pack_live/form_component.html.heex:35
#, elixir-autogen, elixir-format
msgid "Price paid"
@@ -392,7 +392,7 @@ msgstr "Trazadora"
#: lib/cannery_web/components/container_table_component.ex:48
#: lib/cannery_web/components/move_pack_component.ex:66
-#: lib/cannery_web/components/pack_table_component.ex:95
+#: lib/cannery_web/components/pack_table_component.ex:108
#: lib/cannery_web/live/container_live/form_component.html.heex:39
#: lib/cannery_web/live/pack_live/form_component.html.heex:22
#, elixir-autogen, elixir-format
@@ -426,7 +426,7 @@ msgid "No tags for this container"
msgstr "Contenedor sin etiquetas"
#: lib/cannery_web/components/core_components/topbar.html.heex:66
-#: lib/cannery_web/components/pack_table_component.ex:77
+#: lib/cannery_web/components/pack_table_component.ex:80
#, elixir-autogen, elixir-format
msgid "Range"
msgstr "Campo de tiro"
@@ -501,8 +501,8 @@ msgstr "Registro de tiros"
#: lib/cannery_web/components/core_components/pack_card.html.heex:42
#: lib/cannery_web/components/core_components/pack_card.html.heex:47
-#: lib/cannery_web/components/pack_table_component.ex:163
-#: lib/cannery_web/components/pack_table_component.ex:246
+#: lib/cannery_web/components/pack_table_component.ex:176
+#: lib/cannery_web/components/pack_table_component.ex:259
#: lib/cannery_web/components/type_table_component.ex:261
#: lib/cannery_web/live/pack_live/show.html.heex:37
#: lib/cannery_web/live/pack_live/show.html.heex:42
@@ -593,15 +593,15 @@ msgstr "Editar etiquetas de %{name}"
msgid "Rounds:"
msgstr "Balas:"
-#: lib/cannery_web/components/pack_table_component.ex:160
-#: lib/cannery_web/components/pack_table_component.ex:242
+#: lib/cannery_web/components/pack_table_component.ex:173
+#: lib/cannery_web/components/pack_table_component.ex:255
#: lib/cannery_web/components/type_table_component.ex:260
#: lib/cannery_web/live/type_live/show.html.heex:154
#, elixir-autogen, elixir-format
msgid "No cost information"
msgstr "No hay información de coste"
-#: lib/cannery_web/components/pack_table_component.ex:83
+#: lib/cannery_web/components/pack_table_component.ex:96
#, elixir-autogen, elixir-format
msgid "% left"
msgstr "% restantes"
@@ -662,7 +662,7 @@ msgstr "Reestablecer contraseña"
msgid "Record Shots"
msgstr "Tiros Récord"
-#: lib/cannery_web/live/pack_live/form_component.html.heex:69
+#: lib/cannery_web/live/pack_live/form_component.html.heex:76
#, elixir-autogen, elixir-format
msgid "Copies"
msgstr "Copias"
@@ -770,7 +770,7 @@ msgid "Leave \"Uses left\" blank to make invite unlimited"
msgstr ""
"Deje \"Usos restantes\" en blanco para hacer las invitaciónes ilimitadas"
-#: lib/cannery_web/components/core_components/pack_card.html.heex:51
+#: lib/cannery_web/components/core_components/pack_card.html.heex:56
#, elixir-autogen, elixir-format
msgid "Container:"
msgstr "Contenedor:"
@@ -782,7 +782,7 @@ msgstr "Contenedor:"
msgid "Show used"
msgstr "Mostrar usadas"
-#: lib/cannery_web/components/pack_table_component.ex:201
+#: lib/cannery_web/components/pack_table_component.ex:214
#: lib/cannery_web/live/pack_live/show.html.heex:19
#, elixir-autogen, elixir-format
msgid "%{percentage}%"
@@ -959,12 +959,12 @@ msgid "Average CPR"
msgstr ""
#: lib/cannery_web/components/core_components/pack_card.html.heex:17
-#: lib/cannery_web/components/pack_table_component.ex:250
+#: lib/cannery_web/components/pack_table_component.ex:263
#, elixir-autogen, elixir-format
msgid "Empty"
msgstr "Vacio"
-#: lib/cannery_web/components/pack_table_component.ex:80
+#: lib/cannery_web/components/pack_table_component.ex:88
#, elixir-autogen, elixir-format
msgid "CPR"
msgstr ""
@@ -974,7 +974,7 @@ msgstr ""
msgid "CPR:"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:87
+#: lib/cannery_web/components/pack_table_component.ex:100
#, elixir-autogen, elixir-format
msgid "Original Count"
msgstr "Cantidad Original"
@@ -989,7 +989,7 @@ msgstr "Cantidad Original:"
msgid "Home"
msgstr "Menu principal"
-#: lib/cannery_web/components/pack_table_component.ex:63
+#: lib/cannery_web/components/pack_table_component.ex:66
#, elixir-autogen, elixir-format
msgid "Last used on"
msgstr "Usada por última vez en"
@@ -999,13 +999,13 @@ msgstr "Usada por última vez en"
msgid "Last used on:"
msgstr "Usada por última vez en:"
-#: lib/cannery_web/components/pack_table_component.ex:181
+#: lib/cannery_web/components/pack_table_component.ex:194
#, elixir-autogen, elixir-format
msgid "Never used"
msgstr "Nunca usada"
-#: lib/cannery_web/components/pack_table_component.ex:68
-#: lib/cannery_web/live/pack_live/form_component.html.heex:42
+#: lib/cannery_web/components/pack_table_component.ex:71
+#: lib/cannery_web/live/pack_live/form_component.html.heex:49
#, elixir-autogen, elixir-format
msgid "Purchased on"
msgstr "Comprada en"
@@ -1183,7 +1183,7 @@ msgstr ""
#: lib/cannery_web/components/container_table_component.ex:67
#: lib/cannery_web/components/move_pack_component.ex:68
-#: lib/cannery_web/components/pack_table_component.ex:59
+#: lib/cannery_web/components/pack_table_component.ex:62
#: lib/cannery_web/components/shot_record_table_component.ex:48
#: lib/cannery_web/components/type_table_component.ex:100
#: lib/cannery_web/live/pack_live/show.ex:93
@@ -1201,7 +1201,7 @@ msgstr ""
msgid "Log out"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:91
+#: lib/cannery_web/components/pack_table_component.ex:104
#, elixir-autogen, elixir-format
msgid "Current Count"
msgstr ""
@@ -1463,3 +1463,14 @@ msgstr "Nuevo tipo de Munición"
#, elixir-autogen, elixir-format, fuzzy
msgid "No Types"
msgstr "Tipo"
+
+#: lib/cannery_web/components/pack_table_component.ex:84
+#: lib/cannery_web/live/pack_live/form_component.html.heex:42
+#, elixir-autogen, elixir-format
+msgid "Lot number"
+msgstr ""
+
+#: lib/cannery_web/components/core_components/pack_card.html.heex:51
+#, elixir-autogen, elixir-format
+msgid "Lot number:"
+msgstr ""
diff --git a/priv/gettext/es/LC_MESSAGES/errors.po b/priv/gettext/es/LC_MESSAGES/errors.po
index 220b3557..f34cc9b7 100644
--- a/priv/gettext/es/LC_MESSAGES/errors.po
+++ b/priv/gettext/es/LC_MESSAGES/errors.po
@@ -206,7 +206,7 @@ msgstr "El recuento debe ser menos de %{count}"
msgid "can't be blank"
msgstr ""
-#: lib/cannery/ammo/pack.ex:92
+#: lib/cannery/ammo/pack.ex:100
#, elixir-autogen, elixir-format, fuzzy
msgid "Please select a type and container"
msgstr "Por favor escoja un tipo de munición y un contenedor"
diff --git a/priv/gettext/es/LC_MESSAGES/prompts.po b/priv/gettext/es/LC_MESSAGES/prompts.po
index 19a1a50f..0e14a163 100644
--- a/priv/gettext/es/LC_MESSAGES/prompts.po
+++ b/priv/gettext/es/LC_MESSAGES/prompts.po
@@ -131,7 +131,7 @@ msgstr "Por favor chequea el correo para verificar tu cuenta"
#: lib/cannery_web/components/add_shot_record_component.html.heex:59
#: lib/cannery_web/live/container_live/form_component.html.heex:59
#: lib/cannery_web/live/invite_live/form_component.html.heex:37
-#: lib/cannery_web/live/pack_live/form_component.html.heex:85
+#: lib/cannery_web/live/pack_live/form_component.html.heex:92
#: lib/cannery_web/live/range_live/form_component.html.heex:47
#: lib/cannery_web/live/tag_live/form_component.html.heex:39
#: lib/cannery_web/live/type_live/form_component.html.heex:351
@@ -218,7 +218,7 @@ msgstr "%{name} eliminado exitosamente"
msgid "You'll need to"
msgstr "Necesitará hacerlo"
-#: lib/cannery_web/live/pack_live/form_component.html.heex:78
+#: lib/cannery_web/live/pack_live/form_component.html.heex:85
#, elixir-autogen, elixir-format
msgid "Creating..."
msgstr "Creando..."
diff --git a/priv/gettext/fr/LC_MESSAGES/actions.po b/priv/gettext/fr/LC_MESSAGES/actions.po
index 18237c07..14cfd03d 100644
--- a/priv/gettext/fr/LC_MESSAGES/actions.po
+++ b/priv/gettext/fr/LC_MESSAGES/actions.po
@@ -131,7 +131,7 @@ msgstr "Réinitialisé le mot de passe"
#: lib/cannery_web/components/add_shot_record_component.html.heex:57
#: lib/cannery_web/live/container_live/form_component.html.heex:57
#: lib/cannery_web/live/invite_live/form_component.html.heex:35
-#: lib/cannery_web/live/pack_live/form_component.html.heex:84
+#: lib/cannery_web/live/pack_live/form_component.html.heex:91
#: lib/cannery_web/live/range_live/form_component.html.heex:45
#: lib/cannery_web/live/tag_live/form_component.html.heex:37
#: lib/cannery_web/live/type_live/form_component.html.heex:350
@@ -191,7 +191,7 @@ msgstr "Copier dans le presse-papier"
msgid "add a container first"
msgstr "ajouter un conteneur en premier"
-#: lib/cannery_web/live/pack_live/form_component.html.heex:77
+#: lib/cannery_web/live/pack_live/form_component.html.heex:84
#, elixir-autogen, elixir-format
msgid "Create"
msgstr "Créer"
diff --git a/priv/gettext/fr/LC_MESSAGES/default.po b/priv/gettext/fr/LC_MESSAGES/default.po
index aa915740..67036062 100644
--- a/priv/gettext/fr/LC_MESSAGES/default.po
+++ b/priv/gettext/fr/LC_MESSAGES/default.po
@@ -85,8 +85,8 @@ msgid "Case material"
msgstr "Matériau de la caisse"
#: lib/cannery_web/components/move_pack_component.ex:65
-#: lib/cannery_web/components/pack_table_component.ex:73
-#: lib/cannery_web/live/pack_live/form_component.html.heex:59
+#: lib/cannery_web/components/pack_table_component.ex:76
+#: lib/cannery_web/live/pack_live/form_component.html.heex:66
#, elixir-autogen, elixir-format
msgid "Container"
msgstr "Conteneur"
@@ -105,7 +105,7 @@ msgstr "Conteneurs"
msgid "Corrosive"
msgstr "Corrosive"
-#: lib/cannery_web/components/pack_table_component.ex:91
+#: lib/cannery_web/components/pack_table_component.ex:104
#: lib/cannery_web/live/pack_live/form_component.html.heex:28
#, elixir-autogen, elixir-format
msgid "Count"
@@ -280,7 +280,7 @@ msgstr "Aucun tag"
#: lib/cannery_web/components/add_shot_record_component.html.heex:38
#: lib/cannery_web/components/shot_record_table_component.ex:46
-#: lib/cannery_web/live/pack_live/form_component.html.heex:50
+#: lib/cannery_web/live/pack_live/form_component.html.heex:57
#: lib/cannery_web/live/pack_live/show.ex:91
#: lib/cannery_web/live/range_live/form_component.html.heex:30
#, elixir-autogen, elixir-format
@@ -304,7 +304,7 @@ msgstr "Sur l’étagère"
msgid "Pressure"
msgstr "Pression"
-#: lib/cannery_web/components/pack_table_component.ex:81
+#: lib/cannery_web/components/pack_table_component.ex:92
#: lib/cannery_web/live/pack_live/form_component.html.heex:35
#, elixir-autogen, elixir-format
msgid "Price paid"
@@ -393,7 +393,7 @@ msgstr "Traceuse"
#: lib/cannery_web/components/container_table_component.ex:48
#: lib/cannery_web/components/move_pack_component.ex:66
-#: lib/cannery_web/components/pack_table_component.ex:95
+#: lib/cannery_web/components/pack_table_component.ex:108
#: lib/cannery_web/live/container_live/form_component.html.heex:39
#: lib/cannery_web/live/pack_live/form_component.html.heex:22
#, elixir-autogen, elixir-format
@@ -427,7 +427,7 @@ msgid "No tags for this container"
msgstr "Aucun tag pour ce conteneur"
#: lib/cannery_web/components/core_components/topbar.html.heex:66
-#: lib/cannery_web/components/pack_table_component.ex:77
+#: lib/cannery_web/components/pack_table_component.ex:80
#, elixir-autogen, elixir-format
msgid "Range"
msgstr "Portée"
@@ -502,8 +502,8 @@ msgstr "Évènements de tir"
#: lib/cannery_web/components/core_components/pack_card.html.heex:42
#: lib/cannery_web/components/core_components/pack_card.html.heex:47
-#: lib/cannery_web/components/pack_table_component.ex:163
-#: lib/cannery_web/components/pack_table_component.ex:246
+#: lib/cannery_web/components/pack_table_component.ex:176
+#: lib/cannery_web/components/pack_table_component.ex:259
#: lib/cannery_web/components/type_table_component.ex:261
#: lib/cannery_web/live/pack_live/show.html.heex:37
#: lib/cannery_web/live/pack_live/show.html.heex:42
@@ -594,15 +594,15 @@ msgstr "Éditer les tags de %{name}"
msgid "Rounds:"
msgstr "Cartouches :"
-#: lib/cannery_web/components/pack_table_component.ex:160
-#: lib/cannery_web/components/pack_table_component.ex:242
+#: lib/cannery_web/components/pack_table_component.ex:173
+#: lib/cannery_web/components/pack_table_component.ex:255
#: lib/cannery_web/components/type_table_component.ex:260
#: lib/cannery_web/live/type_live/show.html.heex:154
#, elixir-autogen, elixir-format
msgid "No cost information"
msgstr "Aucune information de prix"
-#: lib/cannery_web/components/pack_table_component.ex:83
+#: lib/cannery_web/components/pack_table_component.ex:96
#, elixir-autogen, elixir-format
msgid "% left"
msgstr "% restante"
@@ -663,7 +663,7 @@ msgstr "Réinitialiser votre mot de passe"
msgid "Record Shots"
msgstr "Enregistrer des tirs"
-#: lib/cannery_web/live/pack_live/form_component.html.heex:69
+#: lib/cannery_web/live/pack_live/form_component.html.heex:76
#, elixir-autogen, elixir-format
msgid "Copies"
msgstr "Exemplaires"
@@ -771,7 +771,7 @@ msgid "Leave \"Uses left\" blank to make invite unlimited"
msgstr ""
"Laissez \"Utilisations restantes\" vide pour rendre l'invitation illimitée"
-#: lib/cannery_web/components/core_components/pack_card.html.heex:51
+#: lib/cannery_web/components/core_components/pack_card.html.heex:56
#, elixir-autogen, elixir-format, fuzzy
msgid "Container:"
msgstr "Conteneur"
@@ -783,7 +783,7 @@ msgstr "Conteneur"
msgid "Show used"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:201
+#: lib/cannery_web/components/pack_table_component.ex:214
#: lib/cannery_web/live/pack_live/show.html.heex:19
#, elixir-autogen, elixir-format
msgid "%{percentage}%"
@@ -960,12 +960,12 @@ msgid "Average CPR"
msgstr ""
#: lib/cannery_web/components/core_components/pack_card.html.heex:17
-#: lib/cannery_web/components/pack_table_component.ex:250
+#: lib/cannery_web/components/pack_table_component.ex:263
#, elixir-autogen, elixir-format
msgid "Empty"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:80
+#: lib/cannery_web/components/pack_table_component.ex:88
#, elixir-autogen, elixir-format
msgid "CPR"
msgstr ""
@@ -975,7 +975,7 @@ msgstr ""
msgid "CPR:"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:87
+#: lib/cannery_web/components/pack_table_component.ex:100
#, elixir-autogen, elixir-format, fuzzy
msgid "Original Count"
msgstr "Nombre original :"
@@ -990,7 +990,7 @@ msgstr "Nombre original :"
msgid "Home"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:63
+#: lib/cannery_web/components/pack_table_component.ex:66
#, elixir-autogen, elixir-format
msgid "Last used on"
msgstr ""
@@ -1000,13 +1000,13 @@ msgstr ""
msgid "Last used on:"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:181
+#: lib/cannery_web/components/pack_table_component.ex:194
#, elixir-autogen, elixir-format
msgid "Never used"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:68
-#: lib/cannery_web/live/pack_live/form_component.html.heex:42
+#: lib/cannery_web/components/pack_table_component.ex:71
+#: lib/cannery_web/live/pack_live/form_component.html.heex:49
#, elixir-autogen, elixir-format
msgid "Purchased on"
msgstr ""
@@ -1184,7 +1184,7 @@ msgstr ""
#: lib/cannery_web/components/container_table_component.ex:67
#: lib/cannery_web/components/move_pack_component.ex:68
-#: lib/cannery_web/components/pack_table_component.ex:59
+#: lib/cannery_web/components/pack_table_component.ex:62
#: lib/cannery_web/components/shot_record_table_component.ex:48
#: lib/cannery_web/components/type_table_component.ex:100
#: lib/cannery_web/live/pack_live/show.ex:93
@@ -1202,7 +1202,7 @@ msgstr ""
msgid "Log out"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:91
+#: lib/cannery_web/components/pack_table_component.ex:104
#, elixir-autogen, elixir-format
msgid "Current Count"
msgstr ""
@@ -1464,3 +1464,14 @@ msgstr "Nouveau type de munition"
#, elixir-autogen, elixir-format, fuzzy
msgid "No Types"
msgstr "Type"
+
+#: lib/cannery_web/components/pack_table_component.ex:84
+#: lib/cannery_web/live/pack_live/form_component.html.heex:42
+#, elixir-autogen, elixir-format
+msgid "Lot number"
+msgstr ""
+
+#: lib/cannery_web/components/core_components/pack_card.html.heex:51
+#, elixir-autogen, elixir-format
+msgid "Lot number:"
+msgstr ""
diff --git a/priv/gettext/fr/LC_MESSAGES/errors.po b/priv/gettext/fr/LC_MESSAGES/errors.po
index 86cddd77..bbdeb5b9 100644
--- a/priv/gettext/fr/LC_MESSAGES/errors.po
+++ b/priv/gettext/fr/LC_MESSAGES/errors.po
@@ -207,7 +207,7 @@ msgstr "La quantité doit être inférieur à %{count}"
msgid "can't be blank"
msgstr ""
-#: lib/cannery/ammo/pack.ex:92
+#: lib/cannery/ammo/pack.ex:100
#, elixir-autogen, elixir-format, fuzzy
msgid "Please select a type and container"
msgstr "Veuillez choisir un type de munitions et un conteneur"
diff --git a/priv/gettext/fr/LC_MESSAGES/prompts.po b/priv/gettext/fr/LC_MESSAGES/prompts.po
index 01ef82bd..dd39548b 100644
--- a/priv/gettext/fr/LC_MESSAGES/prompts.po
+++ b/priv/gettext/fr/LC_MESSAGES/prompts.po
@@ -132,7 +132,7 @@ msgstr "Veuillez vérifier votre mél pour confirmer votre compte"
#: lib/cannery_web/components/add_shot_record_component.html.heex:59
#: lib/cannery_web/live/container_live/form_component.html.heex:59
#: lib/cannery_web/live/invite_live/form_component.html.heex:37
-#: lib/cannery_web/live/pack_live/form_component.html.heex:85
+#: lib/cannery_web/live/pack_live/form_component.html.heex:92
#: lib/cannery_web/live/range_live/form_component.html.heex:47
#: lib/cannery_web/live/tag_live/form_component.html.heex:39
#: lib/cannery_web/live/type_live/form_component.html.heex:351
@@ -220,7 +220,7 @@ msgstr "%{name} retiré avec succès"
msgid "You'll need to"
msgstr "Vous aurez besoin de"
-#: lib/cannery_web/live/pack_live/form_component.html.heex:78
+#: lib/cannery_web/live/pack_live/form_component.html.heex:85
#, elixir-autogen, elixir-format
msgid "Creating..."
msgstr "Création en cours…"
diff --git a/priv/gettext/ga/LC_MESSAGES/actions.po b/priv/gettext/ga/LC_MESSAGES/actions.po
index a7a1a10b..d721dd1b 100644
--- a/priv/gettext/ga/LC_MESSAGES/actions.po
+++ b/priv/gettext/ga/LC_MESSAGES/actions.po
@@ -129,7 +129,7 @@ msgstr ""
#: lib/cannery_web/components/add_shot_record_component.html.heex:57
#: lib/cannery_web/live/container_live/form_component.html.heex:57
#: lib/cannery_web/live/invite_live/form_component.html.heex:35
-#: lib/cannery_web/live/pack_live/form_component.html.heex:84
+#: lib/cannery_web/live/pack_live/form_component.html.heex:91
#: lib/cannery_web/live/range_live/form_component.html.heex:45
#: lib/cannery_web/live/tag_live/form_component.html.heex:37
#: lib/cannery_web/live/type_live/form_component.html.heex:350
@@ -189,7 +189,7 @@ msgstr ""
msgid "add a container first"
msgstr ""
-#: lib/cannery_web/live/pack_live/form_component.html.heex:77
+#: lib/cannery_web/live/pack_live/form_component.html.heex:84
#, elixir-autogen, elixir-format
msgid "Create"
msgstr ""
diff --git a/priv/gettext/ga/LC_MESSAGES/default.po b/priv/gettext/ga/LC_MESSAGES/default.po
index 6d652587..72092357 100644
--- a/priv/gettext/ga/LC_MESSAGES/default.po
+++ b/priv/gettext/ga/LC_MESSAGES/default.po
@@ -83,8 +83,8 @@ msgid "Case material"
msgstr ""
#: lib/cannery_web/components/move_pack_component.ex:65
-#: lib/cannery_web/components/pack_table_component.ex:73
-#: lib/cannery_web/live/pack_live/form_component.html.heex:59
+#: lib/cannery_web/components/pack_table_component.ex:76
+#: lib/cannery_web/live/pack_live/form_component.html.heex:66
#, elixir-autogen, elixir-format
msgid "Container"
msgstr ""
@@ -103,7 +103,7 @@ msgstr ""
msgid "Corrosive"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:91
+#: lib/cannery_web/components/pack_table_component.ex:104
#: lib/cannery_web/live/pack_live/form_component.html.heex:28
#, elixir-autogen, elixir-format
msgid "Count"
@@ -278,7 +278,7 @@ msgstr ""
#: lib/cannery_web/components/add_shot_record_component.html.heex:38
#: lib/cannery_web/components/shot_record_table_component.ex:46
-#: lib/cannery_web/live/pack_live/form_component.html.heex:50
+#: lib/cannery_web/live/pack_live/form_component.html.heex:57
#: lib/cannery_web/live/pack_live/show.ex:91
#: lib/cannery_web/live/range_live/form_component.html.heex:30
#, elixir-autogen, elixir-format
@@ -302,7 +302,7 @@ msgstr ""
msgid "Pressure"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:81
+#: lib/cannery_web/components/pack_table_component.ex:92
#: lib/cannery_web/live/pack_live/form_component.html.heex:35
#, elixir-autogen, elixir-format
msgid "Price paid"
@@ -387,7 +387,7 @@ msgstr ""
#: lib/cannery_web/components/container_table_component.ex:48
#: lib/cannery_web/components/move_pack_component.ex:66
-#: lib/cannery_web/components/pack_table_component.ex:95
+#: lib/cannery_web/components/pack_table_component.ex:108
#: lib/cannery_web/live/container_live/form_component.html.heex:39
#: lib/cannery_web/live/pack_live/form_component.html.heex:22
#, elixir-autogen, elixir-format
@@ -421,7 +421,7 @@ msgid "No tags for this container"
msgstr ""
#: lib/cannery_web/components/core_components/topbar.html.heex:66
-#: lib/cannery_web/components/pack_table_component.ex:77
+#: lib/cannery_web/components/pack_table_component.ex:80
#, elixir-autogen, elixir-format
msgid "Range"
msgstr ""
@@ -496,8 +496,8 @@ msgstr ""
#: lib/cannery_web/components/core_components/pack_card.html.heex:42
#: lib/cannery_web/components/core_components/pack_card.html.heex:47
-#: lib/cannery_web/components/pack_table_component.ex:163
-#: lib/cannery_web/components/pack_table_component.ex:246
+#: lib/cannery_web/components/pack_table_component.ex:176
+#: lib/cannery_web/components/pack_table_component.ex:259
#: lib/cannery_web/components/type_table_component.ex:261
#: lib/cannery_web/live/pack_live/show.html.heex:37
#: lib/cannery_web/live/pack_live/show.html.heex:42
@@ -588,15 +588,15 @@ msgstr ""
msgid "Rounds:"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:160
-#: lib/cannery_web/components/pack_table_component.ex:242
+#: lib/cannery_web/components/pack_table_component.ex:173
+#: lib/cannery_web/components/pack_table_component.ex:255
#: lib/cannery_web/components/type_table_component.ex:260
#: lib/cannery_web/live/type_live/show.html.heex:154
#, elixir-autogen, elixir-format
msgid "No cost information"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:83
+#: lib/cannery_web/components/pack_table_component.ex:96
#, elixir-autogen, elixir-format
msgid "% left"
msgstr ""
@@ -657,7 +657,7 @@ msgstr ""
msgid "Record Shots"
msgstr ""
-#: lib/cannery_web/live/pack_live/form_component.html.heex:69
+#: lib/cannery_web/live/pack_live/form_component.html.heex:76
#, elixir-autogen, elixir-format
msgid "Copies"
msgstr ""
@@ -764,7 +764,7 @@ msgstr ""
msgid "Leave \"Uses left\" blank to make invite unlimited"
msgstr ""
-#: lib/cannery_web/components/core_components/pack_card.html.heex:51
+#: lib/cannery_web/components/core_components/pack_card.html.heex:56
#, elixir-autogen, elixir-format
msgid "Container:"
msgstr ""
@@ -776,7 +776,7 @@ msgstr ""
msgid "Show used"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:201
+#: lib/cannery_web/components/pack_table_component.ex:214
#: lib/cannery_web/live/pack_live/show.html.heex:19
#, elixir-autogen, elixir-format
msgid "%{percentage}%"
@@ -953,12 +953,12 @@ msgid "Average CPR"
msgstr ""
#: lib/cannery_web/components/core_components/pack_card.html.heex:17
-#: lib/cannery_web/components/pack_table_component.ex:250
+#: lib/cannery_web/components/pack_table_component.ex:263
#, elixir-autogen, elixir-format
msgid "Empty"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:80
+#: lib/cannery_web/components/pack_table_component.ex:88
#, elixir-autogen, elixir-format
msgid "CPR"
msgstr ""
@@ -968,7 +968,7 @@ msgstr ""
msgid "CPR:"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:87
+#: lib/cannery_web/components/pack_table_component.ex:100
#, elixir-autogen, elixir-format, fuzzy
msgid "Original Count"
msgstr ""
@@ -983,7 +983,7 @@ msgstr ""
msgid "Home"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:63
+#: lib/cannery_web/components/pack_table_component.ex:66
#, elixir-autogen, elixir-format
msgid "Last used on"
msgstr ""
@@ -993,13 +993,13 @@ msgstr ""
msgid "Last used on:"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:181
+#: lib/cannery_web/components/pack_table_component.ex:194
#, elixir-autogen, elixir-format
msgid "Never used"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:68
-#: lib/cannery_web/live/pack_live/form_component.html.heex:42
+#: lib/cannery_web/components/pack_table_component.ex:71
+#: lib/cannery_web/live/pack_live/form_component.html.heex:49
#, elixir-autogen, elixir-format
msgid "Purchased on"
msgstr ""
@@ -1175,7 +1175,7 @@ msgstr ""
#: lib/cannery_web/components/container_table_component.ex:67
#: lib/cannery_web/components/move_pack_component.ex:68
-#: lib/cannery_web/components/pack_table_component.ex:59
+#: lib/cannery_web/components/pack_table_component.ex:62
#: lib/cannery_web/components/shot_record_table_component.ex:48
#: lib/cannery_web/components/type_table_component.ex:100
#: lib/cannery_web/live/pack_live/show.ex:93
@@ -1193,7 +1193,7 @@ msgstr ""
msgid "Log out"
msgstr ""
-#: lib/cannery_web/components/pack_table_component.ex:91
+#: lib/cannery_web/components/pack_table_component.ex:104
#, elixir-autogen, elixir-format
msgid "Current Count"
msgstr ""
@@ -1455,3 +1455,14 @@ msgstr ""
#, elixir-autogen, elixir-format, fuzzy
msgid "No Types"
msgstr ""
+
+#: lib/cannery_web/components/pack_table_component.ex:84
+#: lib/cannery_web/live/pack_live/form_component.html.heex:42
+#, elixir-autogen, elixir-format
+msgid "Lot number"
+msgstr ""
+
+#: lib/cannery_web/components/core_components/pack_card.html.heex:51
+#, elixir-autogen, elixir-format
+msgid "Lot number:"
+msgstr ""
diff --git a/priv/gettext/ga/LC_MESSAGES/errors.po b/priv/gettext/ga/LC_MESSAGES/errors.po
index 7cfa37d9..4e44bd3e 100644
--- a/priv/gettext/ga/LC_MESSAGES/errors.po
+++ b/priv/gettext/ga/LC_MESSAGES/errors.po
@@ -206,7 +206,7 @@ msgstr ""
msgid "can't be blank"
msgstr ""
-#: lib/cannery/ammo/pack.ex:92
+#: lib/cannery/ammo/pack.ex:100
#, elixir-autogen, elixir-format, fuzzy
msgid "Please select a type and container"
msgstr ""
diff --git a/priv/gettext/ga/LC_MESSAGES/prompts.po b/priv/gettext/ga/LC_MESSAGES/prompts.po
index 79873e11..18c3938e 100644
--- a/priv/gettext/ga/LC_MESSAGES/prompts.po
+++ b/priv/gettext/ga/LC_MESSAGES/prompts.po
@@ -123,7 +123,7 @@ msgstr ""
#: lib/cannery_web/components/add_shot_record_component.html.heex:59
#: lib/cannery_web/live/container_live/form_component.html.heex:59
#: lib/cannery_web/live/invite_live/form_component.html.heex:37
-#: lib/cannery_web/live/pack_live/form_component.html.heex:85
+#: lib/cannery_web/live/pack_live/form_component.html.heex:92
#: lib/cannery_web/live/range_live/form_component.html.heex:47
#: lib/cannery_web/live/tag_live/form_component.html.heex:39
#: lib/cannery_web/live/type_live/form_component.html.heex:351
@@ -209,7 +209,7 @@ msgstr ""
msgid "You'll need to"
msgstr ""
-#: lib/cannery_web/live/pack_live/form_component.html.heex:78
+#: lib/cannery_web/live/pack_live/form_component.html.heex:85
#, elixir-autogen, elixir-format
msgid "Creating..."
msgstr ""
diff --git a/priv/gettext/prompts.pot b/priv/gettext/prompts.pot
index d2a903e0..b9824b0c 100644
--- a/priv/gettext/prompts.pot
+++ b/priv/gettext/prompts.pot
@@ -112,7 +112,7 @@ msgstr ""
#: lib/cannery_web/components/add_shot_record_component.html.heex:59
#: lib/cannery_web/live/container_live/form_component.html.heex:59
#: lib/cannery_web/live/invite_live/form_component.html.heex:37
-#: lib/cannery_web/live/pack_live/form_component.html.heex:85
+#: lib/cannery_web/live/pack_live/form_component.html.heex:92
#: lib/cannery_web/live/range_live/form_component.html.heex:47
#: lib/cannery_web/live/tag_live/form_component.html.heex:39
#: lib/cannery_web/live/type_live/form_component.html.heex:351
@@ -198,7 +198,7 @@ msgstr ""
msgid "You'll need to"
msgstr ""
-#: lib/cannery_web/live/pack_live/form_component.html.heex:78
+#: lib/cannery_web/live/pack_live/form_component.html.heex:85
#, elixir-autogen, elixir-format
msgid "Creating..."
msgstr ""
diff --git a/priv/repo/migrations/20230331031737_add_lot_number_to_packs.exs b/priv/repo/migrations/20230331031737_add_lot_number_to_packs.exs
new file mode 100644
index 00000000..bf08ac44
--- /dev/null
+++ b/priv/repo/migrations/20230331031737_add_lot_number_to_packs.exs
@@ -0,0 +1,9 @@
+defmodule Cannery.Repo.Migrations.AddLotNumberToPacks do
+ use Ecto.Migration
+
+ def change do
+ alter table(:packs) do
+ add :lot_number, :string
+ end
+ end
+end
diff --git a/test/cannery_web/controllers/export_controller_test.exs b/test/cannery_web/controllers/export_controller_test.exs
index d5b7fcb6..7d4e61cd 100644
--- a/test/cannery_web/controllers/export_controller_test.exs
+++ b/test/cannery_web/controllers/export_controller_test.exs
@@ -49,6 +49,7 @@ defmodule CanneryWeb.ExportControllerTest do
"id" => pack.id,
"notes" => pack.notes,
"price_paid" => pack.price_paid,
+ "lot_number" => pack.lot_number,
"staged" => pack.staged,
"used_count" => pack |> ActivityLog.get_used_count(current_user),
"original_count" => pack |> Ammo.get_original_count(current_user),