Διασύνδεση με SoftOne

Σύνδεση

Για να συνδεθείτε με το SoftOne περιβάλλον σας, χρειάζεται να συμπληρώσετε τα παρακάτω πεδία στην φόρμα Connection settings για να γίνει η κλήση στο login service.

URL string απαραίτητο

Το URL του SoftOne περιβάλλοντος.
Π.χ. https://example.oncloud.gr/s1services.

Username string απαραίτητο

Το όνομα χρήστη για την σύνδεση στο SoftOne περιβάλλον.

Password string απαραίτητο

Ο κωδικός πρόσβασης για την σύνδεση στο SoftOne περιβάλλον.

Web Service ID (AppId) integer απαραίτητο

Το Web Service ID (AppId) που έχει οριστεί στο SoftOne περιβάλλον για την διασύνδεση.
Π.χ. 2001.

Σε περίπτωση που γνωρίζετε τον χρήστη, μπορείτε να συμπληρώσετε τα στοιχεία του στα παρακάτω πεδία.

Company integer απαραίτητο

Ο κωδικός της εταιρείας στην οποία ανήκει ο χρήστης.
Π.χ. 1000.

Branch integer απαραίτητο

Ο κωδικός του υποκαταστήματος στην οποία ανήκει ο χρήστης.
Π.χ. 1000.

Module integer απαραίτητο

Ο κωδικός του module στο οποίο ανήκει ο χρήστης.
Π.χ. 0.

Ref ID integer απαραίτητο

Το Ref ID του χρήστη.
Π.χ. 1.

Παράδειγμα κλήσης login

URL
https://example.oncloud.gr/s1services
Username
demo
Password
secret
Web Service ID
2001

REQUEST

{
  "service": "login",
  "username": "demo",
  "password": "secret",
  "appId": 2001
}

RESPONSE

{
  "success": true,
  "clientID": "Wj8T3tvs...tlrT8",
  "objs": [
    {
        "COMPANY": "1000",
        "COMPANYNAME": "Demo Company SA",
        "BRANCH": "1000",
        "BRANCHNAME": "Athens",
        "MODULE": "0",
        "MODULENAME": "Center",
        "REFID": "1",
        "REFNAME": "Administrator"
    }
  ]
}

Παράδειγμα κλήσης login με στοιχεία χρήστη

Company
1000
Branch
1000
Module
0
Ref ID
1

REQUEST

{
  "service": "login",
  "username": "demo",
  "password": "secret",
  "appId": 2001,
  "company": 1000,
  "branch": 1000,
  "module": 0,
  "refid": 1
}

RESPONSE

{
  "success": true,
  "clientID": "Wj8T3tvs...tlrT8"
}

Εισαγωγές δεδομένων

Απαιτούνται 3 κλήσεις: μία για τα προϊόντα, μία για τις τιμές και μία για τα αποθέματα. Τα δεδομένα που χρειάζονται για την εισαγωγή περιγράφονται στις αντίστοιχες ενότητες για το Magento και το WooCommerce.

Η εισαγωγή δεδομένων μπορεί να γίνει με browser, με custom endpoint ή με SQL data.

Συνήθως επιλέγεται η χρήση των endpoints διότι υπάρχει μεγαλύτερη ευελιξία στα δεδομένα που μπορούμε να έχουμε στη διάθεσή μας. Σε κάθε περίπτωση μας ενδιαφέρει να λαμβάνουμε από το ERP τα differentials.

Για να γίνει η λήψη των differentials, το Sébastien στέλνει με την κλήση την τελευταία ημερομηνία συγχρονισμού που έγινε επιτυχώς. Το SoftOne θα πρέπει να επιστρέφει μόνο τα δεδομένα που έχουν ενημερωθεί μετά από αυτή την ημερομηνία. Σε περίπτωση που δε σταλεί πεδίο με ημερομηνία, τότε θα πρέπει να επιστραφούν όλα τα δεδομένα.

Εισαγωγή από browser

Browser name string απαραίτητο

Το όνομα του browser που αποστέλλεται στην παράμετρο list στο service getBrowserInfo.
Π.χ. getProducts.

Filter parameter string προαιρετικό

Το όνομα του πεδίου από τον πίνακα ITEM που αποστέλλεται στην παράμετρο filters.
Π.χ. ITEM.WEBVIEW.

Filter value string προαιρετικό

Η τιμή που αποστέλλεται στην παραπάνω παράμετρο φίλτρου.
Π.χ. 1.

Παράδειγμα κλήσης getBrowserInfo

