Skip to content

Commit 81c06d3

Browse files
committed
Improvements
1 parent beee6b4 commit 81c06d3

11 files changed

Lines changed: 539 additions & 261 deletions

File tree

landolfio/inventory/locale/nl/LC_MESSAGES/django.po

Lines changed: 40 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ msgid ""
77
msgstr ""
88
"Project-Id-Version: \n"
99
"Report-Msgid-Bugs-To: \n"
10-
"POT-Creation-Date: 2025-09-07 12:56+0200\n"
10+
"POT-Creation-Date: 2025-09-07 20:19+0200\n"
1111
"PO-Revision-Date: 2023-02-21 13:39+0100\n"
1212
"Last-Translator: Job Doesburg <job.doesburg@gmail.com>\n"
1313
"Language-Team: \n"
@@ -18,44 +18,44 @@ msgstr ""
1818
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
1919
"X-Generator: Poedit 3.2.2\n"
2020

21-
#: inventory/admin.py:191
21+
#: inventory/admin.py:164
2222
msgid "Name"
2323
msgstr "Naam"
2424

25-
#: inventory/admin.py:213
25+
#: inventory/admin.py:186
2626
msgid "Financial"
2727
msgstr "Financieel"
2828

29-
#: inventory/admin.py:245
29+
#: inventory/admin.py:218
3030
msgid "nr"
3131
msgstr ""
3232

33-
#: inventory/admin.py:253 inventory/models/attachment.py:39
33+
#: inventory/admin.py:226 inventory/models/attachment.py:39
3434
msgid "attachments"
3535
msgstr "bijlagen"
3636

37-
#: inventory/admin.py:261 inventory/models/collection.py:7
37+
#: inventory/admin.py:234 inventory/models/collection.py:7
3838
msgid "commerce"
3939
msgstr "handelsgoed"
4040

41-
#: inventory/admin.py:269 inventory/models/asset.py:49
41+
#: inventory/admin.py:242 inventory/models/asset.py:49
4242
#: inventory/models/asset.py:61
4343
msgid "amortized"
4444
msgstr "afgeschreven"
4545

46-
#: inventory/admin.py:277
46+
#: inventory/admin.py:250
4747
msgid "rented"
4848
msgstr "verhuurd"
4949

50-
#: inventory/admin.py:285
50+
#: inventory/admin.py:258
5151
msgid "has rental agreement"
5252
msgstr "heeft huurovereenkomst"
5353

54-
#: inventory/admin.py:293
54+
#: inventory/admin.py:266
5555
msgid "has loan agreement"
5656
msgstr "heeft leenovereenkomst"
5757

58-
#: inventory/admin.py:300 inventory/models/asset.py:639
58+
#: inventory/admin.py:273 inventory/models/asset.py:676
5959
#: inventory/models/asset_on_document_line.py:19
6060
#: inventory/models/asset_on_document_line.py:69
6161
#: inventory/models/asset_on_document_line.py:117
@@ -65,52 +65,52 @@ msgstr "heeft leenovereenkomst"
6565
msgid "asset"
6666
msgstr "eigendom"
6767

68-
#: inventory/admin.py:310
68+
#: inventory/admin.py:283
6969
#, fuzzy
7070
#| msgid "margin"
7171
msgid "margin asset"
7272
msgstr "marge"
7373

74-
#: inventory/admin.py:317 inventory/models/asset.py:145
74+
#: inventory/admin.py:290 inventory/models/asset.py:145
7575
#: inventory/templates/admin/inventory/asset/overview/index.html:33
7676
#: inventory/templates/admin/inventory/asset/view_asset/includes/recurring_sales_invoices.html:17
7777
#: inventory/templates/admin/inventory/asset/view_asset/includes/sidebar.html:50
7878
msgid "start date"
7979
msgstr "startdatum"
8080

81-
#: inventory/admin.py:323
81+
#: inventory/admin.py:296
8282
#: inventory/templates/admin/inventory/asset/view_asset/includes/sidebar.html:51
8383
msgid "Moneybird Asset"
8484
msgstr ""
8585

