PARAMETERS edimeno, edipor, orimeno, kodedistred
PRIVATE hladajidedi
*LOCAL oldpoint, idedi2, plusy, minusy, dodavatel, sumadokladu, txtriadok1
*LOCAL typ_special, riadok, lastline, oc_faktury, riadok, txtden, txtmesiac, txtrok, txtcena, txtdan
riadok=0
typ_special=""
orimeno=UPPER(m.orimeno)

#DEFINE CRLF CHR(13)+CHR(10)
#DEFINE PNT  "."

IF .not. FILE(m.edimeno) 
    RETURN
ENDIF 

edi_zurnal ("CRLF")
edi_zurnal (edimeno + STR(m.edipor) + "  " + m.orimeno)

oldpoint=SET("point")
SET POINT TO PNT
obsah_souboru     = FILETOSTR(m.edimeno)
obsah_souboru_low = LOWER(m.obsah_souboru)

IF ("eancom" $ m.obsah_souboru_low)
    spracujeancom(edimeno, edipor, orimeno, kodedistred)
    SET POINT TO (m.oldpoint)
    RETURN
ENDIF

edisubor = FOPEN(m.edimeno)
IF m.edisubor < 0
    SET POINT TO (m.oldpoint)
    RETURN
ENDIF

IF ATC("food_friends", m.gchom_path) > 0 .and. "5708165" $ m.obsah_souboru_low 
     FCLOSE(m.edisubor)
    RENAME (m.edimeno) TO (m.orimeno)
    edi_zurnal ("    ... IGNORED   food_friends - 5708165")
    RETURN 
ENDIF 
IF ATC("food_glamour", m.gchom_path) > 0 .and. "5706418" $ m.obsah_souboru_low 
     FCLOSE(m.edisubor)
    RENAME (m.edimeno) TO (m.orimeno)
    edi_zurnal ("    ... IGNORED   food_glamour - 5706418")
    RETURN 
ENDIF 


hladajidedi=i_max("id_edi") 
IF USED("edihlav")
    TABLEREVERT(.t.,"edihlav")
    USE IN edihlav
ENDIF 

IF USED("edipol")
    TABLEREVERT(.t.,"edipol")
    USE IN edipol
ENDIF 

otevri_edi_hlavpol()
IF !("doklad;datum;artikel;nazov;match;velkost;ean;dph;mnozstvo;doporucena moc s dph;doporucena moc bez dph;nc s dph / mj;nc bez dph / mj;nc s dph / spolu;nc bez dph / spolu" $ m.obsah_souboru_low)
	txtriadok = FGETS(m.edisubor)
	IF ASC(LEFT(m.txtriadok,1))=239
		m.txtriadok=SUBSTR(m.txtriadok,2)
	ENDIF 
	IF ASC(LEFT(m.txtriadok,1))=187
		m.txtriadok=SUBSTR(m.txtriadok,2)
	ENDIF 
	IF ASC(LEFT(m.txtriadok,1))=191
		m.txtriadok=SUBSTR(m.txtriadok,2)
	ENDIF 
ENDIF 
DO CASE 
CASE 'K˘d produktu;;N zov produktu;;;Mno§stvo;;;;MJ;Cena bez DPH;;Cena bez DPH;;DPH;Cena'+CHR(13)+CHR(10)+';;;;;;;;;;Jednotkov ;;Celkov ;;%;s DPH' $ m.obsah_souboru
    DO spracuj_csvgolfer

CASE '[sn];[name];[code];[part-no];[amount];' $ m.obsah_souboru
    DO spracuj_txtfreshbox

CASE 'P.Č.;Názov;Kód;PN;Množstvo;MJ;DPH;Cena MJ Bez DPH;Spolu Bez DPH;' $ m.obsah_souboru
    DO spracuj_txtfreshbox

CASE (";číslo dokladu;dátum dokladu;ičo dodávateľa;meno dodávateľa;id miesta dodania;" $ m.obsah_souboru_low) .and. ("lin;názov tovaru;ean;kód tovaru;merná jednotka;sadzba dph;počet balení;jednotková cena bez dph;cena celkom bez dph;jednotková cena s dph;cena celkom s dph" $ m.obsah_souboru_low) 
    DO spracuj_txtaltosk

CASE 'Dátum rozvozu;Odberateľ (podľa príjemcu) - IK;Odberateľ (podľa príjemcu) - názov;Číslo dodacieho listu;Číslo objednávky;Číslo faktúry;Množstvo v MJ;MJ;Cena za MJ;Kód produktu;Názov produktu;Príjemca - IK;Príjemca - názov skrátený;ičo-dodávateľa' $ m.obsah_souboru
    DO spracuj_txttauris

CASE "vino markuzzi" $ m.obsah_souboru_low
    DO spracuj_txtvinomarkuzzi

