Se utilizzi Magento 2 per il tuo negozio elettronico e sincronizzi gli ordini con Danea EasyFatt, potresti aver riscontrato un problema con i numeri d'ordine molto elevati. Questo accade spesso quando hai viste negozio (store view) in lingue diverse, e Magento inizia a generare numeri d'ordine con prefissi differenti, come ad esempio:
- per la vista in inglese: #2000000001
- per la vista in francese: #3000000001
Il problema
Danea EasyFatt ha un limite massimo per i numeri d'ordine che può gestire, fissato a 2.147.483.647. Quando i numeri d'ordine superano questo valore, EasyFatt non è in grado di importarli, causando errori durante la sincronizzazione.
Messaggio di errore visualizzato:
Valore non valido:
Correggere il valore o premere il tast "Esc" per annullare la modifica
Per risolvere questo problema, è necessario ridurre la lunghezza di riempimento (pad-length) dei numeri d'ordine in Magento 2. In questo modo, i numeri d'ordine generati saranno più brevi e non supereranno il limite imposto da EasyFatt.
La lunghezza di riempimento si riferisce al numero minimo di zeri aggiuntivi assegnati a ciascun numero d'ordine come “riempimento” fino a quando il numero d'ordine diventa superiore alla lunghezza di riempimento di incremento scelta. Ad esempio:
- riempimento 3: 001, 012, 123, 1234, 12345, 123456
- riempimento 4: 0001, 0012, 0123, 1234, 12345, 123456
- riempimento 6: 000001, 000012, 000123, 001234, 012345, 123456
Nell'ordine di cui sopra l'ID di incremento è composto dalle seguenti parti:
- Prefisso (ID Vista Negozio)
- Lunghezza di riempimento
- Suffisso (ID effettivo del numero d'ordine)
Passaggi per modificare la lunghezza di riempimento in Magento 2
Aprire il file /vendor/magento/module-sales-sequence/Model/Sequence.php e trovare il codice:
/** * Default pattern for Sequence */ const DEFAULT_PATTERN = "%s%'.09d%s";
Modificare il valore di DEFAULT_PATTERN da 09 al valore desiderato, esempio 08 (valore minimo di compatibilità con Easyfatt):
/** * Default pattern for Sequence */ const DEFAULT_PATTERN = "%s%'.08d%s";
Importante
- Backup: Prima di effettuare qualsiasi modifica, esegui un backup completo dei file e della base dati.
- Impatto sugli Ordini Esistenti: Questa modifica non influenzerà gli ordini già esistenti, ma solo quelli futuri.
Aprire il file /app/code/Webprojectsol/DaneaEasyFatt/etc/di.xml e prima del seguente codice:
<type name="Webprojectsol\DaneaEasyFatt\Logger\Handler"> <arguments> <argument name="filesystem" xsi:type="object">Magento\Framework\Filesystem\Driver\File</argument> </arguments> </type>
Inserire il seguente codice:
<type name="Magento\SalesSequence\Model\Sequence"> <arguments> <argument name="pattern" xsi:type="string">%s%'.08d%s</argument> </arguments> </type>
Facendo attenzione a valorizzare la lunghezza di riempimento secondo il valore desiderato. Infatti, nel codice precedente è pari a 08.
Per concludere, è necessario compilare la soluzione Magento eseguendo il seguente comando da terminale:
php bin/magento setup:di:compile
Importante
- Backup: Prima di effettuare qualsiasi modifica, esegui un backup completo dei file e della base dati.
- Impatto sugli Ordini Esistenti: Questa modifica non influenzerà gli ordini già esistenti, ma solo quelli futuri.