From e7b58f8e1446b57cbab1a5cac839e0eed2a50287 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Philipp=20Sch=C3=BCle?=
Date: Wed, 12 Feb 2025 08:50:54 +0100
Subject: [PATCH] tweak(Sales/Document): prevent "__clone method called on
non-object"
---
tine20/Sales/Controller/Document/Abstract.php | 23 ++++++++++++++-----
1 file changed, 17 insertions(+), 6 deletions(-)
diff --git a/tine20/Sales/Controller/Document/Abstract.php b/tine20/Sales/Controller/Document/Abstract.php
index 154483c415..0512b2a7bc 100644
--- a/tine20/Sales/Controller/Document/Abstract.php
+++ b/tine20/Sales/Controller/Document/Abstract.php
@@ -128,8 +128,10 @@ protected function _inspectCategoryDebitor(Sales_Model_Document_Abstract $_recor
}
$orgDebitor = $_record->{Sales_Model_Document_Abstract::FLD_DEBITOR_ID} = Sales_Controller_Debitor::getInstance()->search(
Tinebase_Model_Filter_FilterGroup::getFilterForModel(Sales_Model_Debitor::class, [
- [TMFA::FIELD => Sales_Model_Debitor::FLD_CUSTOMER_ID, TMFA::OPERATOR => TMFA::OP_EQUALS, TMFA::VALUE => $customerId],
- [TMFA::FIELD => Sales_Model_Debitor::FLD_DIVISION_ID, TMFA::OPERATOR => TMFA::OP_EQUALS, TMFA::VALUE => $divisionId],
+ [TMFA::FIELD => Sales_Model_Debitor::FLD_CUSTOMER_ID, TMFA::OPERATOR => TMFA::OP_EQUALS,
+ TMFA::VALUE => $customerId],
+ [TMFA::FIELD => Sales_Model_Debitor::FLD_DIVISION_ID, TMFA::OPERATOR => TMFA::OP_EQUALS,
+ TMFA::VALUE => $divisionId],
]))->getFirstRecord();
if (null === $_record->{Sales_Model_Document_Abstract::FLD_DEBITOR_ID}) {
@@ -139,18 +141,27 @@ protected function _inspectCategoryDebitor(Sales_Model_Document_Abstract $_recor
Sales_Model_Debitor::FLD_NAME => '-',
], true));
$customer = Sales_Controller_Customer::getInstance()->update($customer);
- $orgDebitor = $_record->{Sales_Model_Document_Abstract::FLD_DEBITOR_ID} = $customer->{Sales_Model_Customer::FLD_DEBITORS}->find(Sales_Model_Debitor::FLD_DIVISION_ID, $divisionId);
+ $orgDebitor = $_record->{Sales_Model_Document_Abstract::FLD_DEBITOR_ID} =
+ $customer->{Sales_Model_Customer::FLD_DEBITORS}->find(Sales_Model_Debitor::FLD_DIVISION_ID,
+ $divisionId);
}
}
- if (!$_record->{Sales_Model_Document_Abstract::FLD_PAYMENT_MEANS} || 0 === $_record->{Sales_Model_Document_Abstract::FLD_PAYMENT_MEANS}->count()) {
+ if (!$_record->{Sales_Model_Document_Abstract::FLD_PAYMENT_MEANS} ||
+ 0 === $_record->{Sales_Model_Document_Abstract::FLD_PAYMENT_MEANS}->count()
+ ) {
if (null === $orgDebitor) {
$orgDebitor = Sales_Controller_Debitor::getInstance()->get($orgDebitorId);
}
- $_record->{Sales_Model_Document_Abstract::FLD_PAYMENT_MEANS} = clone $orgDebitor->{Sales_Model_Debitor::FLD_PAYMENT_MEANS};
+ if (is_object($orgDebitor->{Sales_Model_Debitor::FLD_PAYMENT_MEANS})) {
+ $_record->{Sales_Model_Document_Abstract::FLD_PAYMENT_MEANS} =
+ clone $orgDebitor->{Sales_Model_Debitor::FLD_PAYMENT_MEANS};
+ }
}
- if (1 !== $_record->{Sales_Model_Document_Abstract::FLD_PAYMENT_MEANS}->filter(Sales_Model_PaymentMeans::FLD_DEFAULT, true)->count()) {
+ if (1 !== $_record->{Sales_Model_Document_Abstract::FLD_PAYMENT_MEANS}
+ ->filter(Sales_Model_PaymentMeans::FLD_DEFAULT, true)->count()
+ ) {
throw new Tinebase_Exception_UnexpectedValue('payment means need to have one default record');
}
}