Browser name
getProducts
Filter parameter
ITEM.WEBVIEW
Filter value
1

REQUEST

{
  "service": "getBrowserInfo",
  "clientID": "Wj8T3tvs...tlrT8",
  "appId": 2001,
  "object": "ITEM",
  "list": "getProducts",
  "filters": "ITEM.WEBVIEW=1"
}

RESPONSE

{
  "success": true,
  "upddate": "20251001 00:00:00",
  "formDesign": "ITEM",
  "reqID": "A1A000000A0AA0A0A",
  "totalcount": 1000,
  "fields": [
    {
      "name": "ZOOMINFO",
      "type": "string"
    },
    {
      "name": "ITEM.CODE",
      "type": "string"
    },
    {
      "name": "ITEM.NAME",
      "type": "string"
    }
  ],
  "columns": [
    {
      "dataIndex": "ITEM.CODE",
      "header": "Κωδικός s1",
      "width": 180,
      "decs": 0,
      "hidden": false,
      "sortable": true
    },
    {
      "dataIndex": "ITEM.NAME",
      "header": "Περιγραφή",
      "width": 420,
      "decs": 0,
      "hidden": false,
      "sortable": true
    },
  ]
}

Παράδειγμα κλήσης getBrowserData

REQUEST

{
  "service": "getBrowserData",
  "clientID": "Wj8T3tvs...tlrT8",
  "appId": 2001,
  "reqID": "A1A000000A0AA0A0A",
  "start": 0,
  "limit": 1000
}

RESPONSE

{
  "success": true,
  "totalcount": 1000,
  "rows": [
    [
      "ITEM;0001",
      "001-001-0001",
      "Όνομα προϊόντος"
    ]
  ]
}

Εισαγωγή από custom endpoint

Το request method είναι GET και τα δεδομένα φιλτράρονται με παραμέτρους query string.

Το response πρέπει να είναι σε μορφή JSON και πρέπει να έχει ένα πεδίο data που να περιέχει έναν πίνακα με τα δεδομένα.

Endpoint URL string απαραίτητο

Το URL του custom endpoint που θα φέρει τα δεδομένα.
Π.χ. https://example.oncloud.gr/s1services/js/getPrices.

Date parameter string προαιρετικό

Το όνομα του πεδίου που θα χρησιμοποιηθεί για φιλτράρισμα των δεδομένων με βάση την ημερομηνία.
Π.χ. from.

Date format string προαιρετικό

Η μορφή ημερομηνίας ISO 8601 που θα χρησιμοποιηθεί για φιλτράρισμα των δεδομένων με βάση την ημερομηνία.
Π.χ. YYYY-MM-DD hh:mm:ss.

Page name string προαιρετικό

Το όνομα του πεδίου που θα χρησιμοποιηθεί για να οριστεί ο αριθμός σελίδας.
Η αρχική σελίδα είναι 1.
Π.χ. page.

Per Page name string προαιρετικό

Το όνομα του πεδίου που θα χρησιμοποιηθεί για να οριστεί ο αριθμός αποτελεσμάτων ανά σελίδα.
Π.χ. per_page.

Per Page number integer προαιρετικό

Ο αριθμός των αποτελεσμάτων ανά σελίδα.
Π.χ. 1000.

Παράδειγμα κλήσης custom endpoint

Endpoint URL
https://example.oncloud.gr/s1services/js/getPrices
Date parameter
from
Date format
YYYY-MM-DD hh:mm:ss
Page name
page
Per Page name
per_page
Per Page number
1000

REQUEST

GET https://example.oncloud.gr/s1services/js/getPrices?from=2025-01-01%2000:00:00&page=1&per_page=1000

RESPONSE

{
  "success": true,
  "data": [
    {
      "ITEM": "1001",
      "Price": 29.99
    },
    {
      "ITEM": "1002",
      "Price": 19.99
    }
  ],
}

Εισαγωγή από SqlData

SQL name string απαραίτητο

Το όνομα του SQL data που αποστέλλεται στην παράμετρο SqlName στο service SqlData.

Date parameter string προαιρετικό

Το όνομα της παραμέτρου που θα χρησιμοποιηθεί για να φιλτράρει τα δεδομένα με βάση την ημερομηνία.
Π.χ. date.

Date format string προαιρετικό

Η μορφή ISO 8601 της ημερομηνίας που θα χρησιμοποιηθεί για να φιλτράρει τα δεδομένα με βάση την ημερομηνία.
Π.χ. YYYY-MM-DD hh:mm:ss.

Query parameters string προαιρετικό

