Compare commits

..

2 Commits

Author SHA1 Message Date
81f21a02c4 export shotgun fields
All checks were successful
continuous-integration/drone/push Build is passing
2023-03-31 22:34:48 -04:00
9a17d4ad24 add lot number to packs 2023-03-30 23:36:19 -04:00
33 changed files with 374 additions and 229 deletions

View File

@ -1,3 +1,8 @@
# v0.9.2
- Add lot number to packs
- Don't show price paid and lot number columns when displaying packs if not used
- Fix additional shotgun fields not being exportable
# v0.9.1
- Rename ammo type's "type" to "class" to avoid confusion
- Rename "ammo type" to "type" to avoid confusion

View File

@ -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

View File

@ -13,28 +13,38 @@ defmodule Cannery.Ammo.Type do
@derive {Jason.Encoder,
only: [
:id,
:name,
:desc,
:class,
:bullet_type,
:bullet_core,
:cartridge,
:caliber,
:case_material,
:jacket_type,
:muzzle_velocity,
:powder_type,
:powder_grains_per_charge,
:grains,
:pressure,
:primer_type,
:firing_type,
:manufacturer,
:upc,
:tracer,
:incendiary,
:blank,
:corrosive,
:manufacturer,
:upc
:cartridge,
:jacket_type,
:powder_grains_per_charge,
:muzzle_velocity,
:wadding,
:shot_type,
:shot_material,
:shot_size,
:unfired_length,
:brass_height,
:chamber_size,
:load_grains,
:shot_charge_weight,
:dram_equivalent
]}
@primary_key {:id, :binary_id, autogenerate: true}
@foreign_key_type :binary_id
@ -95,17 +105,23 @@ defmodule Cannery.Ammo.Type do
class: class(),
bullet_type: String.t() | nil,
bullet_core: String.t() | nil,
cartridge: String.t() | nil,
caliber: String.t() | nil,
case_material: String.t() | nil,
jacket_type: String.t() | nil,
muzzle_velocity: integer() | nil,
powder_type: String.t() | nil,
powder_grains_per_charge: integer() | nil,
grains: integer() | nil,
pressure: String.t() | nil,
primer_type: String.t() | nil,
firing_type: String.t() | nil,
manufacturer: String.t() | nil,
upc: String.t() | nil,
tracer: boolean(),
incendiary: boolean(),
blank: boolean(),
corrosive: boolean(),
cartridge: String.t() | nil,
jacket_type: String.t() | nil,
powder_grains_per_charge: integer() | nil,
muzzle_velocity: integer() | nil,
wadding: String.t() | nil,
shot_type: String.t() | nil,
shot_material: String.t() | nil,
@ -116,12 +132,6 @@ defmodule Cannery.Ammo.Type do
load_grains: integer() | nil,
shot_charge_weight: String.t() | nil,
dram_equivalent: String.t() | nil,
tracer: boolean(),
incendiary: boolean(),
blank: boolean(),
corrosive: boolean(),
manufacturer: String.t() | nil,
upc: String.t() | nil,
user_id: User.id(),
packs: [Pack.t()] | nil,
inserted_at: NaiveDateTime.t(),
@ -140,17 +150,23 @@ defmodule Cannery.Ammo.Type do
:class,
:bullet_type,
:bullet_core,
:cartridge,
:caliber,
:case_material,
:jacket_type,
:muzzle_velocity,
:powder_type,
:powder_grains_per_charge,
:grains,
:pressure,
:primer_type,
:firing_type,
:manufacturer,
:upc,
:tracer,
:incendiary,
:blank,
:corrosive,
:cartridge,
:jacket_type,
:powder_grains_per_charge,
:muzzle_velocity,
:wadding,
:shot_type,
:shot_material,
@ -160,29 +176,26 @@ defmodule Cannery.Ammo.Type do
:chamber_size,
:load_grains,
:shot_charge_weight,
:dram_equivalent,
:tracer,
:incendiary,
:blank,
:corrosive,
:manufacturer,
:upc
:dram_equivalent
]
@spec string_fields() :: [atom()]
defp string_fields,
do: [
:name,
:desc,
:bullet_type,
:bullet_core,
:cartridge,
:caliber,
:case_material,
:jacket_type,
:powder_type,
:pressure,
:primer_type,
:firing_type,
:manufacturer,
:upc,
:cartridge,
:jacket_type,
:wadding,
:shot_type,
:shot_material,
@ -191,9 +204,7 @@ defmodule Cannery.Ammo.Type do
:brass_height,
:chamber_size,
:shot_charge_weight,
:dram_equivalent,
:manufacturer,
:upc
:dram_equivalent
]
@doc false

View File

@ -47,6 +47,11 @@
<%= gettext("$%{amount}", amount: display_currency(@cpr)) %>
</span>
<span :if={@pack.lot_number} class="rounded-lg title text-lg">
<%= gettext("Lot number:") %>
<%= @pack.lot_number %>
</span>
<span :if={@container} class="rounded-lg title text-lg">
<%= gettext("Container:") %>

View File

@ -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

View File

@ -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",

View File

@ -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(),

View File

@ -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 ""

View File

@ -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"

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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..."

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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"

View File

@ -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 ""

View File

@ -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"

View File

@ -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..."

View File

@ -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"

View File

@ -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 ""

View File

@ -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"

View File

@ -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…"

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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

View File

@ -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),
@ -57,28 +58,38 @@ defmodule CanneryWeb.ExportControllerTest do
}
ideal_type = %{
"blank" => type.blank,
"bullet_core" => type.bullet_core,
"bullet_type" => type.bullet_type,
"caliber" => type.caliber,
"cartridge" => type.cartridge,
"case_material" => type.case_material,
"corrosive" => type.corrosive,
"desc" => type.desc,
"firing_type" => type.firing_type,
"grains" => type.grains,
"id" => type.id,
"incendiary" => type.incendiary,
"jacket_type" => type.jacket_type,
"manufacturer" => type.manufacturer,
"muzzle_velocity" => type.muzzle_velocity,
"name" => type.name,
"powder_grains_per_charge" => type.powder_grains_per_charge,
"desc" => type.desc,
"class" => to_string(type.class),
"bullet_type" => type.bullet_type,
"bullet_core" => type.bullet_core,
"caliber" => type.caliber,
"case_material" => type.case_material,
"powder_type" => type.powder_type,
"grains" => type.grains,
"pressure" => type.pressure,
"primer_type" => type.primer_type,
"tracer" => type.tracer,
"firing_type" => type.firing_type,
"manufacturer" => type.manufacturer,
"upc" => type.upc,
"tracer" => type.tracer,
"incendiary" => type.incendiary,
"blank" => type.blank,
"corrosive" => type.corrosive,
"cartridge" => type.cartridge,
"jacket_type" => type.jacket_type,
"powder_grains_per_charge" => type.powder_grains_per_charge,
"muzzle_velocity" => type.muzzle_velocity,
"wadding" => type.wadding,
"shot_type" => type.shot_type,
"shot_material" => type.shot_material,
"shot_size" => type.shot_size,
"unfired_length" => type.unfired_length,
"brass_height" => type.brass_height,
"chamber_size" => type.chamber_size,
"load_grains" => type.load_grains,
"shot_charge_weight" => type.shot_charge_weight,
"dram_equivalent" => type.dram_equivalent,
"average_cost" => type |> Ammo.get_average_cost_for_type(current_user),
"round_count" => type |> Ammo.get_round_count_for_type(current_user),
"used_count" => type |> ActivityLog.get_used_count_for_type(current_user),