Numeri iniziali ordine personalizzato, fattura e spedizione


Risposte:


7

Se voglio continuare a utilizzare il tipo di incremento predefinito di Magento e voglio solo cambiare il numero di incremento successivo, questo è quello che uso.

Assicurati di utilizzare solo numeri di incremento maggiori di quelli già utilizzati!

SET @next_increment='310000000';

SELECT @entity_types:=GROUP_CONCAT(`entity_type_id`) FROM `eav_entity_type`
    WHERE `entity_type_code` IN ('order', 'invoice', 'shipment');

SELECT @new_last_increment:=GREATEST((@next_increment -1), 
    (SELECT MAX(`increment_last_id`) FROM `eav_entity_store`
     WHERE FIND_IN_SET(`entity_type_id`, @entity_types)));

UPDATE `eav_entity_store` SET `increment_last_id`=@new_last_increment
    WHERE FIND_IN_SET(`entity_type_id`, @entity_types);

Questo SQL dovrebbe occuparsi di non impostare accidentalmente un ID di incremento già utilizzato.
Se è next_incrementgià stato utilizzato un incremento maggiore , imposta semplicemente l'ultimo numero di incremento per tutti e tre i tipi di entità in modo che siano uguali.


2

Non sono sicuro della leva di sicurezza, ma lo sto facendo modificando direttamente i valori nel DB:

    UPDATE `eav_entity_store` s
INNER JOIN `eav_entity_type` t ON t.`entity_type_id` = s.`entity_type_id`
       SET s.`increment_last_id` = 'your_increment_here'
     WHERE t.entity_type_code = "order";

Sostituisci il codice del tipo di entità con "fattura" o "spedizione" per fare lo stesso per il resto.


2

Se si desidera utilizzare intervalli di numeri o formati personalizzati per gli ID di incremento anziché gli incrementi di Magento predefiniti, è anche possibile assegnare un modello di incremento personalizzato.

Per esempio:

class My_Shop_Model_Entity_Increment_Erp
    extends Mage_Eav_Model_Entity_Increment_Abstract
{
    public function getNextId()
    {
        $last = $this->getLastId();
        $entity = $this->getEntityTypeId();
        $store = $this->getStoreId()
        $next = Mage::helper('my_shop/api')->getNextIncrementFromErp($last, $entity, $store);

        // If you want to apply pad char and length, otherwise simply return $next
        return $this->format($next);
    }
}

Quindi, aggiornare il modello di incremento per le entità in uno script di installazione:

$installer = Mage::getModel('eav/entity_setup',   'core_setup');
$installer->startSetup();
$installer->updateEntityType('order',    'increment_model', 'my_shop/entity_increment_erp');
$installer->updateEntityType('invoice',  'increment_model', 'my_shop/entity_increment_erp');
$installer->updateEntityType('shipment', 'increment_model', 'my_shop/entity_increment_erp');
$installer->endSetup();

Assicurati di non restituire gli ID di incremento già utilizzati in precedenza!


2

Il modo migliore [più sicuro per magento] per cambiare il numero dell'ordine è quello di cambiare i numeri dell'ordine successivo e non quelli precedenti. Questo può essere fatto con una semplice query di database. Questi sono quelli che ho usato nel mio sito e funziona senza problemi da quasi un anno.

Ordine:

    UPDATE eav_entity_store
INNER JOIN eav_entity_type ON eav_entity_type.entity_type_id = eav_entity_store.entity_type_id
SET eav_entity_store.increment_last_id='XXXXXXXXXX'
WHERE eav_entity_type.entity_type_code='order';

Fattura:

UPDATE eav_entity_store
INNER JOIN eav_entity_type ON eav_entity_type.entity_type_id = eav_entity_store.entity_type_id
SET eav_entity_store.increment_last_id='XXXXXXXXXX'
WHERE eav_entity_type.entity_type_code='invoice';

Spedizione:

UPDATE eav_entity_store
INNER JOIN eav_entity_type ON eav_entity_type.entity_type_id = eav_entity_store.entity_type_id
SET eav_entity_store.increment_last_id='XXXXXXXXXX'
WHERE eav_entity_type.entity_type_code='shipment';

Queste query modificheranno i successivi ID di incremento per il tuo negozio magento. NOTA: Sostituisci X con l'id successivo che desideri.

Accetta una risposta se funziona.


1
Copiato da qui, credo che warpconduit.net/2012/04/18/…
user487772

si e la soluzione funziona.
Tarun,

0

ID e prefisso dell'incremento dell'ordine

Modifica l'ID dell'incremento dell'ordine su tutti i negozi

UPDATE eav_entity_store
INNER JOIN eav_entity_type ON eav_entity_type.entity_type_id = eav_entity_store.entity_type_id
SET eav_entity_store.increment_last_id='XXXXXXXXXX'
WHERE eav_entity_type.entity_type_code='order';

UPDATE eav_entity_store
INNER JOIN eav_entity_type ON eav_entity_type.entity_type_id = eav_entity_store.entity_type_id
SET eav_entity_store.increment_last_id='XXXXXXXXXX'
WHERE eav_entity_type.entity_type_code='invoice';
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.