From dc6bfa51086648dbc31c480789b426c78598dad8 Mon Sep 17 00:00:00 2001 From: Pepijn Blom Date: Sat, 25 Nov 2017 20:47:22 +0100 Subject: [PATCH 1/7] fix for selecting numeric only increment_id without index --- app/code/core/Mage/Sales/Model/Resource/Quote.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/code/core/Mage/Sales/Model/Resource/Quote.php b/app/code/core/Mage/Sales/Model/Resource/Quote.php index 8e756ae5521..2d8666caa7f 100644 --- a/app/code/core/Mage/Sales/Model/Resource/Quote.php +++ b/app/code/core/Mage/Sales/Model/Resource/Quote.php @@ -161,6 +161,10 @@ public function getReservedOrderId($quote) */ public function isOrderIncrementIdUsed($orderIncrementId) { + $fields = $this->_getReadAdapter()->describeTable($this->getTable('sales/order')); + if(isset($fields['increment_id']['DATA_TYPE'])) { + $orderIncrementId = $this->_getReadAdapter()->prepareColumnValue($fields['increment_id'], $orderIncrementId); + } $adapter = $this->_getReadAdapter(); $bind = array(':increment_id' => $orderIncrementId); $select = $adapter->select(); From 6ff29293736158176671494b52b7c4d4ab2e57be Mon Sep 17 00:00:00 2001 From: Pepijn Blom Date: Sat, 25 Nov 2017 21:00:14 +0100 Subject: [PATCH 2/7] cleanup --- .../core/Mage/Sales/Model/Resource/Quote.php | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/app/code/core/Mage/Sales/Model/Resource/Quote.php b/app/code/core/Mage/Sales/Model/Resource/Quote.php index 2d8666caa7f..49d9e55780c 100644 --- a/app/code/core/Mage/Sales/Model/Resource/Quote.php +++ b/app/code/core/Mage/Sales/Model/Resource/Quote.php @@ -156,22 +156,20 @@ public function getReservedOrderId($quote) /** * Check is order increment id use in sales/order table * - * @param string $orderIncrementId + * @param string|integer $orderIncrementId + * * @return boolean */ public function isOrderIncrementIdUsed($orderIncrementId) { - $fields = $this->_getReadAdapter()->describeTable($this->getTable('sales/order')); - if(isset($fields['increment_id']['DATA_TYPE'])) { - $orderIncrementId = $this->_getReadAdapter()->prepareColumnValue($fields['increment_id'], $orderIncrementId); - } - $adapter = $this->_getReadAdapter(); - $bind = array(':increment_id' => $orderIncrementId); - $select = $adapter->select(); - $select->from($this->getTable('sales/order'), 'entity_id') + + $adapter = $this->_getReadAdapter(); + $fields = $adapter->describeTable($this->getTable('sales/order')); + $orderIncrementId = $adapter->prepareColumnValue($fields['increment_id'], $orderIncrementId); + $select = $adapter->select() + ->from($this->getTable('sales/order'), 'entity_id') ->where('increment_id = :increment_id'); - $entity_id = $adapter->fetchOne($select, $bind); - if ($entity_id > 0) { + if ($adapter->fetchOne($select, array(':increment_id' => $orderIncrementId)) > 0) { return true; } From b631e068af86b47707e49d06bab27e9440d2be17 Mon Sep 17 00:00:00 2001 From: Pepijn Blom Date: Sat, 25 Nov 2017 21:03:35 +0100 Subject: [PATCH 3/7] rever entity_id usage just to be on the safe side --- app/code/core/Mage/Sales/Model/Resource/Quote.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/code/core/Mage/Sales/Model/Resource/Quote.php b/app/code/core/Mage/Sales/Model/Resource/Quote.php index 49d9e55780c..3e13d141dc3 100644 --- a/app/code/core/Mage/Sales/Model/Resource/Quote.php +++ b/app/code/core/Mage/Sales/Model/Resource/Quote.php @@ -169,7 +169,8 @@ public function isOrderIncrementIdUsed($orderIncrementId) $select = $adapter->select() ->from($this->getTable('sales/order'), 'entity_id') ->where('increment_id = :increment_id'); - if ($adapter->fetchOne($select, array(':increment_id' => $orderIncrementId)) > 0) { + $entity_id = $adapter->fetchOne($select, array(':increment_id' => $orderIncrementId)); + if ($entity_id > 0) { return true; } From 3b6b30cf05423263abc64dff35028124985c4904 Mon Sep 17 00:00:00 2001 From: Pepijn Date: Tue, 5 Dec 2017 11:00:35 +0100 Subject: [PATCH 4/7] Removed unnecessary isset --- app/code/core/Mage/Sales/Model/Resource/Quote.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/app/code/core/Mage/Sales/Model/Resource/Quote.php b/app/code/core/Mage/Sales/Model/Resource/Quote.php index 3e13d141dc3..53412a5cee2 100644 --- a/app/code/core/Mage/Sales/Model/Resource/Quote.php +++ b/app/code/core/Mage/Sales/Model/Resource/Quote.php @@ -162,9 +162,6 @@ public function getReservedOrderId($quote) */ public function isOrderIncrementIdUsed($orderIncrementId) { - - $adapter = $this->_getReadAdapter(); - $fields = $adapter->describeTable($this->getTable('sales/order')); $orderIncrementId = $adapter->prepareColumnValue($fields['increment_id'], $orderIncrementId); $select = $adapter->select() ->from($this->getTable('sales/order'), 'entity_id') From b3a16892c34a0b2984e0b831ae00ed9694683492 Mon Sep 17 00:00:00 2001 From: Pepijn Date: Tue, 5 Dec 2017 11:04:44 +0100 Subject: [PATCH 5/7] cleanup --- app/code/core/Mage/Sales/Model/Resource/Quote.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/app/code/core/Mage/Sales/Model/Resource/Quote.php b/app/code/core/Mage/Sales/Model/Resource/Quote.php index 53412a5cee2..3633e367b95 100644 --- a/app/code/core/Mage/Sales/Model/Resource/Quote.php +++ b/app/code/core/Mage/Sales/Model/Resource/Quote.php @@ -162,11 +162,13 @@ public function getReservedOrderId($quote) */ public function isOrderIncrementIdUsed($orderIncrementId) { + $adapter = $this->_getReadAdapter(); $orderIncrementId = $adapter->prepareColumnValue($fields['increment_id'], $orderIncrementId); - $select = $adapter->select() - ->from($this->getTable('sales/order'), 'entity_id') + $bind = array(':increment_id' => $orderIncrementId); + $select = $adapter->select(); + $select->from($this->getTable('sales/order'), 'entity_id') ->where('increment_id = :increment_id'); - $entity_id = $adapter->fetchOne($select, array(':increment_id' => $orderIncrementId)); + $entity_id = $adapter->fetchOne($select, $bind); if ($entity_id > 0) { return true; } From 2c7602f456792faf1e556fe9627d17d02edf1f89 Mon Sep 17 00:00:00 2001 From: Pepijn Date: Wed, 6 Dec 2017 20:24:06 +0100 Subject: [PATCH 6/7] Update Quote.php --- app/code/core/Mage/Sales/Model/Resource/Quote.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/code/core/Mage/Sales/Model/Resource/Quote.php b/app/code/core/Mage/Sales/Model/Resource/Quote.php index 3633e367b95..74badca89b6 100644 --- a/app/code/core/Mage/Sales/Model/Resource/Quote.php +++ b/app/code/core/Mage/Sales/Model/Resource/Quote.php @@ -163,6 +163,7 @@ public function getReservedOrderId($quote) public function isOrderIncrementIdUsed($orderIncrementId) { $adapter = $this->_getReadAdapter(); + $fields = $adapter->describeTable($this->getMainTable()); $orderIncrementId = $adapter->prepareColumnValue($fields['increment_id'], $orderIncrementId); $bind = array(':increment_id' => $orderIncrementId); $select = $adapter->select(); From f6e14916963def34012ff473eace2366e7e6a21b Mon Sep 17 00:00:00 2001 From: Pepijn Blom Date: Wed, 13 Dec 2017 14:50:27 +0100 Subject: [PATCH 7/7] cast to string instead of using prepareColumnValue which is a bit overkill --- app/code/core/Mage/Sales/Model/Resource/Quote.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/code/core/Mage/Sales/Model/Resource/Quote.php b/app/code/core/Mage/Sales/Model/Resource/Quote.php index 74badca89b6..2a6d4a28708 100644 --- a/app/code/core/Mage/Sales/Model/Resource/Quote.php +++ b/app/code/core/Mage/Sales/Model/Resource/Quote.php @@ -163,9 +163,7 @@ public function getReservedOrderId($quote) public function isOrderIncrementIdUsed($orderIncrementId) { $adapter = $this->_getReadAdapter(); - $fields = $adapter->describeTable($this->getMainTable()); - $orderIncrementId = $adapter->prepareColumnValue($fields['increment_id'], $orderIncrementId); - $bind = array(':increment_id' => $orderIncrementId); + $bind = array(':increment_id' => (string)$orderIncrementId); $select = $adapter->select(); $select->from($this->getTable('sales/order'), 'entity_id') ->where('increment_id = :increment_id');