From ac6088e9c6ab22dcef09738695bde87e6ef347aa Mon Sep 17 00:00:00 2001
From: "juergen.fassmann" <juergen.fassmann@hardwarewartung.com>
Date: Tue, 29 Oct 2024 12:33:55 +0100
Subject: [PATCH] Fix #1935 8.3: Default value not set/used when using 0 as
 default value

---
 layouts/v7/modules/Settings/LayoutEditor/FieldsList.tpl | 4 ++--
 modules/Inventory/models/EditRecordStructure.php        | 2 +-
 modules/Settings/LayoutEditor/models/Field.php          | 2 +-
 modules/Vtiger/models/EditRecordStructure.php           | 2 +-
 modules/Vtiger/models/Field.php                         | 2 +-
 5 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/layouts/v7/modules/Settings/LayoutEditor/FieldsList.tpl b/layouts/v7/modules/Settings/LayoutEditor/FieldsList.tpl
index d6ee0f10f..415f2d7dd 100644
--- a/layouts/v7/modules/Settings/LayoutEditor/FieldsList.tpl
+++ b/layouts/v7/modules/Settings/LayoutEditor/FieldsList.tpl
@@ -167,7 +167,7 @@
 															<div class="defaultValue col-sm-12 {if !$FIELD_MODEL->hasDefaultValue()}disabled{/if} 
 																 {if $FIELD_MODEL->isDefaultValueOptionDisabled()} cursorPointerNotAllowed {/if}">
 																{assign var=DEFAULT_VALUE value=$FIELD_MODEL->getDefaultFieldValueToViewInV7FieldsLayOut()}
-																{if $DEFAULT_VALUE}
+																{if isset($DEFAULT_VALUE) && $DEFAULT_VALUE !== ''}
 																	{if is_array($DEFAULT_VALUE)}
 																		{foreach key=DEFAULT_FIELD_NAME item=DEFAULT_FIELD_VALUE from=$DEFAULT_VALUE}
 																			<div class="row">
@@ -341,7 +341,7 @@
 															<div class="defaultValue col-sm-12 {if !$FIELD_MODEL->hasDefaultValue()}disabled{/if} 
 																 {if $FIELD_MODEL->isDefaultValueOptionDisabled()} cursorPointerNotAllowed {/if}">
 																{assign var=DEFAULT_VALUE value=$FIELD_MODEL->getDefaultFieldValueToViewInV7FieldsLayOut()}
-																{if $DEFAULT_VALUE}
+																{if isset($DEFAULT_VALUE) && $DEFAULT_VALUE !== ''}
 																	{if is_array($DEFAULT_VALUE)}
 																		{foreach key=DEFAULT_FIELD_NAME item=DEFAULT_FIELD_VALUE from=$DEFAULT_VALUE}
 																			<div class="row defaultValueContent">
diff --git a/modules/Inventory/models/EditRecordStructure.php b/modules/Inventory/models/EditRecordStructure.php
index 31cb9d31c..4ae490f02 100644
--- a/modules/Inventory/models/EditRecordStructure.php
+++ b/modules/Inventory/models/EditRecordStructure.php
@@ -40,7 +40,7 @@ class Inventory_EditRecordStructure_Model extends Vtiger_EditRecordStructure_Mod
 								$fieldValue = $recordModel->getInventoryTermsAndConditions();
 							} else if($fieldValue == '') {
                                 $defaultValue = $fieldModel->getDefaultFieldValue();
-                                if(!empty($defaultValue) && !$recordId)
+                                if(isset($defaultValue) && $defaultValue !== '' && !$recordId)
 									$fieldValue = $defaultValue;
 							}
 							$fieldModel->set('fieldvalue', $fieldValue);
diff --git a/modules/Settings/LayoutEditor/models/Field.php b/modules/Settings/LayoutEditor/models/Field.php
index 554b4b7e2..b3d7bf7ab 100644
--- a/modules/Settings/LayoutEditor/models/Field.php
+++ b/modules/Settings/LayoutEditor/models/Field.php
@@ -438,7 +438,7 @@ class Settings_LayoutEditor_Field_Model extends Vtiger_Field_Model {
 	public function getDefaultFieldValueToViewInV7FieldsLayOut() {
 		$defaultValue = $this->getDefaultFieldValue();
 
-		if ($defaultValue) {
+		if (isset($defaultValue) && $defaultValue !== '') {
 			if ($this->getFieldDataType() == 'currency') {
 				//The argument for $skipformatting parameter is passed false to get value with user preference.
 				$defaultValue = $this->getCurrencyDisplayValue($defaultValue, false);
diff --git a/modules/Vtiger/models/EditRecordStructure.php b/modules/Vtiger/models/EditRecordStructure.php
index c72069e38..810792a39 100644
--- a/modules/Vtiger/models/EditRecordStructure.php
+++ b/modules/Vtiger/models/EditRecordStructure.php
@@ -37,7 +37,7 @@ class Vtiger_EditRecordStructure_Model extends Vtiger_RecordStructure_Model {
 							$fieldModel->set('fieldvalue', $recordModel->get($fieldName));
 						}else{
 							$defaultValue = $fieldModel->getDefaultFieldValue();
-							if(!empty($defaultValue) && !$recordId)
+							if(isset($defaultValue) && $defaultValue !== '' && !$recordId)
 								$fieldModel->set('fieldvalue', $defaultValue);
 						}
 						$values[$blockLabel][$fieldName] = $fieldModel;
diff --git a/modules/Vtiger/models/Field.php b/modules/Vtiger/models/Field.php
index 863bc0cc8..bea03b484 100644
--- a/modules/Vtiger/models/Field.php
+++ b/modules/Vtiger/models/Field.php
@@ -1348,7 +1348,7 @@ class Vtiger_Field_Model extends Vtiger_Field {
 	}
 
 	public function hasDefaultValue() {
-		return !$this->defaultvalue || trim($this->defaultvalue) == '' ? false : true;
+		return isset($this->defaultvalue) && trim($this->defaultvalue) !== '';
 	}
 
 	public function isActiveField() {
-- 
GitLab