CASE '"CisloDokladu","Polozky_Artikl_Katalog","Polozky_Artikl_Nazev","Polozky_SazbaDPH","Polozky_Jednotka"' $ m.obsah_souboru
    txtfanygastro2=('"Polozky_Mnozstvi","Polozky_Vratka","Polozky_CelkovaCena","Polozky_DPH","Polozky_DPH_CelkemSDPH","MojeFirma_IC","MojeFirma_Nazev","DatumZavozu","Adresa_Kod","AdresaKoncovehoPrijemce_Nazev"' $ m.obsah_souboru)
    DO spracuj_txtfanygastro

CASE "cislodokladu,datrealizace,cisloorg,nazevorg,cislostrediska,nazevstrediska,sumabezdph" $ m.obsah_souboru_low  
    DO spracuj_txtwinefood

CASE ";36475939;" $ m.obsah_souboru_low
    DO spracuj_txtfegafrost

CASE "chemat computer" $ m.obsah_souboru_low 
    DO spracuj_txtchematcs

CASE "gastrostar" $ m.obsah_souboru_low
    DO spracuj_txtgastrostar

CASE "doklad;datum;artikel;nazov;match;velkost;ean;dph;mnozstvo;doporucena moc s dph;doporucena moc bez dph;nc s dph / mj;nc bez dph / mj;nc s dph / spolu;nc bez dph / spolu" $ m.obsah_souboru_low
    DO spracuj_csvgolfcentrum

CASE ";44360991;" $ m.obsah_souboru_low
	=FCLOSE(m.edisubor)
    DO spracujhope WITH m.edimeno, m.edipor, m.orimeno, m.kodedistred

CASE ";u_jmenododavatele" $ m.obsah_souboru_low
    DO spracuj_csvnovobal

CASE "lin;;;;" $ m.obsah_souboru_low
    DO spracuj_foodlogistic WITH m.edimeno, m.edipor, m.orimeno, m.kodedistred

CASE OCCURS("HDR;", m.obsah_souboru)=3 .and. LEFT(m.txtriadok,4)="HDR;"
    DO spracuj_hdr_hdr

CASE LEFT(m.txtriadok,4)="HDR;" .and. INLIST(sss(m.txtriadok, 16), m.hotel_ico, ".", "")
    DO spracuj_hdr_hotelico

CASE LEFT(m.txtriadok,3)="SYS" .and. "96AORDERSP" $ m.txtriadok .and. (INLIST(alsu(4,14),m.hotel_edikod,m.hotel_ico,"",".").or. (!EMPTY(m.hotel_edikod_list) .and. alsu(4,14) $ m.hotel_edikod_list))
    DO spracuj_sys_orders

CASE LEFT(m.txtriadok,3)="SYS" .and. "96AINVOICP" $ m.txtriadok .and. "34152199" $ m.obsah_souboru
    DO spracuj_sys_invoic_bidfood

CASE LEFT(m.txtriadok,3)="SYS" .and. "96AINVOICP" $ m.txtriadok .and. "28234642" $ m.obsah_souboru
    DO spracuj_sys_invoic_bidfood

CASE LEFT(m.txtriadok,3)="SYS" .and. "96AINVOICP" $ m.txtriadok
    DO spracuj_sys_invoic

CASE LEFT(m.txtriadok,3)="SYS" .and. "96ADESADVP" $ m.txtriadok .and. ("34152199" $ m.obsah_souboru .OR. "8594007910001" $ m.obsah_souboru)
    DO spracuj_sys_96ADESADVP_bidvest

CASE LEFT(m.txtriadok,3)="SYS" .and. "96ADESADVP" $ m.txtriadok .and. (INLIST(alsu(4,14),m.hotel_edikod,m.hotel_ico,"",".") .or. (!EMPTY(m.hotel_edikod_list) .and. alsu(4,14) $ m.hotel_edikod_list)) 
    DO spracuj_sys_e_hotel_edikod

CASE LEFT(m.txtriadok,3)="SYS" .and. "96ADESADVP" $ m.txtriadok .and. EMPTY(alsu(4,14)) 
    DO spracuj_sys_p

CASE LEFT(m.txtriadok,3)="SYS" .and. (("01BINVOICP" $ m.txtriadok) OR ("01B INVOICP" $ m.txtriadok)) .and. (INLIST(alsu(4,14),m.hotel_edikod,m.hotel_ico,"",".") .or. (!EMPTY(m.hotel_edikod_list) .and. alsu(4,14) $ m.hotel_edikod_list))
    DO spracuj_sys_p_hotel_edikod

CASE LEFT(m.txtriadok,3)="SYS" .and. (("01BDESADVP" $ m.txtriadok) OR ("01B DESADVP" $ m.txtriadok)) .and. (INLIST(alsu(4,14),m.hotel_edikod,m.hotel_ico,"",".") .or. (!EMPTY(m.hotel_edikod_list) .and. alsu(4,14) $ m.hotel_edikod_list))
    DO spracuj_sys_hotel_edikod_01b

OTHERWISE  
    FCLOSE(m.edisubor)
    ERASE (m.edimeno)
    IF m.edipor # 0
        STRTOFILE(m.obsah_souboru, LEFT(m.orimeno, RAT(".", orimeno)) + "er")
        aa=FCREATE(STRTRAN(STRTRAN(STRTRAN(m.orimeno,".CSV",".err"),".TXT",".err"),".EDI",".err"))
        IF LEFT(m.txtriadok,4)="HDR;" .and. SUBSTR(m.txtriadok,AT(";",m.txtriadok,16)+1,AT(";",m.txtriadok,17)-AT(";",m.txtriadok,16)-1)<>m.hotel_ico
            =FPUTS(m.aa,"Doklad nie je urceny pre tento hotel (nesuhlasi ICO)"+CRLF)
        ELSE 
            IF LEFT(m.txtriadok,3)<>"SYS"
                =FPUTS(m.aa,"Prvy riadok neobsahuje systemovu spravu"+CRLF)
            ENDIF 
            IF !(INLIST(alsu(4,14), m.hotel_edikod,m.hotel_ico,"",".") .or. (!EMPTY(m.hotel_edikod_list) .and. alsu(4,14) $ m.hotel_edikod_list)) 
                =FPUTS(m.aa,"Doklad nie je urceny pre tento hotel, alebo nie je spravne nastaveny edi kod zakaznika"+CRLF)
            ENDIF 
            IF alsu(18,1)<>"E" .or. alsu(19,6)<>"D  01B" .or. alsu(19,6)<>"D  96A" 
                =FPUTS(m.aa,"Doklad nie je v standarde E, alebo nie je verzie D  01B ani D  96A"+CRLF)
            ENDIF 
            IF alsu(25,6)<>"INVOIC"
                =FPUTS(m.aa,"V doklade nie je faktura"+CRLF)
            ENDIF 
            IF alsu(31,1)<>"P"
                =FPUTS(m.aa,"Nie je to ostry doklad"+CRLF)
            ENDIF 
        ENDIF 
        FCLOSE(m.aa)    
    ENDIF 
ENDCASE 
SET POINT TO (m.oldpoint)


** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** 
FUNCTION druhy_doklad_z_minusu_a_suma()
SELECT edipol
IF !m.hotel_platca_dph
    REPLACE ALL cena WITH cena*(dan/100+1), cena_celk WITH cena_celk*(dan/100+1)
    REPLACE ALL dan WITH 0
ENDIF 
SUM cena_celk TO k
SELECT edihlav
REPLACE suma WITH m.k
SELECT edipol
COUNT TO plusy  FOR mnozstvo > 0
COUNT TO minusy FOR mnozstvo < 0
IF m.plusy > 0 .and. m.minusy > 0
    idedi2=i_max("id_edi")
    SELECT edipol
    SUM cena_celk TO k FOR mnozstvo > 0
    SELECT edihlav
    REPLACE suma WITH m.k
    SELECT edipol
    SUM cena_celk TO k FOR mnozstvo<0
    SELECT edihlav
    SCATTER MEMVAR 
    INSERT INTO edihlav FROM MEMVAR 
    GO BOTTOM 
    REPLACE id_edi WITH m.idedi2, suma WITH m.k
    SELECT edipol
    REPLACE id_edi WITH idedi2 FOR mnozstvo < 0
ENDIF 


** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** 
FUNCTION val_point (texticek)
RETURN VAL(STRTRAN(ALLTRIM(texticek), ",", PNT))


** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** 
FUNCTION uloz_a_zavri (informace_do_okk)
  IF EMPTY(m.informace_do_okk)
      informace_do_okk = ""
  ENDIF 
  tux(.t.,.t.,"edihlav")
  tux(.t.,.t.,"edipol")
  DO pozavirej WITH "edihlav, edipol, idedi, prenos"
  FCLOSE(m.edisubor)
  era_and_ok (STR(m.hladajidedi,10) + "    " + m.informace_do_okk)


** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** 
FUNCTION v_sss (texticek, pozice, oddelovac)
RETURN VAL(STRTRAN(  sss (texticek, pozice, oddelovac)   , "," ,"."))


** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** 
FUNCTION sss (texticek, pozice, oddelovac)
PRIVATE ALL 
IF EMPTY(m.oddelovac)
    oddelovac = ";"
ENDIF 
pom = SUBSTR(m.texticek, AT(m.oddelovac, m.texticek, m.pozice) + 1) + m.oddelovac
RETURN LEFT(m.pom, AT(m.oddelovac, m.pom,1) - 1)


** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** 
FUNCTION alsu  (od, kolik)
RETURN             ALLTRIM(SUBSTR(m.txtriadok, m.od, m.kolik))


** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** 
FUNCTION valsu (od, kolik)
RETURN VAL(STRTRAN(ALLTRIM(SUBSTR(m.txtriadok, m.od, m.kolik)), "," ,"."))
