1.2.1. Import date

Primul pas din procesare este obținerea unui fișier sau a unui set de fișiere pentru a le importa. La rularea procesului se poate specifica un fișier EDI sau un procesor EDI. În cazul în care se selectează un fișier se va rula direct importul acestuia, în cazul în care se specifică un procesor atunci este instanțiată clasa specificată în fereastra "EDI Processor Type" prin intermediul procesorului selectat. Clasa instanțiată trebuie să returneze o lista de fișiere temporare ce urmează a fi importate unul câte unul.

Un fișier importat poate conține unul sau mai multe documente. Tranzacțiile sunt gestionate la nivel de fișier, dacă un fișier dă eroare la import, se salvează informația în log, se face rollback la tranzacție și se continuă cu următorul fișier (fără import parțial din fișier, dacă conține mai multe documente); dacă fișierul este importat cu succes, se salvează informația în log (unde se specifică și numărul de documente procesate) și se dă comit la tranzacția curentă. Dacă importul se face dintr-o căsuță de mail atunci mesajul citit va fi mutat într-un folder denumit "Processed" (doar dacă a fost importat cu succes, altfel rămâne în "Inbox". Dacă folderul nu există, va fi creat). Se trece la următorul fișier.

Procesarea efectivă a unui fișier EDI:
  • Trebuie identificate caracterele speciale ce se găsesc în interiorul fișierului ("segment separator", "field separator, "composite separator", "relese indicator"). Acestea pot fi specificate în segmentul UNA, care poate fi găsit în prima linie din fișier sau pot fi transmise de către procesorul EDI prin intermediul parametrilor.
  • Trebuie identificat segmentul UNH de unde se extrage codul formatului de import ce trebuie să existe definit altfel se generează eroare. Cu alte cuvinte segmentul UNH ne specifică ce format de import trebuie folosit.
  • Prin intermediul listener-ului specificat în formatul de import se încearcă identificarea documentului în baza de date pentru update, dacă nu este găsit se va crea un document nou. În principiu se caută după numărul de document ce vine în fișierul EDI pe o anumită poziție, ce diferă de la format la format.
  • Se încarcă un PO pentru tabela specificată în format (se crează o înregistrare nouă sau se face update pe una existentă, în funcție de pasul anterior, dacă s-a găsit sau nu documentul în baza de date). Se setează pe PO titularul, societatea și gestiunea specificate în parametri de import și valorile implicite definite la nivel de format import (cu rularea callout-urilor dacă există pe aceste câmpuri)
  • Se începe parcurgerea efectivă a fișierului linie cu linie. Obs.: trebuie să conțină cel puțin atâtea linii câte segmente sunt definite în format, pentru un document. Segmente obligatorii pot fi considerate drept chei de control, tot timpul trebuie să cadă pe aceiași poziție cu segmentul din fișier. Cele mai importante elemente din format sunt cele de tip "Field", prin care se face maparea dintre o informație din fișier și valoarea unui câmp din SocrateCloud, astfel se populează documentul din SocrateCloud cu valori. Aici pot apărea erori în cazul în care nu se poate face maparea (de exemplu primim un cod de articol care nu este găsit în baza de date), se generează eroarea (se salveză în EDI Log) și se trece la următorul fișier.
  • La întâlnirea segmentului UNT se marchează sfârșitul documentului. UNT este un element obligatoriu, prin asta se verifică corectitudinea importului. În parcurgerea segmentelor din format trebuie să se ajungă tot pe UNT alfel se va genera eroare.
  • După parcurgerea tuturor segmentelor se salvează PO-ul (înregistrarea în baza de date). Se apelează listener-ul setat pe print format cu parametri ce indică spre acțiunile "before save", "after save" pentru a veni cu eventuale completări înainte și după salvare. Dacă PO-ul nu se salvează cu succes în baza de date, se generează eroare (se salvează în EDI Log) si se trece la următorul fișier.
  • Dacă următorul segment din fișier este UNH (Message Header) atunci se importă următorul document din fișier urmând aceiași pași până la sfârșitul fișierului.