INTRODUZIONE
Dalla versione 23.358 o superiore sono disponibili una serie di viste su database, con lo schema googleFeed, che esportano articoli, riferimenti, disponibilità, status e giacenze in XML. Questi files vengono generati dal tool DueBit.GoogleFeed, ed inviati presso un FTP, dove vengono acquisiti per alimentare il sito e-commerce del cliente tramite piattaforma Shopify. Il tool si occupa anche dell’invio delle foto associate al prodotto, sempre su cartella FTP.
Le viste sono differenziate in questo modo:
- One-site (un sito, articoli standard)
- One-site fashion (un sito, articoli in variante taglia)
- Two-site (due siti, B2B e B2C, articoli standard).
Modalità 1-Site
Un articolo viene visualizzato sul sito se è ONLINE:
L’articolo può essere associato fino a 3 livelli di categorizzazione, purchè il primo livello sia segnato come “principale”. Infatti, il prodotto deve essere ricercabile a partire dalla categoria FERRAMENTA.
Nella variante in taglia, l’articolo deve essere associato al massimo a due livelli di categorizzazione. Anche in questo caso, il primo livello deve essere segnato come “principale”:
Si consiglia pertanto di inserire le categorie con quest’ordine:
- Prima la categoria principale (nodo 1)
- Poi la categoria figlia (nodo 2)
- (No variante in taglia) Infine la categoria di terzo livello
Esempio gestione in taglia
Questa è la corretta configurazione per strutturare correttamente il prodotto in shopify.
Modalità “2-Sites”
Un articolo può essere di competenza B2B o B2C in base alla selezione di due dati ulteriori che dovranno chiamarsi esattamente B2B o B2C, all’interno di un gruppo FEED:
L’articolo per essere comunque inviato su web e visibile dalle viste deve essere ONLINE
Le viste pertanto filtrano gli articoli dove ONLINE = 1 e il dato ulteriore (B2B o B2C) è a true.
DATI ANAGRAFICI
Si consiglia di visionare la parte di analisi tecnica, più sotto in questa guida, per capire in quale configurazione ci si trova e quali campi utilizzare per la pubblicazione dei dati online.
IMMAGINI ASSOCIATE AL PRODOTTO
Le immagini associate al prodotto verranno inviate online. L’immagine di copertina sarà ovviamente quella principale, le altre quelle in gallery.
Immaginando una situazione di questo tipo:
Per prima verrà inviata l’immagine del berretto completo come IMMAGINE DI COPERTINA, e di seguito le altre immagini del prodotto (foto del tessuto, ect).
SPECIFICA PER VERSIONE IN TAGLIA: Non è previsto l’invio delle foto per variante taglia. Non compilare pertanto questa sezione:
Nota bene: prodotti sprovvisti di foto o con prezzo di vendita a zero non saranno visibili sul catalogo shopify.
___________________________________________________________________
AMBIENTE DI TEST SHOPIFY
Recuperare le credenziali per accedere all’area FTP del “partner retail”. Le credenziali dovrebbero essere sostanzialmente queste:
Atelier———————————————————————————-
Url per confermare l’invio su FTP ed avviare l’importazione in ambiente centralizzato
https://shopify.retailpartner.it/shopify/php/synker_worker.php?Token=
Indirizzo FTP DATI
ftp://shopify.retailpartner.it/xml/
Indirizzo FTP FOTO
ftp://shopify.retailpartner.it/media/
USER
xxxxxxxxxxxxxxxxxxxxxxx
PWD
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
Accesso Web——————————————————————————
Url Synker
https://shopify.retailpartner.it/shopify
User ID
xxxxxxxxxxxxxxx@retailpartner.it
Password
yyyyyyyyyyyyyyyyyyyyyyyyyyyyy
Negozio test—————————————————————————————–
Url:
https://xxxxxxxxxxxxxxxx-test.myshopify.com/
Pwd di accesso alla visualizzazione:
xxxxxxxxxxxxxxxxx
Inserire queste credenziali nel file App.Config del programma DueBit.GoogleFeed.exe. Avviare il tool almeno una volta in modalità Massiva, ed assicurarsi che vengano inviati i files su FTP consultando il file di log.
Se il comando HTTP per avviare l’import funziona regolarmente, accedere al backoffice del sito di test:
Avviare la SYNC Completo e consultare l’esito rinfrescando la pagina con F5.
Al termine, se ci sono errori, verranno evidenziati nella colonna P.Error.
Cliccando il numero, verrà visualizzato il log. In questo caso non è stato inviato il record della quantità.
In caso contrario, gli articoli saranno presenti sul sito:
___________________________________________________________________
ANALISI TECNICA
Questa parte di guida è dedicata ai tecnici ed agli sviluppatori. Contiene anche quali campi compilare per l’invio delle informazioni del prodotto su shopify.
ANALISI DELLE VISTE E GESTIONE DATI
Le viste si trovano nello schema “googleFeed”:
sono presenti in modalità “1-Site” (il cliente ha un unico sito), “1-Site In Taglia” (il cliente ha un unico sito con articoli in taglia/colore), oppure in modalità “2-Sites” (il cliente ha un sito per aziende, ed un altro per cliente finale, con articoli standard.).
Per la modalità “1-Site”, le viste interessate sono sprovviste del postfisso “_B2x”.
Per la modalità “1-Site In Taglia”, le viste interessate sono provviste del postfisso “_InTaglia”.
Per la modalità azienda/cliente finale, le viste sono differenziate tra Business (B2B) e Consumer (B2C).
Le viste estraggono i dati filtrando le entità per ultima data aggiornamento, usando un marcatore specifico salvato sulla tabella delle impostazioni ogni qual volta il tool DueBit.GoogleFeed viene eseguito con successo. Il marcatore si chiama:
- “GoogleFeedLastDataCheck” (per la modalità 1-Site)
- “GoogleFeedLastDataCheck_B2B” (per la modalità 2-Sites, sito Business)
- “GoogleFeedLastDataCheck_B2C” (per la modalità 2-Sites, sito Consumer)
I dati delle viste, e le foto associate ai prodotti, vengono gestiti dal tool DUEBIT.GOOGLEFEED, che ha il compito di inviare su FTP i dati XML e le foto per la pubblicazione in shopify.
I files prodotti dal tool sono 5, ovvero:
- prodotti.xml
- Contiene gli articoli
- disponibilita.xml
- Contiene le giacenze
- listini.xml
- Contiene i prezzi di vendita online
- pstatus.xml
- Contiene lo stato del prodotto (attivo, bloccato, cancellato)
- riferimenti.xml
- Contiene il nome del file di immagine associato all’articolo
Essi vengono creati elaborando i dati delle viste
- googlefeed.Articoli
- googlefeed.Disponibilità
- googlefeed.Listini
- googlefeed.PStatus
- googlefeed.Riferimenti
Di seguito il tracciato record di ogni file.
Prodotti.xml – Versione 1 -Site (articoli normali) + Versione 2-Sites
- Id articolo: l’id articolo del prodotto
- Codice modello: viene usato il codice articolo;
- Codice variante: viene usato il codice articolo;
- Descrizione modello: viene esportata la descrizione articolo;
- Descrizione: è stata usata la Descrizione Html Estesa Web;
- Descrizione breve: è stata usata la Descrizione Html Breve Web;
- Descrizione speciale: è stata usata la Descrizione Web (testo lineare);
- SuperGruppoSuper, Gruppo super, e Gruppo: sono i tre livelli di categorizzazione (1-2-3). Vengono esportati i primi tre livelli delle categorie web. Oltre i tre livelli il dato viene perso e non esportato:
Nel caso specifico, SuperGruppoSuper è FERRAMENTA, GruppoSuper è Ferramenta–> Aria compressa, Gruppo è Ferramenta–> Aria compressa –> Compressori.
Nel caso specifico, SuperGruppoSuper è vuoto, GruppoSuper è “Cappellini”, Gruppo è “Berretti Nascita”- Settore: viene esportata la descrizione del reparto;
- Motivo: permette di creare un legame tra prodotti diversi, utilizzabile in differenti modalità su shopify o altre piattaforme web. Viene esportato il dato ulteriore “Motivo”, di tipo testo libero, presente nell’articolo. Se non presente, non viene esportato nulla.
- Brand: viene esportato il nome del brand;
- Peso: viene esportata il peso del prodotto, utile per calcolare le spese spedizione in shopify.
Prodotti.xml – Versione 1 -Site (articoli in taglia colore)
In questa modalità è necessario lavorare nel software ad 1 variante (TAGLIA), ed il colore indicarlo nella descrizione interna del prodotto e come dato ulteriore. Un prodotto con 4 colori di fatto sarà codificato come se fossero 4 articoli diversi nel gestionale DUE RETAIL.
In neretto i campi previsti nel tracciato XML,
- Id articolo: l’id articolo del prodotto
- Descrizione modello: viene esportata la descrizione articolo (non sarà comunque usata su web);
- Codice modello: viene usato il dato ulteriore “CODICE MODELLO” di tipo testo. Se non presente, viene usato il codice articolo;
- Codice variante: viene usato il dato ulteriore “CODICE VARIANTE” di tipo testo. Se non presente, viene esportata il dato ulteriore “colore” (vedi più avanti);
- Descrizione: è stata usata la Descrizione Html Estesa Web;
- Descrizione breve: è stata usata la Descrizione Html Breve Web;
- Descrizione speciale: è stata usata la Descrizione Web (testo lineare);
- SuperGruppoSuper, Gruppo super, e Gruppo: sono i tre livelli di categorizzazione (1-2-3). Vengono esportati i primi tre livelli delle categorie web. Oltre i tre livelli il dato viene perso e non esportato:
Nel caso specifico, SuperGruppoSuper è vuoto, GruppoSuper è “Cappellini”, Gruppo è “Berretti Nascita” - Settore: viene esportata la descrizione del reparto;
- Motivo: permette di creare un legame tra prodotti diversi, utilizzabile in differenti modalità su shopify o altre piattaforme web. Viene esportato il dato ulteriore “Motivo”, di tipo testo libero, presente nell’articolo. Se non presente, non viene esportato nulla.
- Brand: viene esportato il nome del brand;
- Colore: viene esportato il dato ulteriore “Colore”, di tipo combobox con valori prestabiliti, presente nell’articolo. Se non presente, non viene esportato nulla;
- Tessuto: viene esportato il dato ulteriore “Tessuto”, di tipo combobox con valori prestabiliti, presente nell’articolo. Se non presente, non viene esportato nulla;
- Stagione viene esportata la sigla e la descrizione della periodicità del prodotto;
- Peso: viene esportata il peso del prodotto, utile per calcolare le spese spedizione in shopify.
Disponibilita.xml – Versione 1 -Site (articoli standard) + Versione 2-Sites
- Viene richiesto l’EAN commerciale del prodotto, per poter gestire le ricerche commerciali del prodotto con il motore di ricerca Google.
Dovrà essere inserito nel campo WebRiferimento della tabArticoli:
- La giacenza esportata è complessiva di TUTTI i magazzini, ed è pari alla giacenza MENO l’impegnato a cliente (ordini a cliente).
Disponibilita.xml – Versione 1 -Site (articoli in taglia colore)
- Viene richiesto l’EAN commerciale del prodotto, per poter gestire le ricerche commerciali del prodotto con il motore di ricerca Google.
Dovrà essere inserito nel campo WebRiferimento della tabArticoli:
Nel caso l’EAN sia diverso per taglia, va inserito il barcode EAN all’interno della sezione Barcode, uno per ogni taglia specifica. Sarà la vista ad estrarre il barcode NON INTERNO, di tipo EAN 13, ed esportarlo al posto di quello di riferimento.L’articolo in taglia ha un suo EAN riferimento
Inserisco i barcode commerciali per 3 taglie su 4:
Vedo i barcode inseriti:
La vista estrae per le tre taglie il relativo EAN, per l’altra quello di riferimento:
- Viene esportata la specifica TAGLIA del prodotto
- La GIACENZA esportata è complessiva di TUTTI i magazzini, ed è pari alla giacenza MENO l’impegnato a cliente (ordini a cliente).
Listini.xml – Versione 1 -Site (articoli standard)
Viene esportato per ciascun articolo il prezzo del listino predefinito sul campo LI_PREZZO_RIF, ed il prezzo del listino web sul campo LI_PREZZO_VEN. Per il listino web deve esistere un listino con queste due spunte attive:
Listini.xml – Versione 1 -Site (articoli taglia colore)
Viene esportato per ciascun articolo e taglia il prezzo del listino predefinito sul campo LI_PREZZO_RIF, ed il prezzo del listino web sul campo LI_PREZZO_VEN. Per il listino web deve esistere un listino con queste due spunte attive:
Se la taglia è sprovvista di prezzo, non verrà esportato nessun prezzo. Se l’articolo non è gestito per taglia, verrà esportato il prezzo basel del listino.
Listini.xml – Versione 2-Sites (articoli standard)
Viene esportato per ciascun articolo il prezzo del listino predefinito sul campo LI_PREZZO_RIF ed il prezzo del listino B2B o B2C nel campo LI_PREZZO_VEN. Deve pertanto esistere un listino predefinito per il campo LI_PREZZO_RIF, e due listini che abbiano come descrizione listino “B2B” o “B2C”:
Non è necessario che questi due listini siano di tipo web.
Pstatus.xml (valido per tutti)
Mostra la situazione dell’articolo (Attivo, Bloccato, Cancellato). Per la modalità 1-Site, un articolo può essere:
- Attivo: se è “attivo” e “online”
- Bloccato: se è “attivo” e “non online”
- Cancellato: se non è più attivo
Per la modalità 2-Sites
- Attivo: se è “attivo” e “online” + dato ulteriore B2X “attivo”
- Disattivato: se è “attivo” e (“non online” oppure dato ulteriore B2X “non attivo”)
- Cancellato: se non è più “attivo”
Riferimenti.xml (valido per tutti)
Prepara ed invia l’elenco di files immagine associate al prodotto. Il nome della foto che verrà inviato è costruito dinamicamente concatenando:
- brand
- “trattino”
- descrizione articolo
- “trattino”
- id articolo
- “punto”
Funzionamento del tool Duebit.GoogleFeed
Il programma Duebit.GoogleFeed si basa su un file di configurazione dove è possibile indicare
- dati per l’invio a ftp
- quali viste esportare
- quali foto inviare
Configurando opportunamente il file, è quindi possibile produrre “n” file XML, inviarli ad un ftp, ed inviare un set di foto sempre su una cartella ftp. Editare il file DueBit.GoogleFeed.exe.xml.
Nella modalità 2-Sites, è necessario creare una copia del programma, per avere due cartelle distinte con due files di configurazione distinti.
Al suo interno troveranno posto queste sezioni:
MODALITA EXPORT
<!– ExportMode
0 = Differenziale (da ultimo export ad ora)
1 = Massivo (tutti i dati)
–>
<add key=”ExportMode” value=”1″ />
TAG DI SALVATAGGIO – USARE SENZA IL PREFISSO “_B2B” PER LA MODALITA’ 1-SITE, INDICARE IL PREFISSO PER LA MODALITà 2-SITES
<!– Tag di salvataggio su tabella impostazioni affinchè le viste filtrino automaticamente
i dati da visualizzare –>
<add key=”GoogleFeedLastDataCheckTagDb” value=”GoogleFeedLastDataCheck_B2B” />
DATI DI CONNESSIONE FTP
<!– FTP Data connect –>
<add key=”FtpUsername” value=”blabla.it” />
<add key=”FtpPassword” value=”blablabla” />
<add key=”FtpHost” value=”blabla.blablabla.it” />
<add key=”FtpHostPort” value=”21″ />
DATI DI ENCRYPTING CONESSIONE FTP
<!– ftpEncryptionMode – Valori consentiti:
None = 0, // Plain text [Default]
Implicit = 1, // FTPS encryption is used from the start of the connection, port 990.
Explicit = 2, // Connection starts in plain text and FTPS encryption is enabled with the AUTH
// command immediately after the server greeting.
Auto = 3 // FTPS encryption is used if supported by the server, otherwise it falls back to
// plaintext FTP communication.
–>
<add key=”FtpEncryptionMode” value=”0″ />
PROTOCOLLO CONESSIONE FTP
<!– ftpSslProtocols – Valori consentiti:
None = 0,
Ssl2 = 12, // Specifies the SSL 2.0 protocol. SSL 2.0 has been superseded by the TLS protocol
// and is provided for backward compatibility only.
Ssl3 = 48, // Specifies the SSL 3.0 protocol. SSL 3.0 has been superseded by the TLS protocol
// and is provided for backward compatibility only.
Tls = 192, // Specifies the TLS 1.0 security protocol. The TLS protocol is defined in IETF
// RFC 2246.
Default = 240, [DEFAULT] // Use None instead of Default. Default permits only the Secure Sockets Layer (SSL)
// 3.0 or Transport Layer Security (TLS) 1.0 protocols to be negotiated, and those
// options are now considered obsolete. Consequently, Default is not allowed in
// many organizations. Despite the name of this field, System.Net.Security.SslStream
// does not use it as a default except under special circumstances.
Tls11 = 768, // Specifies the TLS 1.1 security protocol. The TLS protocol is defined in IETF
// RFC 4346.
Tls12 = 3072 // Specifies the TLS 1.2 security protocol. The TLS protocol is defined in IETF
// RFC 5246.
–>
<add key=”FtpSslProtocols” value=”240″ />
TIPO DI CONESSIONE DATI FTP
<!– ftpDataConnectionType – Valori consentiti:
AutoPassive = 0, [DEFAULT] // This type of data connection attempts to use the EPSV command and if the server
// does not support EPSV it falls back to the PASV command before giving up unless
// you are connected via IPv6 in which case the PASV command is not supported.
PASV = 1, // Passive data connection. EPSV is a better option if it’s supported. Passive connections
// connect to the IP address dictated by the server which may or may not be accessible
// by the client for example a server behind a NAT device may give an IP address
// on its local network that is inaccessible to the client. Please note that IPv6
// does not support this type data connection. If you ask for PASV and are connected
// via IPv6 EPSV will automatically be used in its place.
PASVEX = 2, // Same as PASV except the host supplied by the server is ignored and the data connection
// is made to the same address that the control connection is connected to. This
// is useful in scenarios where the server supplies a private/non-routable network
// address in the PASV response. It’s functionally identical to EPSV except some
// servers may not implement the EPSV command. Please note that IPv6 does not support
// this type data connection. If you ask for PASV and are connected via IPv6 EPSV
// will automatically be used in its place.
EPSV = 3, // Extended passive data connection, recommended. Works the same as a PASV connection
// except the server does not dictate an IP address to connect to, instead the passive
// connection goes to the same address used in the control connection. This type
// of data connection supports IPv4 and IPv6.
AutoActive = 4, // This type of data connection attempts to use the EPRT command and if the server
// does not support EPRT it falls back to the PORT command before giving up unless
// you are connected via IPv6 in which case the PORT command is not supported.
PORT = 5, // Active data connection, not recommended unless you have a specific reason for
// using this type. Creates a listening socket on the client which requires firewall
// exceptions on the client system as well as client network when connecting to
// a server outside of the client’s network. In addition the IP address of the interface
// used to connect to the server is the address the server is told to connect to
// which, if behind a NAT device, may be inaccessible to the server. This type of
// data connection is not supported by IPv6. If you specify PORT and are connected
// via IPv6 EPRT will automatically be used instead.
EPRT = 6 // Extended active data connection, not recommended unless you have a specific reason
// for using this type. Creates a listening socket on the client which requires
// firewall exceptions on the client as well as client network when connecting to
// a server outside of the client’s network. The server connects to the IP address
// it sees the client coming from. This type of data connection supports IPv4 and
// IPv6.
–>
<add key=”FtpDataConnectionType” value=”0″ />
CHIAMATE HTTP PRE E POST IMPORTAZIONE (opzionali)
<!– WEB CALL
Chiamate web pre e post importazione
Lasciare vuoto per non eseguire
–>
<add key=”HttpRequestPreImport” value=”http://blabla/blabla/php/synker_worker.php?Token=blablab” />
<add key=”HttpRequestPostImport” value=”http://blabla/blabla/php/synker_worker.php?Token=blablab” />
SEZIONE DATI – Attiva l’invio dei 5 file XML all’FTP
<add key=”SecData_FtpExport” value=”1″ />
<add key=”SecData_FtpFolder” value=”/xml” />
Ogni sezione ha 4 tag, preceduti dalla sigla e dal numero progressivo di sezione:
– Export => valori consentiti: 1/0 (attiva o disattiva la creazione dell’XML)
– ExportDataTableName => Indicare il nome della “tabella” rappresentata come header di ogni record/nodo XML
– ExportFile => Path e nome file completo di estensione contenente l’output dei dati
– ExportSql => Sintassi SQL per l’export dei dati.
Per aggiungere una nuova sezione, copiare le 4 chiavi ed incrementare di 1 il contatore (es: Sec6_….)
<add key=”Sec1_Export” value=”1″ />
<add key=”Sec1_ExportDataTableName” value=”Prodotti” />
<add key=”Sec1_ExportFile” value=”C:\2BIT\DueBit.GoogleFeed\Exported\Prodotti_{0}_{1}.xml” />
<add key=”Sec1_ExportSql” value=”SELECT * FROM googleFeed.Articoli” />
<add key=”Sec2_Export” value=”1″ />
<add key=”Sec2_ExportDataTableName” value=”PSTATUS” />
<add key=”Sec2_ExportFile” value=”C:\2BIT\DueBit.GoogleFeed\Exported\PStatus_{0}_{1}.xml” />
<add key=”Sec2_ExportSql” value=”SELECT * FROM googleFeed.Pstatus” />
<add key=”Sec3_Export” value=”1″ />
<add key=”Sec3_ExportDataTableName” value=”LISTINI” />
<add key=”Sec3_ExportFile” value=”C:\2BIT\DueBit.GoogleFeed\Exported\Listini_{0}_{1}.xml” />
<add key=”Sec3_ExportSql” value=”SELECT * FROM googleFeed.Listini” />
<add key=”Sec4_Export” value=”1″ />
<add key=”Sec4_ExportDataTableName” value=”Riferimenti” />
<add key=”Sec4_ExportFile” value=”C:\2BIT\DueBit.GoogleFeed\Exported\Riferimenti_{0}_{1}.xml” />
<add key=”Sec4_ExportSql” value=”SELECT * FROM googleFeed.Riferimenti” />
<add key=”Sec5_Export” value=”1″ />
<add key=”Sec5_ExportDataTableName” value=”Disponibilita” />
<add key=”Sec5_ExportFile” value=”C:\2BIT\DueBit.GoogleFeed\Exported\Disponibilita_{0}_{1}.xml” />
<add key=”Sec5_ExportSql” value=”SELECT * FROM googleFeed.Disponibilita” />
SEZIONE FOTO – Attiva l’invio delle foto all’FTP
<add key=”SecPhoto_FtpExport” value=”1″ />
<add key=”SecPhoto_FtpFolder” value=”/media” />
<add key=”SecPhoto_Sql” value=”SELECT [DuebitPercorsoImmagine], RIFERIMENTO FROM googleFeed.Riferimenti ORDER BY RF_RECORD_ID, RF_TIPO DESC, RIFERIMENTO” />
Il programma scrive un file di log dettagliato con tutte le operazioni sostenute (DueBitGoogleFeed.log).