diff --git a/odex25_benefit/odex_benefit/i18n/ar_001.po b/odex25_benefit/odex_benefit/i18n/ar_001.po index 08a04cc93..247e92f45 100644 --- a/odex25_benefit/odex_benefit/i18n/ar_001.po +++ b/odex25_benefit/odex_benefit/i18n/ar_001.po @@ -9562,6 +9562,7 @@ msgstr "هل الأسرة منتجة؟" #: model:ir.model.fields,field_description:odex_benefit.field_receive_appliances_furniture__prod_id #: model:ir.model.fields,field_description:odex_benefit.field_receive_benefit_zkat__product_id #: model:ir.model.fields,field_description:odex_benefit.field_receive_food_basket__product_id +#: model:ir.model.fields,field_description:odex_benefit.field_electrical_device_line__product_id msgid "Product" msgstr "المنتج" @@ -9691,6 +9692,7 @@ msgstr "" #: model:ir.model.fields,field_description:odex_benefit.field_service_request__service_qty #: model:ir.model.fields,field_description:odex_benefit.field_zkat_line__quantity #: model_terms:ir.ui.view,arch_db:odex_benefit.benefit_food_surplus_form +#: model:ir.model.fields,field_description:odex_benefit.field_electrical_device_line__quantity msgid "Quantity" msgstr "الكمية" @@ -10734,12 +10736,14 @@ msgid "Service Name" msgstr "اسم الخدمة" #. module: odex_benefit +#: model:ir.model.fields,field_description:odex_benefit.field_branch_settings__service_producer_id #: model:ir.model.fields,field_description:odex_benefit.field_service_request__service_producer_id #: model:ir.model.fields,field_description:odex_benefit.field_services_settings__service_producer_id msgid "Service Producer" msgstr "جهة الدفع" #. module: odex_benefit +#: model:ir.model.fields,field_description:odex_benefit.field_electrical_device_line__service_request_id #: model:ir.model.fields,field_description:odex_benefit.field_home_furnishing_items__service_request_id #: model:ir.model.fields,field_description:odex_benefit.field_service_attachments_settings__service_request_id #: model_terms:ir.ui.view,arch_db:odex_benefit.service_request_form @@ -16344,6 +16348,7 @@ msgid "Electrical Devices Service" msgstr "الأجهزة الكهربائية" #. module: odex_benefit +#: model:ir.model.fields,field_description:odex_benefit.field_electrical_device_line__device_id #: model:ir.model.fields,field_description:odex_benefit.field_service_request__device_id msgid "Device" msgstr "الجهاز" @@ -18592,4 +18597,65 @@ msgstr "%s سنة" #: code:addons/odex_benefit/models/family_members.py:0 #, python-format msgid "0 days" -msgstr "0 يوم" \ No newline at end of file +msgstr "0 يوم" + +#. module: odex_benefit +#: code:addons/odex_benefit/models/service_request.py:0 +#: model:ir.model,name:odex_benefit.model_electrical_device_line +#, python-format +msgid "Electrical Device Line" +msgstr "جهاز كهربائي" + +#. module: odex_benefit +#: model:ir.model.fields,field_description:odex_benefit.field_electrical_device_line__unit_price +msgid "Unit Price" +msgstr "سعر الوحدة" + +#. module: odex_benefit +#: model:ir.model.fields,field_description:odex_benefit.field_electrical_device_line__subtotal +msgid "Subtotal" +msgstr "المجموع" + +#. module: odex_benefit +#: model:ir.model.fields,field_description:odex_benefit.field_service_request__electrical_device_line_ids +#: model:ir.model.fields.selection,name:odex_benefit.selection__services_settings__service_type__electrical_devices +msgid "Electrical Devices" +msgstr "أجهزة كهربائية" + +#. module: odex_benefit +#: model:ir.model.fields,field_description:odex_benefit.field_electrical_devices__product_ids +#: model:ir.model.fields,field_description:odex_benefit.field_service_request__allowed_product_ids +msgid "Allowed Products" +msgstr "المنتجات المسموح بها" + +#. module: odex_benefit +#: code:addons/odex_benefit/models/service_request.py:0 +#, python-format +msgid "" +"Device '%s': Total quantity in this request (%s) exceeds the allowed limit " +"of %s units." +msgstr "الجهاز '%s': إجمالي الكمية في هذا الطلب (%s) يتجاوز الحد المسموح به وهو %s وحدة." + +#. module: odex_benefit +#: code:addons/odex_benefit/models/service_request.py:0 +#, python-format +msgid "" +"Device '%s': You cannot request more than %s units within %s %s. (Previous " +"requests: %s, Current request: %s, Total: %s)" +msgstr "الجهاز '%s': لا يمكنك طلب أكثر من %s وحدة خلال %s %s. (الطلبات السابقة: %s، الطلب الحالي: %s، المجموع: %s)" + +#. module: odex_benefit +#: code:addons/odex_benefit/models/service_request.py:0 +#, python-format +msgid "" +"Cannot create invoice: the following requests have no electrical device lines:\n" +"%s\n" +"All selected requests must contain at least one device line." +msgstr "لا يمكن إنشاء الفاتورة: الطلبات التالية لا تحتوي على أجهزة كهربائية:\n" + +#. module: odex_benefit +#: code:addons/odex_benefit/models/service_request.py:0 +#, python-format +msgid "No invoice lines could be created." +msgstr "لم يتم إنشاء أي بنود في الفاتورة." + diff --git a/odex25_benefit/odex_benefit/models/service_request.py b/odex25_benefit/odex_benefit/models/service_request.py index 36871d8df..3bca6d480 100644 --- a/odex25_benefit/odex_benefit/models/service_request.py +++ b/odex25_benefit/odex_benefit/models/service_request.py @@ -993,24 +993,26 @@ class ServiceRequest(models.Model): raise ValidationError(_( "Device '%s': Total quantity in this request (%s) exceeds the allowed limit of %s units." ) % (device.device_name, current_total_qty, allowed_qty)) - domain = base_domain + [ - ('date', '>', date_before), - ('electrical_device_line_ids.device_id', '=', device_id) - ] - existing_requests = Service.search(domain) - existing_device_lines = existing_requests.mapped( - 'electrical_device_line_ids').filtered( - lambda l: l.device_id.id == device_id - ) - total_previous_qty = sum(existing_device_lines.mapped('quantity')) - total_qty = total_previous_qty + current_total_qty + if not rec.exception_or_steal: + domain = base_domain + [ + ('date', '>', date_before), + ('electrical_device_line_ids.device_id', '=', device_id), + ('exception_or_steal', '=', False) + ] + existing_requests = Service.search(domain) + existing_device_lines = existing_requests.mapped( + 'electrical_device_line_ids').filtered( + lambda l: l.device_id.id == device_id + ) + total_previous_qty = sum(existing_device_lines.mapped('quantity')) + total_qty = total_previous_qty + current_total_qty - if total_qty > allowed_qty: - raise ValidationError(_( - "Device '%s': You cannot request more than %s units within %s %s. " - "(Previous requests: %s, Current request: %s, Total: %s)" - ) % (device.device_name, allowed_qty, interval, - period, total_previous_qty, current_total_qty, total_qty)) + if total_qty > allowed_qty: + raise ValidationError(_( + "Device '%s': You cannot request more than %s units within %s %s. " + "(Previous requests: %s, Current request: %s, Total: %s)" + ) % (device.device_name, allowed_qty, interval, + period, total_previous_qty, current_total_qty, total_qty)) else: last_request = Service.search(base_domain, order='date desc', limit=1) if last_request and last_request.date: