diff --git a/child_compassion/models/child_pictures.py b/child_compassion/models/child_pictures.py
index 9c2d76d3e..236609c9a 100644
--- a/child_compassion/models/child_pictures.py
+++ b/child_compassion/models/child_pictures.py
@@ -9,7 +9,6 @@
##############################################################################
import base64
import logging
-from urllib.error import HTTPError, URLError
from urllib.request import Request, urlopen
from odoo import _, api, fields, models
@@ -187,6 +186,7 @@ def _get_picture(self, pic_type="Headshot", width=300, height=400):
self.headshot = data
elif pic_type.lower() == "fullshot":
self.fullshot = data
- except (AttributeError, ValueError, URLError, HTTPError, TypeError):
+ # OSError also covers URLError/HTTPError and read timeouts (TimeoutError)
+ except (AttributeError, ValueError, OSError, TypeError):
logger.error("Failed to fetch image from %s", self.image_url, exc_info=True)
return _image_date
diff --git a/crm_compassion/data/demand_planning.xml b/crm_compassion/data/demand_planning.xml
index 8f2d55636..7e38fbaae 100644
--- a/crm_compassion/data/demand_planning.xml
+++ b/crm_compassion/data/demand_planning.xml
@@ -12,6 +12,10 @@
Demand planning: correct negative resupply
on_create_or_write
+
[('resupply_events', '<', 0)]