Opencart est l'une des boutiques en ligne les plus courantes. Dans de nombreux cas, la tâche d'intégration avec un système de comptabilité d'entrepôt (le plus souvent avec 1C) se pose.
L'intégration implique, au minimum, le transfert des commandes de l'IM vers le système d'entrepôt pour le traitement et l'envoi des marchandises à l'acheteur et la mise à jour de la quantité de marchandises dans l'IM en fonction de la disponibilité réelle dans l'entrepôt.
Souvent, la tâche consiste également à synchroniser les marchandises elles-mêmes, leurs paramètres, leurs photos, etc.
La difficulté est que, en règle générale, des modifications doivent être apportées à la fois dans la messagerie instantanée et dans le système d'entrepôt, ce qui signifie que le développeur doit connaître les deux systèmes ou doit impliquer un autre développeur. Il existe des solutions toutes faites, mais elles nécessitent généralement une finition ou une rémunération, et nécessitent toujours une finition.
Pour résoudre ce problème, un module a été créé pour OpenCard qui étend l'API OpenCart permettant d'effectuer des modifications uniquement du côté du système comptable.
Le module est open source gratuit, situé sur le
github .
Le module a été développé pour un système comptable
spécifique , mais il est écrit de manière à pouvoir être utilisé par tout autre programme tiers.
Le module est installé dans la messagerie instantanée soit de manière standard via le panneau d'administration, soit en le copiant simplement dans le dossier catalogue / contrôleur / api. Le module se compose d'un fichier. Aucune modification des paramètres ou de la structure des cartes ouvertes n'est requise.
Bien sûr, dans le panneau d'administration, vous devez générer l'API KEY, qui sera ensuite définie dans les paramètres du système d'entrepôt pour se connecter à l'API avant d'y accéder.
Travail vérifié avec OpenCart 2.3 et 3.0
Le module fournit plusieurs fonctions API pour travailler avec les commandes et les marchandises.
Conformément aux accords de carte ouverte, les paramètres sont transmis à l'aide de la méthode POST et un jeton spécial doit être obtenu avant d'accéder à l'API. Les données sont échangées au format JSON. Tous ces outils sont standard pour travailler avec l'API OpenCart.
Travailler avec des commandes
Lorsque de nouvelles commandes apparaissent dans la messagerie instantanée, elles doivent être importées dans le système d'entrepôt, c'est-à-dire qu'en fonction de celles-ci, les documents appropriés (enregistrements, etc.) doivent être créés dans le système d'entrepôt, traités et envoyés au client.
Les commandes sont importées en appelant la fonction
commandes () .
Pour obtenir uniquement les commandes nécessaires, le paramètre status_id avec le statut des commandes est transmis. Étant donné que les statuts de la carte ouverte sont créés par le panneau d'administration et peuvent être n'importe quoi, vous devez d'abord obtenir une liste des statuts à l'aide de la méthode
statuses () , qui renvoie un tableau de valeurs-clés avec des identifiants et des noms de statuts.
Le système comptable présente ces statuts à des fins de clarification dans une sorte de liste déroulante. Le gestionnaire sélectionne parmi ces statuts celui qui correspond à la nouvelle commande.
Avec la commande vient une liste de marchandises et de données client pour la livraison.
Pour identifier les commandes, le système comptable doit écrire l'ID de la commande dans un attribut de la commande interne. Ces identifiants mettent à jour les statuts dans le MI et vérifient également que la commande a déjà été importée.
Les mises à jour de statut dans la messagerie instantanée sont effectuées par la fonction
updateorder ()Le gestionnaire sélectionne les commandes nécessaires (système comptable) dans l'état souhaité (par exemple, la commande est en cours de traitement) et met à jour les statuts des commandes initiales correspondantes dans le MI. Le tableau de valeurs-clés est transféré - l'ID de commande du MI et l'ID d'état du MI à partir de la liste déroulante proposée par le système.
Par exemple, les commandes peuvent être mises à jour après avoir été acceptées pour traitement, expédiées au client, livrées au client et fermées. Ceci est à la discrétion du gestionnaire.
Bien sûr, si les statuts des deux systèmes sont clairement définis et ne changent pas, les appels d'API avec des statuts fixes peuvent être suspendus sur un planificateur et appelés automatiquement.
Travailler avec des marchandises
Lorsque vous travaillez avec des marchandises, il est le plus souvent nécessaire de mettre à jour la quantité réelle de marchandises dans l'entrepôt et les prix dans le magasin.
Afin d'échanger des données, les marchandises dans le MI doivent être synchronisées avec les marchandises dans l'entrepôt. La conformité est fournie par l'article, mais si vous le souhaitez, vous pouvez ajuster le code et utiliser un autre paramètre, par exemple le nom (bien que ce ne soit pas une bonne idée).
Pour ajouter des produits au magasin, utilisez la fonction
addproducts () .
Les marchandises qui ne s'y trouvent pas encore sont transférées au magasin. Afin de ne pas transférer les doublons, vous pouvez obtenir du magasin une liste d'articles existants en utilisant la méthode
articles () .
Pour que les marchandises entrent directement dans la catégorie souhaitée, vous devez d'abord obtenir une liste de catégories à l'aide de la méthode
cats () et donner au gestionnaire la possibilité de sélectionner la catégorie souhaitée dans la liste. Après cela, les marchandises sont réenregistrées à l'aide d'outils standard dans le panneau d'administration d'OpenCart.
Les marchandises sont transférées sous forme de nom, d'article, de description (le cas échéant), de prix et de quantité. Dans certains cas, la tâche consiste à transférer les attributs, toutes les descriptions, les photos, etc. depuis l'entrepôt. Mais à cet égard, il existe des doutes quant à l'opportunité de créer tout cela du côté du système comptable.
Premièrement, pour la comptabilité d'entrepôt classique, le nom et le numéro d'article, c'est-à-dire les données utilisées dans les factures et les commandes, suffisent.
Deuxièmement, le panneau d'administration IM dispose déjà de moyens réguliers pour former des fiches produits.
Troisièmement, le transfert et la coordination de structures complexes telles qu'un arbre de catégories, d'attributs, d'images, etc., est une activité très difficile et, comme il ressort de ce qui précède, n'est pas nécessaire.
De telles solutions ont du sens si le système comptable fonctionne avec d'autres ressources, télécharge des données sur les marchés, par exemple. Bien que je sois sûr qu'il existe des modules pour la carte ouverte qui téléchargent les caractéristiques et les photos des marchandises sur les marchés à partir de la carte ouverte.
S'il s'avère que l'IM possède déjà des marchandises au moment de la mise en œuvre du système d'entrepôt, vous pouvez obtenir une liste de marchandises de l'IM à l'aide de la méthode
getproducts () et l'ajouter au
catalogue de marchandises
du système comptable. L'unicité est également vérifiée par article.
Ensuite, les fonctions principales
mettent à jourquantity () et
updateprice () pour mettre à jour la quantité et le prix dans le MI conformément aux données de l'entrepôt. Les fonctions transmettent le tableau de valeurs-clés (numéro d'article ou prix) et ne nécessitent pas de paramètres, c'est-à-dire qu'elles peuvent être démarrées par le planificateur.
Comme déjà mentionné, l'avantage du module est l'absence de toute modification du code OpenCart. Si nécessaire, le module est facilement finalisé - pour transférer des données supplémentaires, il vous suffit d'ajouter une nouvelle clé au tableau associatif correspondant. Les données seront emballées puis déballées sous la même forme du côté de la réception.
Dans le cas où le système de comptabilité est écrit en PHP, il existe une fonction
prête à l'emploi pour appeler l'API opencards (vous pouvez simplement supprimer la ligne du message d'erreur du système).