86-
#: inventory/admin.py:339
86+
#: inventory/admin.py:312
8787
msgid "Moneybird Asset URL"
8888
msgstr ""
8989

90-
#: inventory/admin.py:355
90+
#: inventory/admin.py:328
9191
#: inventory/templates/admin/inventory/asset/view_asset/includes/sidebar.html:56
9292
msgid "disposed"
9393
msgstr ""
9494

95-
#: inventory/admin.py:362
95+
#: inventory/admin.py:335
9696
msgid "disposal reason"
9797
msgstr ""
9898

99-
#: inventory/admin.py:510
99+
#: inventory/admin.py:483
100100
#, fuzzy
101101
#| msgid "categories"
102102
msgid "Categories"
103103
msgstr "categorieën"
104104

105-
#: inventory/admin.py:514
105+
#: inventory/admin.py:487
106106
msgid "Basic Information"
107107
msgstr ""
108108

109-
#: inventory/admin.py:518
109+
#: inventory/admin.py:491
110110
msgid "Type-Specific Settings"
111111
msgstr ""
112112

113-
#: inventory/admin.py:522
113+
#: inventory/admin.py:495
114114
msgid ""
115115
"Unit is used for numeric properties. Dropdown options should be a JSON array "
116116
"like [\"Option 1\", \"Option 2\"]"
@@ -169,7 +169,7 @@ msgid "issued loan"
169169
msgstr "uitgeleend"
170170

171171
#: inventory/models/asset.py:50 inventory/models/asset.py:62
172-
#: inventory/models/asset.py:72
172+
#: inventory/models/asset.py:72 inventory/models/asset.py:222
173173
msgid "sold"
174174
msgstr "verkocht"
175175

@@ -181,15 +181,15 @@ msgstr "beschikbaar of afgeschreven"
181181
msgid "Name must be uppercase"
182182
msgstr ""
183183

184-
#: inventory/models/asset.py:71
184+
#: inventory/models/asset.py:71 inventory/models/asset.py:225
185185
msgid "out of use"
186186
msgstr ""
187187

188-
#: inventory/models/asset.py:73
188+
#: inventory/models/asset.py:73 inventory/models/asset.py:228
189189
msgid "private withdrawal"
190190
msgstr ""
191191

192-
#: inventory/models/asset.py:74
192+
#: inventory/models/asset.py:74 inventory/models/asset.py:231
193193
msgid "divested"
194194
msgstr ""
195195

@@ -321,7 +321,21 @@ msgstr "aankoopwaarde"
321321
msgid "Current value of the asset from Moneybird"
322322
msgstr "aankoopwaarde"
323323

324-
#: inventory/models/asset.py:640
324+
#: inventory/models/asset.py:238
325+
msgid "active depreciated"
326+
msgstr ""
327+
328+
#: inventory/models/asset.py:242
329+
#: inventory/templates/admin/inventory/asset/view_asset/includes/recurring_sales_invoices.html:20
330+
msgid "active"
331+
msgstr "actief"
332+
333+
#: inventory/models/asset.py:244
334+
#: inventory/templates/admin/inventory/asset/view_asset/includes/sidebar.html:55
335+
msgid "margin"
336+
msgstr "marge"
337+
338+
#: inventory/models/asset.py:677
325339
msgid "assets"
326340
msgstr "eigendommen"
327341

@@ -848,10 +862,6 @@ msgstr "Komt niet op boekrekeningen voor"
848862
msgid "Recurring sales invoices"
849863
msgstr "Periodieke facturen"
850864

851-
#: inventory/templates/admin/inventory/asset/view_asset/includes/recurring_sales_invoices.html:20
852-
msgid "active"
853-
msgstr "actief"
854-
855865
#: inventory/templates/admin/inventory/asset/view_asset/includes/recurring_sales_invoices.html:21
856866
msgid "frequency"
857867
msgstr "frequentie"
@@ -898,10 +908,6 @@ msgstr ""
898908
msgid "Edit"
899909
msgstr "Wijzigen"
900910

