Soluzione1: Questo errore si presenta quando si effettua un ordine su Magento, si viene indirizzati al pagamento, ma il pagamento non va a buon fine e si viene rimandati indietro sul negozio. Per risolvere questo problema è sufficiente modificare il file app/code/core/Mage/Sales/Model/Resource/Quote.php come indicato di seguito
Per risolvere il problema posizioniamoci nella cartella principale del negozio in Magento. Dopodiché andiamo a modificare il file app/code/core/Mage/Sales/Model/Resource/Quote.php
Apriamolo e cerchiamo la seguente parte di codice
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public function isOrderIncrementIdUsed($orderIncrementId) { $adapter = $this->_getReadAdapter(); $bind = array(':increment_id' => (int)$orderIncrementId); $select = $adapter->select(); $select->from($this->getTable('sales/order'), 'entity_id') ->where('increment_id = :increment_id'); $entity_id = $adapter->fetchOne($select, $bind); if ($entity_id > 0) { return true; } return false; } |
Alla linea quattro modifichiamo
1 |
$bind = array(':increment_id' => (int)$orderIncrementId); |
In modo che diventi:
1 |
$bind = array(':increment_id' => $orderIncrementId); |
Salviamo il tutto.
Soluzione2: Questo errore si presenta quando per qualche ragione sono stati inseriti ordini sopra l’ultimo incrementale registrato in eav_entity_type
. Per risolvere il problema è sufficiente incrementare sopra l’ultimo valore registrato il valore dell’incrementale.
Di seguito discutiamo il problema e la soluzione nel dettaglio.
Anzitutto l’errore che si presenta è simile a questo:
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '0009032' for key 'UNQ_SALES_FLAT_ORDER_INCREMENT_ID', query was: INSERT INTO
sales_flat_order
(coupon_code
, protect_code
, shipping_description
, is_virtual
, store_id
, customer_id
, base_discount_amount
, base_grand_total
, base_shipping_amount
, base_shipping_tax_amount
, base_subtotal
, base_tax_amount
, base_to_global_rate
, base_to_order_rate
, discount_amount
, grand_total
, shipping_amount
, shipping_tax_amount
, store_to_base_rate
, store_to_order_rate
, subtotal
, tax_amount
, total_qty_ordered
, customer_is_guest
, customer_note_notify
, customer_group_id
, quote_id
, base_shipping_discount_amount
, base_subtotal_incl_tax
, shipping_discount_amount
, subtotal_incl_tax
, weight
, customer_dob
, increment_id
, applied_rule_ids
, base_currency_code
, customer_email
, customer_firstname
, customer_lastname
, customer_middlename
, customer_prefix
, customer_suffix
, customer_taxvat
, discount_description
, global_currency_code
, order_currency_code
, remote_ip
, shipping_method
, store_currency_code
, store_name
, x_forwarded_for
, customer_note
, created_at
, updated_at
, total_item_count
, customer_gender
, hidden_tax_amount
, base_hidden_tax_amount
, shipping_hidden_tax_amount
, base_shipping_hidden_tax_amnt
, shipping_incl_tax
, base_shipping_incl_tax
, gift_message_id
, payment_fee_amount
, base_payment_fee_amount
, payment_installment_fee_amount
, base_payment_installment_fee_amount
, payment_tax_amount
, base_payment_tax_amount
, referral_code
, ebizmarts_abandonedcart_flag
, payment_fee_tax
, base_payment_fee_tax
, payment_percentage_fee
, base_payment_percentage_fee
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, '1975-10-01 00:00:00', ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, '2018-11-28 11:14:46', '2018-11-28 11:14:46', ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
Questo errore si presenta perché si sta cercando di inserire una chiave duplicata in sales_flat_order
. Prima di tutto verifichiamo la cosa spostandoci in sales_flat_order
ed effettuando la seguente query:
1 |
SELECT MAX(`entity_id`) FROM `sales_flat_order` |
Nel mio caso il risultato della query era 10.009. Adesso spostiamoci su eav_entity_store
. Qui dovremmo vedere una tabella con tutti gli incrementali. Cerchiamo quello che ci interessa. Per trovarlo guardiamo i campi entity_type_id
e store_id
. Gli entity_type_id
hanno come riferimento la tabella eav_entity_type
.
Per esempio il codice 5 corrisponde agli ordini, mentre il codice 6 alle fatture/ordini.
Nel mio caso mi accorgo che increment_last_id
è su 9033, mentre il massimo valore inserito in sales_flat_order è di 10.009. Quindi mi è sufficiente portare questo valore al di sopra di quello attuale, per esempio impostandolo su 10.010.
Una volta fatto il problema è risolto.