Πρόσθετες παράμετροι σε μορφή query string μπορούν να χρησιμοποιηθούν για να φιλτράρουν τα δεδομένα.
Αυτές οι παράμετροι προστίθενται απευθείας στο JSON payload.
Π.χ. οι παράμετροι eshop=1&status=active στέλνονται ως {"eshop": "1", "status": "active"}.

Παράδειγμα κλήσης SqlData

SQL name
getStocks
Date parameter
date
Date format
YYYY-MM-DD hh:mm:ss
Query parameters
eshop=1&status=active

REQUEST

{
  "service": "SqlData",
  "clientID": "Wj8T3tvs...tlrT8",
  "appId": "2001",
  "SqlName": "getStocks",
  "eshop": "1",
  "status": "active",
  "date": "2025-01-01 00:00:00",
  "ROWCNT": 2000,
  "OFFSET": 0
}

RESPONSE

{
  "success": true,
  "totalcount": 1000,
  "rows": [
    {
      "ITEM": "1001",
      "QTY": 50
    },
    {
      "ITEM": "1002",
      "QTY": 20
    }
  ]
}

Εισαγωγές παραγγελιών

Η διαδικασία εισαγωγής παραγγελίας στο SoftOne περιγράφεται στα παρακάτω βήματα:

  1. SqlData για αναζήτηση παραγγελίας, προαιρετικά.
  2. getBrowserInfo με object CUSTOMER και φίλτρα αναζήτησης πελάτη
    • Αν δεν υπάρχει πελάτης: αναζήτηση με τα επόμενα φίλτρα ή setData με object CUSTOMER, και table CUSTOMER, CUSBRANCH, CUSEXTRA
    • Αν υπάρχουν παραπάνω από ένας πελάτες: αναζήτηση με τα επόμενα φίλτρα ή σφάλμα
    • Αν υπάρχει ακριβώς ένας πελάτης: getBrowserData με object CUSTOMER
      • Αν δεν υπάρχει διεύθυνση: getData με object CUSTOMER και το κλειδί του πελάτη
        • Αν δεν υπάρχει branch: setData με object CUSTOMER, και table CUSBRANCH
  3. setData με object SALDOC, και table SALDOC, ITELINES, MTRDOC, EXPANAL

Έλεγχος υπάρχουσας παραγγελίας

Για την αποφυγή αποστολής πολλαπλών παραγγελιών, υπάρχει δυνατότητα να γίνεται έλεγχος στο SoftOne μέσω SqlData για υπάρχουσα παραγγελία. Αυτή η κλήση γίνεται με μία παράμετρο η οποία έχει ένα μοναδικό αναγνωριστικό της παραγγελίας. Στο διαχειριστικό του Sébastien στην καρτέλα Integrations > Softone > Order Settings, στην ενότητα Check if order exists συμπληρώστε τα παρακάτω πεδία:

SQL script name string απαραίτητο

Το όνομα του SQL data που θα χρησιμοποιηθεί για την αναζήτηση της παραγγελίας στο SoftOne.
Π.χ. findOrder.

SQL parameter name string απαραίτητο

Το όνομα της παραμέτρου που θα χρησιμοποιηθεί για να φιλτράρει τις παραγγελίες
Π.χ. orderNumber.

SQL parameter value string απαραίτητο

Το πεδίο της παραγγελίας που θα σταλεί στην παραπάνω παράμετρο.
Π.χ. Order > Increment ID.

SQL row field string απαραίτητο

Το όνομα του πεδίου στο object της πρώτης γραμμής των αποτελεσμάτων που καθορίζει αν η παραγγελία υπάρχει ή όχι.
Π.χ. orderFound.

Κλήση SqlData για έλεγχο μοναδικής παραγγελίας

SQL script name
findOrder
SQL parameter name
orderNumber
SQL parameter value
Order > Increment ID
SQL row field
orderFound

REQUEST

{
  "service": "SqlData",
  "clientID": "Wj8T3tvs...tlrT8",
  "appId": "2001",
  "SqlName": "findOrder",
  "orderNumber": "00001234"
}

RESPONSE

{
  "success": true,
  "totalcount": 1,
  "rows": [
    {
      "orderFound": true
    }
  ]
}

Στο διαχειριστικό του Sébastien στις καρτέλες CUSTOMER, CUSBRANCH, CUSEXTRA, SALDOC, ITELINES, MTRDOC, EXPANAL υπάρχει η δυνατότητα να γίνει αντιστοίχιση των δεδομένων της παραγγελίας του e-shop με τα πεδία των πινάκων του SoftOne.