901-
#: inventory/templates/admin/inventory/asset/view_asset/includes/sidebar.html:55
902-
msgid "margin"
903-
msgstr "marge"
904-
905911
#: inventory/templates/admin/inventory/asset/view_asset/includes/tickets.html:9
906912
msgid "Tickets"
907913
msgstr "Tickets"

landolfio/inventory/models/asset.py

Lines changed: 60 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
Count,
1111
)
1212
from django.urls import reverse
13-
from django.utils.translation import gettext_lazy as _
13+
from django.utils.translation import gettext_lazy as _, gettext
1414

1515
from inventory.moneybird import MoneybirdAssetService
1616

@@ -191,31 +191,64 @@ def disposal_reason_display(self):
191191
"""Get human-readable disposal reason."""
192192
return self.get_disposal_display() if self.disposal else None
193193

194+
@property
195+
def is_financially_unlinked(self):
196+
"""Check if asset is financially unlinked based on sources in Moneybird data."""
197+
if not self.moneybird_data or not isinstance(self.moneybird_data, dict):
198+
return True
199+
200+
sources = self.moneybird_data.get("sources", [])
201+
return not sources or len(sources) == 0
202+
203+
@property
204+
def sources_count(self):
205+
"""Get the number of source documents linked to this asset in Moneybird."""
206+
if not self.moneybird_data or not isinstance(self.moneybird_data, dict):
207+
return 0
208+
209+
sources = self.moneybird_data.get("sources", [])
210+
return len(sources)
211+
194212
@property
195213
def financial_status(self):
196214
"""Get the financial status for badge display."""
215+
# Determine base status first
216+
base_status = None
217+
base_color = None
218+
197219
# If there's a disposal, use disposal-based status
198220
if self.disposal:
199221
if self.disposal == "sold":
200-
return {"status": "sold", "color": "dark"}
222+
base_status = gettext("sold")
223+
base_color = "dark"
201224
elif self.disposal == "out_of_use":
202-
return {"status": "out of use", "color": "black"}
225+
base_status = gettext("out of use")
226+
base_color = "black"
203227
elif self.disposal == "private_withdrawal":
204-
return {"status": "private withdrawal", "color": "primary"}
228+
base_status = gettext("private withdrawal")
229+
base_color = "primary"
205230
elif self.disposal == "divested":
206-
return {"status": "divested", "color": "black"}
207-
208-
# No disposal, check current value
209-
current_val = self.current_value or 0
210-
if current_val == 0:
211-
# Active depreciated (no margin suffix)
212-
return {"status": "active depreciated", "color": "success"}
231+
base_status = gettext("divested")
232+
base_color = "black"
213233
else:
214-
# Active (with potential margin suffix)
215-
base_status = "active"
216-
if self.is_margin_asset:
217-
base_status += " - margin"
218-
return {"status": base_status, "color": "success"}
234+
# No disposal, check current value
235+
current_val = self.current_value or 0
236+
if current_val == 0:
237+
# Active depreciated (no margin suffix)
238+
base_status = gettext("active depreciated")
239+
base_color = "success"
240+
else:
241+
# Active (with potential margin suffix)
242+
base_status = gettext("active")
243+
if self.is_margin_asset:
244+
base_status += " - " + gettext("margin")
245+
base_color = "success"
246+
247+
# If financially unlinked, append warning but keep original color
248+
if self.is_financially_unlinked:
249+
base_status += " ⚠"
250+
251+
return {"status": base_status, "color": base_color}
219252

220253
@property
221254
def financial_status_display(self):
@@ -226,9 +259,17 @@ def financial_status_display(self):
226259
def financial_status_color(self):
227260
"""Get the Bootstrap color class for financial status."""
228261
color = self.financial_status["color"]
229-
if color == "black":
230-
return "dark" # Bootstrap doesn't have bg-black, use dark
231-
return color
262+
# Map custom colors to Bootstrap classes
263+
color_map = {
264+
"black": "dark",
265+
"green": "success",
266+
"yellow": "warning",
267+
"blue": "primary",
268+
"red": "danger",
269+
"grey": "secondary",
270+
"gray": "secondary",
271+
}
272+
return color_map.get(color, color)
232273

233274
objects = QueryablePropertiesManager()
234275

0 commit comments

Comments
 (0)