Skip to Content
Menu
This question has been flagged
3 Replies
690 Views

I wanted to show the number of days (0 day, -2 days, 3 days etc) for the Integer field "Days Left". 

Assuming today date is 09-06-2025(DD-MM-YYYY), this is how the result is showing up in the view. The problem here is that the result is empty(not showing up) when the dates difference is equal to 0 Day. 

Product Name-----Expiry Date-----Days Left

Product 1 ---------07-06-2025------    -2

Product 2 --------09-06-2025 ------  (empty)

Product 3 ---------12-06-2025 -------   3


Compute function for "Days Left"

class Drug(models.Model):
_inherit = "product.template"

expiry_date = fields.Date(string="Expiry Date")
due = fields.Integer(string="Days Left", compute="_compute_due")

def _compute_due(self):
for record in self:
if record.expiry_date:
fmt = '%Y-%m-%d'
from_date = record.expiry_date.strftime(fmt)
today_date = date.today()
if today_date == record.expiry_date:
record.due = 0
else:
now = today_date.strftime(fmt)
d1 = datetime.strptime(from_date, fmt)
d2 = datetime.strptime(now, fmt)
print(from_date, today_date, now, d1, d2)
record.due = str((d1 - d2).days)
else:
record.due = ""

Thank you for your suggestion!

Avatar
Discard
Best Answer

Hi,


Change the function as follows,


def _compute_due(self):
for record in self:
if record.expiry_date:
today_date = date.today()
# No need to convert to string and back
delta_days = (record.expiry_date - today_date).days
record.due = delta_days
else:
record.due = 0


Result-



Hope it helps

Avatar
Discard
Author Best Answer

Hi, I've changed the code as per your suggestion. But It is still not showing in the list view when Days Left is equal to 0. (View Name : product.template.product.list) (it works fine in the form view, Thanks)

Product Name.    Expiry Date.                   Days Left

Product 1.            14 Jun 2025(Today)           1

Product 2.           13 Jun 2025                      (empty)


Avatar
Discard
Related Posts Replies Views Activity
1
Jul 23
3408
4
Dec 22
9368
2
Apr 21
3454
1
Oct 18
4795
1
Oct 16
4228