# Διασύνδεση με Pylon

## Σύνδεση

Για να συνδεθείτε με το Pylon περιβάλλον σας, χρειάζεται να συμπληρώσετε τα παρακάτω πεδία στην φόρμα **Connection settings** για να γίνει η κλήση στο endpoint `/exesjson/elogin`.

### Host (string, απαραίτητο)

Το URL του Pylon περιβάλλοντος.
Π.χ. `https://198.51.100.0`.

### API code (string, απαραίτητο)

Το API code για την σύνδεση στο Pylon περιβάλλον.
Π.χ. `DE51TR0WG3F4Q1X`.

### Application name (string, απαραίτητο)

Το application name για την σύνδεση στο Pylon περιβάλλον.
Π.χ. `Vendor.App`.

### Database alias (string, απαραίτητο)

Το database alias για την σύνδεση στο Pylon περιβάλλον.
Π.χ. `PylonDB`.

### Username (string, απαραίτητο)

Το όνομα χρήστη που έχει οριστεί στο Pylon περιβάλλον για την διασύνδεση.
Π.χ. `demo`.

### Password (string, απαραίτητο)

Ο κωδικός πρόσβασης που έχει οριστεί στο Pylon περιβάλλον για την διασύνδεση.
Π.χ. `secret`.

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

- Host: `https://198.51.100.0`
- API code: `DE51TR0WG3F4Q1X`
- Application name: `Vendor.App`
- Database alias: `PylonDB`
- Username: `demo`
- Password: `secret`

#### REQUEST

POST `https://198.51.100.0/exesjson/elogin`

```json
{
  "apicode": "DE51TR0WG3F4Q1X",
  "applicationname": "Vendor.App",
  "databasealias": "PylonDB",
  "username": "demo",
  "password": "secret"
}
```

#### RESPONSE

```json
{
  "Status": "OK",
  "Result": "{
    \"administrator\": 1,
    \"guest\": 0,
    \"created\": \"2025-01-01T00:00:00.000\",
    \"expired\": \"2025-01-01T01:00:00.000\",
    \"username\": \"demo\",
    \"cookie\": \"EAA...BgM=\"
  }",
  "Error": null,
  "ErrorCode": null,
  "Benchmark": 0
}
```

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

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

Η εισαγωγή δεδομένων μπορεί να γίνει με κλήση `getdata`.

### Εισαγωγή από getdata

### Entity code (string, απαραίτητο)

Το entitycode που θα φέρει τα δεδομένα.
Π.χ. `GetProducts`.

### Package size (integer, απαραίτητο)

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

### Date parameter (string, προαιρετικό)

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

### Date format (string, προαιρετικό)

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

### Παράδειγμα κλήσης public query

- Entity code: `GetProducts`
- Package size: `1000`
- Date parameter: `@UpdDate`
- Date format: `YYYY/MM/DD hh:mm:ss`

#### REQUEST

POST `https://198.51.100.0/exesjson/getdata`

```json
{
  "cookie": "EAA...BgM=",
  "apicode": "DE51TR0WG3F4Q1X",
  "entitycode": "GetProducts",
  "packagenumber": 1,
  "packagesize": 1000,
  "extras": "{
    \"@UpdDate\": \"2025\/01\/01 00:00:00\"
  }"
}
```

#### RESPONSE

```json
{
  "Status": "OK",
  "Result": "{
    \"Cookie\": \"EAA...BgM=\",
    \"Data\": [
        {
            \"sku\": \"PROD-001\",
            \"name\": \"Product 001\"
        },
        {
            \"sku\": \"PROD-002\",
            \"name\": \"Product 002\"
        }
    ],
  }"
}
```

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

Η διαδικασία εισαγωγής παραγγελίας στο Pylon γίνεται με κλήση `postdata`.

Στις καρτέλες **Orders table**, **Order Items table** υπάρχει η δυνατότητα να γίνει αντιστοίχιση των δεδομένων της παραγγελίας του e-shop με τα πεδία των πινάκων του Pylon.

#### Σημαντικό

Για να γίνει η αντιστοίχιση των πεδίων θα πρέπει να σταλούν οδηγίες από τον τεχνικό ή τον υπεύθυνο του ERP. Συνήθως είναι ένα JSON αρχείο με το επιθυμητό payload.

### Παράδειγμα δημιουργίας παραγγελίας

- Entity code: `CreateOrder`

#### REQUEST

POST `https://198.51.100.0/exesjson/postdata`

```json
{
  "cookie": "EAA...BgM=",
  "apicode": "DE51TR0WG3F4Q1X",
  "entitycode": "CreateOrder",
  "data": "{
    \"CstmTIN\": \"123456789\",
    \"CstmName\": \"John Doe\",
    \"CstmEmail\": \"customer@example.com\",
    \"CstmBillingAddress\": \"Οδός 123\",
    \"CstmCity\": \"Πόλη\",
    \"CstmPrefecture\" : \"Περιφέρεια\",
    \"CstmPostalCode\": \"12345\",
    \"CstmCountryISO\": \"GR\",
    \"CstmPhone1\": \"2310221500\",
    \"CstmPrfsName\": \"Απασχόληση\",
    \"CstmTaxOfficeCode\": \"1153\",
    \"OriginSite\": \"2\",
    \"IsInvoice\": \"1\",
    \"DocCode\": \"123456789\",
    \"DocDate\": \"2025-01-01\",
    \"ShpmCode\": \"000001\",
    \"PmmtCode\": \"000001\",
    \"ShpmAdchVal\": 2.0,
    \"PmmtAdchVal\": 1.0,
    \"ShpmName\": \"Όνομα Παραλήπτη\",
    \"ShpmAddress\": \"Οδός 123\",
    \"ShpmCity\": \"Πόλη\",
    \"ShpmPostalCode\": \"12345\",
    \"ShpmPrefecture\": \"Περιφέρεια\",
    \"ShpmPhone1\": \"2310221500\",
    \"ShpmCountry\": \"GR\",
    \"ShipJustification\": \"Σχόλιο Αποστολής\",
    \"DocRemarks\": \"Σχόλιο Παραγγελίας\",
    \"TotalDiscount\": \"0.0\",
    \"Lines\": [
      {
        \"CenlSKU\": \"12345\",
        \"CenlPrice\": 1.0,
        \"CenlQty\": 1.0
      },
      {
        \"CenlSKU\": \"23456\",
        \"CenlPrice\": 2.0,
        \"CenlQty\": 1.0
      },
      {
        \"CenlSKU\": \"34567\",
        \"CenlPrice\": 3.0,
        \"CenlQty\": 1.0
      }
    ]
  }",
  "extras": "{}"
}
```

#### RESPONSE

```json
{
  "Status": "OK",
  "Result": "{
    \"Cookie\": \"EAA...BgM=\",
    \"EntityId\": \"61c79b07-0268-3eb2-aa7c-02b3b1f2faed\"
  }"
}
```
