Commande personnalisée, facture et numéros de départ d'expédition


Réponses:


7

Si je veux continuer à utiliser le type d'incrémentation par défaut de Magento et que je veux juste changer le numéro d'incrément suivant, c'est ce que j'utilise.

Assurez-vous de n'utiliser que des nombres incrémentiels plus grands que ceux déjà utilisés!

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);

Ce SQL doit éviter de définir accidentellement un ID d'incrément déjà utilisé.
Si un incrément plus grand next_incrementétait déjà utilisé, il définit simplement le dernier numéro d'incrément pour que les trois types d'entités soient identiques.


2

Je ne suis pas sûr du levier de sécurité mais je le fais en modifiant directement les valeurs dans 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";

Remplacez le code de type d'entité par «facture» ou «expédition» pour faire de même pour le reste.


2

Si vous souhaitez utiliser des plages de numéros ou des formats personnalisés pour les ID d'incrément au lieu des incréments Magento par défaut, vous pouvez également attribuer un modèle d'incrément personnalisé.

Par exemple:

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);
    }
}

Ensuite, mettez à jour le modèle d'incrémentation pour les entités dans un script de configuration:

$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();

Assurez-vous de ne pas renvoyer les ID d'incrément qui étaient déjà utilisés précédemment!


2

La meilleure façon [la plus sûre pour magento] de changer le numéro de commande est de changer les prochains numéros de commande et non les précédents. Cela peut être fait avec une simple requête de base de données. Ce sont celles que j'ai utilisées sur mon site et cela fonctionne sans problème depuis presque un an maintenant.

Ordre:

    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';

Facture d'achat:

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';

Expédition:

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';

Ces requêtes changeront les prochains identifiants d'incrémentation pour votre boutique magento. REMARQUE: remplacez X par l'ID suivant que vous souhaitez.

Acceptez une réponse si cela fonctionne.


1
Copié d'ici, je suppose que warpconduit.net/2012/04/18/…
user487772

oui et la solution fonctionne.
Tarun

0

ID d'incrément de commande et préfixe

Modifier votre ID d'incrément de commande sur tous les magasins

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';
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.