Import danych > Import specjalny (format 3.0) > Przykłady szablonu i danych | | Drukuj |
Ilustracja procesu przetwarzania danych
Przykłady ilustrują przebieg przetwarzania przez szablon danych wejściowych do postaci wymaganej przez procedury wewnętrzne programu. Strzałkami zaznaczono przykładowe przepływy danych.
W przypadku formatu z nazwami pól, kolejność pól w ramach jednej sekcji nie ma znaczenia. Również kolejność przetwarzania i analizowania pól w szablonie nie ma znaczenia. Wszystkie pola wejściowe są identyfikowane poprzez swoje nazwy.
Rysunek Przetworzenie pojedynczej sekcji danych w formacie z nazwami pól
W przypadku formatu bez nazw pól (pola oddzielone separatorami), istotna jest kolejność pól w ramach jednej sekcji. Wszystkie pola identyfikowane są poprzez swój numer kolejny w linii danych. Kolejność przetwarzania i analizowania pól w szablonie nie ma znaczenia, do poszczególnych pól można odwoływać się wielokrotnie, w dowolnej kolejności. Dla formatu bez nazw pól zwykle jeden plik zawiera jeden rodzaj danych, a każda linia pliku jest jedną sekcją danych. W takim przypadku nie ma również jawnie podanej nazwy sekcji wejściowej. W szablonie podajemy wówczas pustą nazwę sekcji wejściowej.
Przetworzenie pojedynczej sekcji danych w formacie pól oddzielonych średnikami
W jednej sekcji danych może znajdować się wiele podsekcji o tej samej nazwie (np. wiele zapisów na różne konta w jednym dokumencie). W takim przypadku należy w szablonie zastosować pętlę programową w celu przeczytania wszystkich podsekcji. Można to zrobić dodając argument REPEAT do polecenia SECTION, lub organizując klasyczną pętlę WHILE. Aby przetworzyć podsekcje o różnych nazwach (i zawierających różne dane), umieszczamy w szablonie odpowiednią liczbę podsekcji, przetwarzających odpowiadające im podsekcje wejściowe.
Proces przetwarzania EDS z wykorzystaniem XSLT
Profil importu EDS został oznaczony dodatkową flagą w pliku INI wymuszającą pobieranie plików wejściowych z aplikacji Symfonia e-Faktury EDS, zamiast standardowego przeszukiwania z katalogu. W przypadku utworzenia własnego profilu z wykorzystaniem własnego szablonu XSLT, pobieranie pliku następuje standardowo z katalogu.
Po etapie pobierania pliku wejściowego w formacie XML następuje przetworzenie za pomocą wskazanego w profilach szablonu XSLT (w przypadku profilu EDS jest to efaktury.xslt). Transformacja wejściowego XML zgodnie ze wskazanym szablonem XSL generuje tekstowy plik wyjściowy w katalogu tymczasowym. W następnym kroku tak wygenerowany plik TXT importowany jest zgodnie z ilustracją z pkt 12.1 na podstawie wskazanego w profilu szablonu AMS.
Przykład obsługi dokumentów walutowych
Poniższy przykład wykorzystuje format danych AMS
// fragmenty szablonu obsługującego dokumenty walutowe
Section("dokument", "dokument")
{
......
$Kwota = [kwota]
//w sekcji „dokument” dodajemy wypełnianie pól dotyczących walut
$Waluta = [waluta]
$WKwota = [wkwota]
$Tabela = [tabela]
$Kurs = [kurs]
$TypKursu = [typkursu]
......
Section("", "", "REPEAT") //REPEAT: analizujemy wszystkie podsekcje
{
switch( Translate( Name(), "L") )
{
......
case "zapis"
MakeSec("zapis")
{
$kwota = [kwota]
//w sekcji „Zapis” dodajemy wypełnianie pól dotyczących walut
$Waluta = [waluta]
$WKwota = [wkwota]
$Tabela = [tabela]
$Kurs = [kurs]
$TypKursu = [typkursu]
}
break
case "transakcja"
MakeSec("transakcja")
{
//w transakcji wszystkie informacje są wypełniane automatycznie
$ustawowe = 1 //odsetki ustawowe
$zaliczka = 0 //Zaliczka
$idDlaRozliczen = [idDlaRozliczen]
$termin = [termin] //Termin;
}
break
case "rozliczenie"
MakeSec("rozliczenie")
{
$dSymbol = [dSymbol] //numer własny dokumentu
$idDlaRozliczen = [idDlaRozliczen]
$kwota = [kwota]
//w sekcji „rozlicznie” dodajemy kwotę walutową,
//kurs itd. pobierane są automatycznie z dokumentu lub zapisu
$w_kwota = [wkwota]
}
break
}
}
}
// fragment pliku danych zawierającego informacje walutowe
Dokument{
....
kwota =1382.70
wkwota =337.24
waluta =USD
kurs =4.1000
tabela = 0
typkursu=3
Zapis{
strona =WN
kwota =1382.70
wkwota =337.24
waluta =USD
kurs =4.1000
tabela = 0
typkursu=3
konto =201-9
IdDlaRozliczen =1
...
}
Zapis{
strona =MA
kwota =1133.36
wkwota =276.43
waluta =USD
kurs =4.1000
tabela = 0
typkursu=3
konto =731
IdDlaRozliczen =2
....
}
Zapis{
strona =MA
kwota =249.34
wkwota =60.81
waluta =USD
kurs =4.1000
tabela = 0
typkursu=3
konto =221-1
IdDlaRozliczen =3
...
}
Rozliczenie{
IdDlaRozliczen= -1
kwota =1382.70
wkwota =337.24
dSymbol=FV12/00/001
}
}