{XAL:SMARTKonvertering}
{ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»}
{º K›rsel til eksport af f›lgende til brug for SMART konvertering           º}
{º Kontoplan           - C5_Konto.csv                                       º}
{º Debitorer           - C5_Debitor.csv                                     º}
{º Kreditorer          - C5_Kreditor.csv                                    º}
{º Finansposteringer   - C5_Postering.csv                                   º}
{º Firmaoplysninger    - C5_Firmaoplysninger.csv                            º}
{º Afdeling            - C5_Dimension.csv                                   º}
{º Debitorposteringer  - C5_Debitorposter.csv                               º}
{º Debitorudligninger  - C5_Debitorudligningsposter.csv                     º}
{º Kreditorposteringer - C5_Kreditorposter.csv                              º}
{º Kreditorudligninger - C5_Kreditorudligningsposter.csv                    º}
{º Pdf faktura         - mappen PDF - skal oprettes manuelt                 º}
{º Til C5 version 3.0                                                       º}
{ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ}

//4.0 #MacroLoad(FILE_UTIL)
#MacroLoad(FUNKTIONER)
#MacroLoad(TMP_FILE)
#MacroLoad(Generelt)
#MacroLoad(Funktion)
#MacroLoad(TYPE)
#MacroLoad(SYSTEMKONTI)

STR 254 &FileFolder
STR 254 &FileName
STR 254 &FromAcc
STR 254 &ToAcc
STR 10  &Zip
STR 100 &City
STR 255 &Country
INT     &Counter
INT     &Ok
STR 20  &CINumber
STR 250  &ValidCharacter = "abcdefghijklmnopqrstuvwzyx‘›†1234567890.,+-*/#_()«" +"':&<>!;=Ï"+'"'
INT     &MaxLengthLedAccount
INT     &MinLengthLedAccount
STR 20  &MaxLengthLedAccountNumber
STR 20  &MinLengthLedAccountNumber
STR 10  &BalanceFrom
STR 10  &BalanceTo
STR 10  &FirstAccType_Balance
ENUM NejJa &PrimoOk
DATE       &PrimoTransDate
#ValKursDef(&ExchRate)  //4.0
//4.0#CurExchRateDef(&ExchRate)
REAL    &SalesPrice
REAL    &CostPrice
STR 10  &StdPriceGroup     = LagPrisgruppe[GruppeIdx > ''].Gruppe

//Variable til pdf faktura
ENUM NejJa &PdfOk
STR 254    &PdfFileFolder
INT        &OverrideOutput    = 2
STR 254    &OverridePrinter   = 'SMART2NAV'
STR 254    &OverrideOSPrinter = ''
ENUM NejJa &MakeXML           = 0

//Variable til debitorposter
STR 254 &FileName2
STR 255 &CustTransType
STR 255 &CustTransSettleType
STR 255 &UdlignBilagsTp
STR 255 &UdlignBilagsnr
STR 255 &Afvent

STR 10     &PrimoAccount  //15.07.2016
STR 10     &LedAcc         //15.07.2016

//Variable til tjek af primoposter
INT              &PrId

#TypeFinKt       &OpeningAcc
#TypeFinKt       &Account
ENUM Kontotype   &AccountType
#TypeFinKt       &YearEndResult

DATE             &OP
DATE             &UL
DATE             &OPNext

//Variable til primo konto
INT              &PrAccId
ENUM NejJa       &PrAccOk
ENUM NejJa       &PrAccUsed
ENUM PostType   &PrTransType
DATE       &FromPrimo    //15.09.2016
DATE       &FirstLedTransDate  //15.09.2016
DATE       &FirstLedTransDateOpr  //24.10.2016
INT        &PrimoCnt = 4  //Pt. 5 †r bagud. Skiftes her, hvis der skal flere eller f‘rre 15.09.2016
INT        &PrimoIncl

//Variable til perioder
DATE       &TmpDate
STR 3      &TmpPR


#LOCALMACRO.Err
    #Add(&Err_Num,1)
    SET &Err_Log[&Err_Num] = %1+"\n"
#ENDMACRO

#LOCALMACRO.ValidateCountry
    //  Validering af landekoder
    IF #InList(%1.Land,  'Forenede Arabiske Emirater',
                'strig',
                'Australien',
                'Belgien',
                'Bulgarien',
                'Brunei',
                'Brasilien',
                'Canada',
                'Schweiz',
                'Kina') OR
        #InList(%1.Land, 'Cypern',
                'Tjekkiet',
                'Tyskland',
                'Danmark',
                'Algeriet',
                'Estland',
                'Gr‘kenland',
                'Spanien',
                'Finland',
                'Fiji-›erne') OR
        #InList(%1.Land, 'Frankrig',
                'Storbritannien',
                'Gr›nland',
                'Kroatien',
                'Ungarn',
                'Indonesien',
                'Irland',
                'Indien',
                'Island',
                'Italien') OR
       #InList(%1.Land,  'Japan',
                'Kenya',
                'Litauen',
                'Luxembourg',
                'Letland',
                'Marokko',
                'Montenegro',
                'Malta',
                'Mexico',
                'Malaysia') OR
       #InList(%1.Land,  'Mozambique',
                'Nigeria',
                'Nederlandene',
                'Norge',
                'New Zealand',
                'Filippinerne',
                'Polen',
                'Portugal',
                'Rum‘nien',
                'Serbien') OR
       #InList(%1.Land,  'Rusland',
                'Saudi-Arabien',
                'Salomon›erne',
                'Sverige',
                'Singapore',
                'Slovenien',
                'Slovakiet',
                'Swaziland',
                'Thailand',
                'Tunesien') OR
        #InList(%1.Land,'Tyrkiet',
                'Tanzania',
                'Uganda',
                'USA',
                'Vanuatu',
                'Samoa›erne',
                'Sydafrika',
                'F‘r›erne',
                '') THEN
        //Do nothing
    ELSE
        #IFNOT.EMPTY(%2)
            SET %2 = ''
        #ENDIF
        #IF.EMPTY(%2)
            #Err('Kontonummer "' +%1.Konto+ '" i ' + FilePName(%1)
                    + ' indeholder land \nder ikke underst›ttes af Dynamics NAV: "'
                    +%1.Land+'"'+'\n68 lande er som standard underst›ttet i NAVonline.nu')
        #ENDIF
    ENDIF
#ENDMACRO

#LOCALMACRO.ChangeTxt
    WHILE StrScan(%1,'\"',1,255)
        SET %1 = (SubStr(%1,1,StrScan(%1,'\"',1,255)-1) + 'Ï' + SubStr(%1,StrScan(%1,'\"',1,255)+1,255))
    END
#ENDMACRO


WINDOW 80,10 AT 20,5
PRINT "Status" AT -1,-1
PRINT "Validering........:  " AT 1,1
PRINT "Skriver...........:  " AT 1,2
PRINT "Kontoplan.........:  " AT 1,3
PRINT "Debitorer.........:  " AT 1,4
PRINT "Kreditorer........:  " AT 1,5
PRINT "Posteringer.......:  " AT 1,6
PRINT "Lagerkartotek.....:  " AT 1,7
PRINT "Firmakartotek.....:  " AT 1,8
PRINT "Dimensioner.......:  " AT 1,9

//06.10.2016 =>
#Prompt
    "SMARTkonvertering",
    "Angiv primo dato for det f›rste †r som skal udl‘ses.",
    #StrPrompt("Primo dato")  GET(&FromPrimo REF FinPeriode.Start),
    "Der vil altid startes med den tilh›rende primo periode for †ret",,
    "Skal kun f›rste †rs primoposter med ud eller alle primoposter?",
    #StrPrompt("Primoposter") GET(&PrimoIncl LENGTH 16 ASENUM "Kun f›rste †r\nAlle primoposter"),
#PromptAbort(10,5)
#GetPrimoRegnskabsr(&FromPrimo,&FromPrimo)
// <= 06.10.2016

//Tjek for om der ligger poster i det f›rste †r.
SEARCH FinPost USING DatoIdx
    WHERE FinPost.Budgetkode == 0
    SET &FirstLedTransDateOpr = FinPost.Dato
    BREAK
END
#GetPrimoRegnskabsr(&FirstLedTransDateOpr,&FirstLedTransDate)
IF &FirstLedTransDate <= &FirstLedTransDateOpr THEN  //S† vi undg†r fejl ved at perioden ikke er oprettet.
    IF &FromPrimo < &FirstLedTransDate THEN
        SET &FromPrimo = &FirstLedTransDate
    ENDIF
ENDIF
// <= 15.09.2016

{+--------------------------------------------------------------------------+}
{Ý Start validering                                                         Ý}
{+--------------------------------------------------------------------------+}
SET &Counter = 0
#LocalMacro.ValidateCustVendTable
// %1 Kartotek CustTable eller VendTable
SEARCH %1
    IF &Counter MOD 100 == 0 THEN
        PRINT Num2Str(&Counter,15,0,0,0) AT 20,1
    ENDIF
    IF %1.Momsnummer THEN
        INTRODUCE Land[KodeIdx, %1.Land ? %1.Land : "Danmark"]
        IF NOT Land.Mokode THEN
            #Err('Kan ikke finde momskode for land "' +%1.Land+ ' "p† ' +FilePName(%1)+ ' '+%1.Konto + ' ' + %1.Navn +'. Udl‘sning af momsnr bliver ikke korrekt.\nTjek landekartotek og feltet landekode i momsnummer')
        ENDIF
    ENDIF
    IF %1.Konto <> StrKeep(%1.Konto, &ValidCharacter) THEN
        #Err('Kontonummer "' +%1.Konto+ '" i ' + FilePName(%1)+ ' indeholder ulovlige tegn.\nF›lgende tegn m† anvendes: ' +&ValidCharacter)
    ENDIF

    #ValidateCountry(%1)

    #ADD(&Counter, 1)
END
#EndMacro
#ValidateCustVendTable(DebKart)
#ValidateCustVendTable(KreKart)

SEARCH LagKart
    IF &Counter MOD 100 == 0 THEN
        PRINT Num2Str(&Counter,15,0,0,0) AT 20,1
    ENDIF
    //2.10 SET LagKart.VareNummer = StrReplaceAll(LagKart.VareNummer, " ", "-")
    WHILE StrFind(LagKart.VareNummer," ",1,20)
        SET LagKart.VareNummer = #StrReplace(LagKart.VareNummer, " ", "-")
    END
    IF LagKart.VareNummer <> StrKeep(LagKart.VareNummer, &ValidCharacter) THEN
        #Err('Varenummer "' +LagKart.VareNummer+ '" i ' + FilePName(LagKart)+ ' indeholder ulovlige tegn.\nF›lgende tegn m† anvendes: ' +&ValidCharacter)
    ENDIF
    #ADD(&Counter, 1)
END
SEARCH FinKart
    IF &Counter MOD 100 == 0 THEN
        PRINT Num2Str(&Counter,15,0,0,0) AT 20,1
    ENDIF
    IF FinKart.Konto <> StrKeep(FinKart.Konto, &ValidCharacter) THEN
        #Err('Kontonummer "' +FinKart.Konto+ '" i ' + FilePName(FinKart)+ ' indeholder ulovlige tegn.\nF›lgende tegn m† anvendes: ' +&ValidCharacter)
    ENDIF
    #ADD(&Counter, 1)
    // 18.08.2014 =>
    IF NOT &FirstAccType_Balance AND FinKart.KontoType == 1 THEN
        SET &FirstAccType_Balance = FinKart.Konto
    ENDIF
END

//Validering af primoposter
#GetTempId(&PrId)
#Tmp_Delete(TmpKontoSum,KontoIdx,&PrId)

SET &YearEndResult = Systemkonti[NavnIdx, 0, #SkretsResultat].Konto1

IF NOT &YearEndResult THEN
    #Abort("@SYS65716")
ENDIF

IF FinKart[KontoIdx, &YearEndResult].Kontotype <> 1 THEN
    #Abort("@SYS65717")
ENDIF



SEARCH FinPost USING KtoDatoIdx
    WHERE FinPost.Budgetkode == 0
    AND   FinPost.Dato >= PrevYr(&FromPrimo)  //07.10.2016

    IF &Account <> Konto THEN
        INTRODUCE FinKart[KontoIdx,FinPost.Konto]
        SET &AccountType= FinKart.KontoType
        SET &Account    = FinPost.Konto
        //2012 SET &OpeningAcc = LedTable.OpeningAccount
        //SET &OpeningAcc = DSP_FinKart_Ref[KontoIdx,FinPost.Konto].OP //N†r der er brugt Plus
    ENDIF

    #GetPrimoRegnskabs†r(FinPost.Dato,&OP)
    #GetUltimoRegnskabs†r(FinPost.Dato,&UL)
    #GetPrimoRegnskabs†r(&UL+1,&OPNext)


    IF &OP == FinPost.Dato THEN
        IF FinPost.Dato == PrevYr(&FromPrimo) THEN
            //primo fra †ret f›r perioden skal ikke t‘lles som primopost, men blot v‘re med i samment‘llingen af FromPrimo
        ELSE
        //Dette er en primopost
        INTRODUCE TmpKontoSum[KontoIdx, &PrId,FinPost.Konto, FinPost.BudgetKode, Date2Str(&OP,321,2,3,2,3,4),'',  FinPost.Valuta]
        #ADD(TmpKontoSum.Saldo10, FinPost.Bel›bDKK)
        #ADD(TmpKontoSum.Saldo11, FinPost.Bel›bVAL)
        SET TmpKontoSum.Dato       = &OP
        SET TmpKontoSum.Saldo12   = 1  //S† vi kan sorterer de poster fra som ikke har f†et dannet primo endnu
        #DbUpdate(TmpKontoSum)
        ENDIF

        //Primoposten skal t‘lles med †ret efter i den primopost
        IF &OP <> &OPNext THEN
            INTRODUCE TmpKontoSum[KontoIdx, &PrId,FinPost.Konto, FinPost.BudgetKode, Date2Str(&OPNext,321,2,3,2,3,4),'',  FinPost.Valuta]
            SET TmpKontoSum.Dato       = &OPNext
            #Add(Saldo01, FinPost.Bel›bDKK)
            #Add(Saldo02, FinPost.Bel›bVAL)
            #DbUpdate(TmpKontoSum)
        ENDIF

    ELSEIF &AccountType == 0 THEN
      IF &OPNext <> &OP THEN

        INTRODUCE TmpKontoSum[KontoIdx, &PrId,&YearEndResult, FinPost.BudgetKode, Date2Str(&OPNext,321,2,3,2,3,4),'',  FinPost.Valuta]
        SET TmpKontoSum.Session     = &PrId
        SET TmpKontoSum.Konto       = &YearEndResult
        SET TmpKontoSum.BudgetKode  = FinPost.BudgetKode
        SET TmpKontoSum.Afdeling    = Date2Str(&OPNext,321,2,3,2,3,4)
        SET TmpKontoSum.Moms        = ''
        SET TmpKontoSum.Valuta      = FinPost.Valuta
        SET TmpKontoSum.Dato        = &OPNext
        #Add(Saldo01, FinPost.Bel›bDKK)
        #Add(Saldo02, FinPost.Bel›bVAL)
        #DbUpdate(TmpKontoSum)
      ENDIF
    ELSE
      IF &OPNext <> &OP THEN
        INTRODUCE TmpKontoSum[KontoIdx, &PrId, (&AccountType == 1 AND &OpeningAcc) ? &OpeningAcc : &Account, FinPost.BudgetKode, Date2Str(&OPNext,321,2,3,2,3,4), '', FinPost.Valuta]
        SET TmpKontoSum.Session     = &PrId
        SET TmpKontoSum.Konto       = (&AccountType == 1 AND &OpeningAcc) ? &OpeningAcc : &Account
        SET TmpKontoSum.BudgetKode  = FinPost.BudgetKode
        SET TmpKontoSum.Afdeling    = Date2Str(&OPNext,321,2,3,2,3,4)
        SET TmpKontoSum.Moms        = ''
        SET TmpKontoSum.Valuta      = FinPost.Valuta
        SET TmpKontoSum.Dato        = &OPNext
        #Add(Saldo01, FinPost.Bel›bDKK)
        #Add(Saldo02, FinPost.Bel›bVAL)

        #DbUpdate(TmpKontoSum)
      ENDIF
    ENDIF
END


SEARCH TmpKontoSum USING KontoIdx
    WHERE TmpKontoSum.Session   == &PrId
    AND ((TmpKontoSum.Saldo01 <> TmpKontoSum.Saldo10)
    OR   (TmpKontoSum.Saldo02 <> TmpKontoSum.Saldo11))

    #Err('Konto "' +TmpKontoSum.Konto+ '" stemmer ikke i primopost ' + Date2Str(TmpKontoSum.Dato,123,1,4,1,3,4)+ ' - Bel›b '+Num2Str(TmpKontoSum.Saldo01,1,2,1,2)+' - PR '+Num2Str(TmpKontoSum.Saldo10,1,2,1,2)+
          '.\nDan primo skal k›res! ')
    //#Err('Konto "' +TmpKontoSum.Konto+ '" stemmer ikke i primopost ' + Date2Str(TmpKontoSum.Dato,123,1,4,1,3,4)+ ' - valuta '+TmpKontoSum.Valuta+'.\nDan primo skal k›res! ')

END


PRINT Num2Str(&Counter,15,0,0,0) AT 20,1

IF &Err_Num THEN
    #VisErrorLog("SMARTKonvertering til NAV / C5 2014 Online")

    IF BOX(3,"Der er fundet fejl, forts‘t udl‘sning?\n"
                +"\nOBS. Landekoder der ikke er underst›ttet blankes ved udl‘sning!"
                +"\nOBS. Varenumre med ulovlige tegn udelades fra udl‘sningen!",2)==2 THEN
        RETURN 0
    ENDIF
ENDIF

{+--------------------------------------------------------------------------+}
{Ý Slut p† validering                                                       Ý}
{+--------------------------------------------------------------------------+}

//SET &FileFolder = #GetFolder("Sti til eksport filer",&FileFolder)

#Prompt
    "SMARTKonvertering",
    #StrPrompt("Angiv sti til eksport filer") GET(&FileFolder),
#PromptAbort(10,5)

#FileCheckPath(&FileFolder)
IF NOT #FileExists(&FileFolder) THEN
    SET Box(2,StrFmt("@SYS34565","@SYS62726",&FileFolder),1)
    RETURN 0
ENDIF

#Prompt
    "Pdf faktura",
    "Skal en kopi af fakturaerne udskrives til pdf filer?",
    #StrPrompt("Dan pdf")  GET(&PdfOk),
    "Foruds‘tninger:",
    "Der skal v‘re oprettet en eDoc printer med navnet SMART2NAV.",
    "Der skal v‘re indsat kode i fakturalayoutet",
    "PDF-mappen skal v‘re oprettet",
    "Sat faktura til at printe p† SMART2NAV",
#PromptAbort(10,5)
IF &PdfOk THEN
    SET &PdfFileFolder = &FileFolder+'\\PDF'
{    IF NOT #FileExists(&PdfFileFolder) THEN       }
{        #FolderCreate("Pdf mappe",&PdfFileFolder) }
{    ENDIF                                         }
ENDIF

#ADD(&FileFolder, &Regnskab+"_")

PRINT "Skriver...........:  ", &FileFolder AT 1,2

SET &OUTRECDEL = #TextRecDel
SET &OUTFLDDEL = ';'

WHILE NOT &Ok
    SET &Ok = 1

#Prompt "Angiv interval for finanskonti",

  #StrPrompt("Konto") GET(&FromAcc LENGTH 10 ref FinKart.Konto)

                   "  " GET(&ToAcc LENGTH 10 ref FinKart.Konto)

#PromptAbort(10,5)

IF NOT &FromAcc OR NOT &ToAcc THEN
  SET BOX(2,"Fra og Til konto skal udfyldes - pr›v igen !",0)
  SET &Ok = 0

ENDIF

#PROMPT "Angiv standard salgs-prisgruppe",
    #StrPrompt("Prisgruppe")  GET (&StdPriceGroup LENGTH 10 REF LagPrisgruppe.Gruppe)
#PROMPTABORT(10,5)

IF NOT &StdPriceGroup THEN
  SET BOX(2,"Standard pris-gruppe skal angives - pr›v igen !",0)
  SET &Ok = 0
ENDIF


END
{ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿}
{³ Eksport af kontoplan                                                     ³}
{ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ}

#LocalMacro.UserFormatStr
    '\"'+#Asc2Ans(%1)+'\"'
#EndMacro
#LocalMacro.UserFormatReal
    Num2Str(%1,1,2,2,0)
#EndMacro

SET &FileName = &FileFolder+'C5_Kontoplan.csv'
    WRITE &FileName AS TEXT FROM (
         #UserFormatStr("Number",'"',0,0)
        ,#UserFormatStr("Name",'"',0,0)
        ,#UserFormatStr("Type",'"',0,0)
        ,#UserFormatStr("Totalfromhandle",'"',0,0)
        ,#UserFormatStr("IsAccessible",'"',0,0)
        ,#UserFormatStr("OpeningAccount",'"',0,0)
        ,#UserFormatStr("VatCode",'"',0,0)
      )

SET &Counter = 0
SET &MinLengthLedAccount = 10
SEARCH FinKart USING KontoIdx
  WHERE Konto
  AND Konto >= &FromAcc
  AND Konto <= &ToAcc

    SET &Counter = &Counter + 1

    IF &Counter MOD 1 == 0 THEN
        PRINT Num2Str(&Counter,15,0,0,0) AT 20,3
    ENDIF
    WRITE &FileName AS TEXT FROM (
         #UserFormatStr(FinKart.Konto,'"',0,0)
        ,#UserFormatStr(FinKart.Kontonavn,'"',0,0)
        ,#UserFormatStr(Enum2Str(FinKart.KontoType),'"',0,0)
        ,#UserFormatStr(FinKart.SumFraKonto,'"',0,0)
        ,#UserFormatStr(Int2Str(FinKart.Adgang),'"',0,0)
        ,#UserFormatStr('','"',0,0)
        ,#UserFormatStr(FinKart.Moms,'"',0,0)
      )


    IF FinKart.KontoType <= 1 THEN
        IF StrLen(FinKart.Konto) > &MaxLengthLedAccount THEN
            SET &MaxLengthLedAccount        = StrLen(FinKart.Konto)
            SET &MaxLengthLedAccountNumber  = FinKart.Konto
        ENDIF
        IF StrLen(FinKart.Konto) < &MinLengthLedAccount THEN
            SET &MinLengthLedAccount        = StrLen(FinKart.Konto)
            SET &MinLengthLedAccountNumber  = FinKart.Konto
        ENDIF
    ENDIF

END
PRINT Num2Str(&Counter,15,0,0,0) AT 20,3

IF &MaxLengthLedAccount <> &MinLengthLedAccount THEN
    INTRODUCE FinKart[KontoIdx, &MinLengthLedAccountNumber] RENAME Buffer
    SET &MinLengthLedAccountNumber = "0000000000"+ &MinLengthLedAccountNumber
    SET &MinLengthLedAccountNumber = SubStr(&MinLengthLedAccountNumber, 20, -&MaxLengthLedAccount-1)
    IF BOX(3,"L‘ngden af kontonummere i kontoplan er ikke ens!\n\n"
           + "For at f† en korrekt sortering i NAV / C5 2014 s‘ttes der 0'er foran kontonummere som er kortere end den l‘ngste konto.\n"
           + "Det vil betyde at alle konti som er under " +Int2Str(&MaxlengthLedAccount)+ " tegn vil der blive tilf›jet 0'er foran kontonr, fordi konto \"" +&MaxLengthLedAccountNumber+ "\" er " +Int2Str(&MaxLengthLedAccount)+ " tegn.\n\n"
           + "F.eks. vil konto \"" +Buffer.Konto+ "\" bliver ‘ndret til: \""+&MinLengthLedAccountNumber+ "\".\n\n"
           + "L›sning er at ‘ndre den eller de l‘ngste konti til et kortere kontonummer i C5 inden der forst‘ttes med SMARTKonvertering.\n\n\n\n"
           + "Vil du forts‘tte udl‘sning?",2)==2 THEN
        RETURN 0
    ENDIF
ENDIF

{ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿}
{³ Eksport af finansperioder                                                ³}
{ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ}

SET &FileName = &FileFolder+'C5_Regnskabsperioder.csv'
    WRITE &FileName AS TEXT FROM (
         #UserFormatStr("StartDate",'"',0,0)
        ,#UserFormatStr("NewYear",'"',0,0)
      )

SET &Counter = 0

SEARCH FinPeriode USING DatoIdx
    WHERE FinPeriode.Start >= &FromPrimo // 08.12.2014

    IF UltimoYr(FinPeriode.Start) THEN
        //Ultimo post skal ikke med
    ELSE
        IF &Counter MOD 1 == 0 THEN
            PRINT Num2Str(&Counter,15,0,0,0) AT 20,4
        ENDIF
        IF &TmpDate == #StartMth(FinPeriode.Start) THEN
            //Den f›rst post efter primo skal ikke med, idet primoposten er kommet med.
        ELSE
            SET &TmpDate = #StartMth(FinPeriode.Start)
            SET &TmpPR   = PrimoYr(FinPeriode.Start) ? 'Ja' : 'Nej'
            WRITE &FileName AS TEXT FROM (
                 #UserFormatStr(Date2Str(&TmpDate,123,2,3,2,3,4),'"',0,0)
                ,#UserFormatStr(&TmpPR,'"',0,0)
            )
        ENDIF
    ENDIF
END


{ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿}
{³ Eksport af debitorer                                                     ³}
{ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ}

SET &FileName = &FileFolder+'C5_Debitor.csv'
SET &Counter  = 0

    WRITE &FileName AS TEXT FROM (
         #UserFormatStr("Number",'"',0,0)
        ,#UserFormatStr("DebtorGroupHandle",'"',0,0)
        ,#UserFormatStr("Name1",'"',0,0)
        ,#UserFormatStr("Name2",'"',0,0)
        ,#UserFormatStr("Address1",'"',0,0)
        ,#UserFormatStr("Address2",'"',0,0)
        ,#UserFormatStr("PostalCode",'"',0,0)
        ,#UserFormatStr("City",'"',0,0)
        ,#UserFormatStr("Country",'"',0,0)
        ,#UserFormatStr("TelephoneAndFaxNumber",'"',0,0)
        ,#UserFormatStr("Email",'"',0,0)
        ,#UserFormatStr("Website",'"',0,0)
        ,#UserFormatStr("IsAccesible",'"',0,0)
        ,#UserFormatStr("CurrencyHandle",'"',0,0)
        ,#UserFormatStr("CINumber",'"',0,0)
        ,#UserFormatStr("EAN",'"',0,0)
        ,#UserFormatStr("TermOfPaymentHandle",'"',0,0)
      )

SEARCH DebKart USING KontoIdx
    SET &Counter = &Counter + 1

    IF &Counter MOD 1 == 0 THEN
        PRINT Num2Str(&Counter,15,0,0,0) AT 20,4
    ENDIF
    SET &Zip = SubStr(DebKart.PostBy,1,StrFind(DebKart.PostBy,' ',1,50)-1)
    SET &City = Postnummer[PostNrIdx,&Zip].Bynavn ? Postnummer[PostNrIdx,&Zip].Bynavn : StrLTrim(StrRem(DebKart.PostBy,&Zip))
    INTRODUCE Land[KodeIdx, DebKart.Land ? DebKart.Land : "Danmark"]
    SET &Country = Land.Land
    #ValidateCountry(Land,&Country)
    SET DebKart.Valuta = DebKart.Valuta == &StdValuta ? "" : DebKart.Valuta
     WRITE &FileName AS TEXT FROM (
        #UserFormatStr(DebKart.Konto,'"',0,0)
        ,#UserFormatStr(DebKart.Gruppe,'"',0,0)
        ,#UserFormatStr(DebKart.Navn,'"',0,0)
        ,#UserFormatStr("",'"',0,0)
        ,#UserFormatStr(DebKart.Adresse1,'"',0,0)
        ,#UserFormatStr(DebKart.Adresse2,'"',0,0)
        ,#UserFormatStr(&Zip,'"',0,0)
        ,#UserFormatStr(&City,'"',0,0)
        ,#UserFormatStr(&Country,'"',0,0)
        ,#UserFormatStr(DebKart.Telefon,'"',0,0)
        ,#UserFormatStr(DebKart.Email,'"',0,0)
        ,#UserFormatStr(DebKart.URL,'"',0,0)
        ,#UserFormatStr(Int2Str(DebKart.Sp‘rret),'"',0,0)
        ,#UserFormatStr(DebKart.Valuta,'"',0,0)
        ,#UserFormatStr(DebKart.Momsnummer ? Land.Mokode + DebKart.Momsnummer : "",'"',0,0)
        //2.10 ,#UserFormatStr(DebKart.EanNumber,'"',0,0)
        ,#UserFormatStr('','"',0,0)
        ,#UserFormatStr(DebKart.Betaling,'"',0,0)
        )
END

{ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿}
{³ Eksport af kreditorer                                                    ³}
{ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ}

SET &FileName = &FileFolder+'C5_Kreditor.csv'
SET &Counter  = 0

    WRITE &FileName AS TEXT FROM (
         #UserFormatStr("Number",'"',0,0)
        ,#UserFormatStr("CreditorGroupHandle",'"',0,0)
        ,#UserFormatStr("Name1",'"',0,0)
        ,#UserFormatStr("Name2",'"',0,0)
        ,#UserFormatStr("Address1",'"',0,0)
        ,#UserFormatStr("Address2",'"',0,0)
        ,#UserFormatStr("PostalCode",'"',0,0)
        ,#UserFormatStr("City",'"',0,0)
        ,#UserFormatStr("Country",'"',0,0)
        ,#UserFormatStr("CurrencyHandle",'"',0,0)
        ,#UserFormatStr("IsAccesible",'"',0,0)
        ,#UserFormatStr("TermOfPaymentHandle",'"',0,0)
        ,#UserFormatStr("TelephoneAndFaxNumber",'"',0,0)
        ,#UserFormatStr("Email",'"',0,0)
        ,#UserFormatStr("Website",'"',0,0)
        ,#UserFormatStr("BankAccount",'"',0,0)
        ,#UserFormatStr("CINumber",'"',0,0)
)

SEARCH KreKart USING KontoIdx
    SET &Counter = &Counter + 1

    IF &Counter MOD 1 == 0 THEN
        PRINT Num2Str(&Counter,15,0,0,0) AT 20,5
    ENDIF
    SET &Zip = SubStr(KreKart.PostBy,1,StrFind(KreKart.PostBy,' ',1,50)-1)
    SET &City = Postnummer[PostNrIdx,&Zip].Bynavn ? Postnummer[PostNrIdx,&Zip].Bynavn : StrLTrim(StrRem(KreKart.PostBy,&Zip))
    INTRODUCE Land[KodeIdx, KreKart.Land ? KreKart.Land : "Danmark"]
    SET &Country = Land.Land
    #ValidateCountry(Land,&Country)
    SET KreKart.Valuta = KreKart.Valuta == &StdValuta ? "" : KreKart.Valuta
    WRITE &FileName AS TEXT FROM (
        #UserFormatStr(KreKart.Konto,'"',0,0)
        ,#UserFormatStr(KreKart.Gruppe,'"',0,0)
        ,#UserFormatStr(KreKart.Navn,'"',0,0)
        ,#UserFormatStr("",'"',0,0)
        ,#UserFormatStr(KreKart.Adresse1,'"',0,0)
        ,#UserFormatStr(KreKart.Adresse2,'"',0,0)
        ,#UserFormatStr(&Zip,'"',0,0)
        ,#UserFormatStr(&City,'"',0,0)
        ,#UserFormatStr(&Country,'"',0,0)
        ,#UserFormatStr(KreKart.Valuta,'"',0,0)
        ,Int2Str(KreKart.Sp‘rret)
        ,#UserFormatStr(KreKart.Betaling,'"',0,0)
        ,#UserFormatStr(KreKart.Telefon,'"',0,0)
        ,#UserFormatStr(KreKart.Email,'"',0,0)
        ,#UserFormatStr(KreKart.URL,'"',0,0)
        ,#UserFormatStr(KreKart.Bankkonto,'"',0,0)
        ,#UserFormatStr(KreKart.Momsnummer ? Land.Mokode+KreKart.Momsnummer : "",'"',0,0)
        )
END
{ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿}
{³ Eksport af Posteringer                                                   ³}
{ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ}

//Check af om f›rste post p† en status konto har primo flaget hejst. I givet fald skal alle poster
//med denne primo dato med ud.

SEARCH FinPost USING DatoIdx
    WHERE FinPost.Konto >= &FirstAccType_Balance

    IF FinKart[KontoIdx,FinPost.Konto].KontoType == 1 THEN
        SET &PrimoTransDate = FinPost.Dato
        BREAK
    ENDIF
END

SET &PrimoTransDate = &FromPrimo  //15.09.2016
SET &PrimoOk = PrimoYr(&PrimoTransDate) ? 1 : 0


SET &FileName = &FileFolder+'C5_Postering.csv'
SET &Counter  = 0

    WRITE &FileName AS TEXT FROM (
          #UserFormatStr("Handle",'"',0,0)
         ,#UserFormatStr("Type",'"',0,0)
         ,#UserFormatStr("Date",'"',0,0)
         ,#UserFormatStr("AccountHandle",'"',0,0)
         ,#UserFormatStr("VoucherNumber",'"',0,0)
         ,#UserFormatStr("Text",'"',0,0)
         ,#UserFormatStr("Amount",'"',0,0)
         ,#UserFormatStr("CurrencyHandle",'"',0,0)
         ,#UserFormatStr("AmountDefaultCurrency",'"',0,0)
         ,#UserFormatStr("Quantity1",'"',0,0)
         ,#UserFormatStr("Dimension1",'"',0,0)
         )
SEARCH FinPost USING KtoDatoIdx
    WHERE FinPost.BudgetKode == 0
    AND   FinPost.Konto >= &FromAcc
    AND   FinPost.Konto <= &ToAcc
    AND   FinPost.Dato   >= &FromPrimo  //15.09.2016
    AND (PrimoYr(FinPost.Dato) == 0     // 15.09.2016 Det er ikke en primopost.
    OR  (&PrimoOk AND FinPost.Dato == &PrimoTransDate)  //15.09.2016
    OR  &PrimoIncl)
    AND FinKart[KontoIdx == Konto].L›benummer
    AND ( FinKart[KontoIdx == Konto].KontoType == 0
          OR FinKart[KontoIdx == Konto].KontoType == 1)


    SET &Counter = &Counter + 1

    IF &Counter MOD 100 == 0 THEN
        PRINT Num2Str(&Counter,15,0,0,0) AT 20,6
    ENDIF
    IF NOT Bilag THEN
        SET Bilag = 1
    ENDIF

    IF UltimoYr(Dato) THEN
        SET Dato = EndMth(Dato)
    ENDIF

    IF PrimoYr(Dato) THEN
        SET Dato = #StartMth(Dato)
    ENDIF
    #ChangeTxt(FinPost.Tekst) {17.03.2015}
    SET FinPost.Valuta = FinPost.Valuta == &StdValuta ? "" : FinPost.Valuta

    WRITE &FileName AS TEXT FROM (
         #UserFormatStr(Int2Str(FinPost.L›benummer),'"',0,0)
        ,#UserFormatStr(Enum2Str(FinPost.Posttype),'"',0,0)
        ,#UserFormatStr(Date2Str(FinPost.Dato,321,2,3,2,3,4),'"',0,0)
        ,#UserFormatStr(FinPost.Konto,'"',0,0)
        ,#UserFormatStr(Int2Str(FinPost.Bilag),'"',0,0)
        ,#UserFormatStr(FinPost.Tekst,'"',0,0)
        ,#UserFormatReal(FinPost.Bel›bVAL,'9999.99')
        ,#UserFormatStr(FinPost.Valuta,'"',0,0)
        ,#UserFormatReal(FinPost.Bel›bDKK,'9999.99')
        ,#UserFormatReal(FinPost.Antal,'9999.99')
        ,#UserFormatStr(FinPost.Afdeling,'"',0,0)
        )
END
PRINT Num2Str(&Counter,15,0,0,0) AT 20,6


{ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿}
{³ Eksport af Debitor posteringer + udligninger                             ³}
{ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ}

SET &FileName  = &FileFolder+'C5_Debitorposter.csv'
SET &FileName2 = &FileFolder+'C5_Debitorudligningsposter.csv'


WRITE &FileName AS TEXT FROM (
     'Account'
     ,'Date'
     ,'Type'
     ,'VoucherNumber'
     ,'InvoiceNumber'
     ,'Text'
     ,'AmountDefaultcurrency'
     ,'Amount'
     ,'Currency'
     ,'DueDate'
     ,'Dimension1'
     ,'Dimension2'
     ,'Dimension3'
     ,'Handle'
    )

WRITE &FileName2 AS TEXT FROM (
     'Account'
     ,'Date'
     ,'VoucherNumber'
     ,'Amount'
     ,'AmountDefaultcurrency'
     ,'Currency'
     ,'Handle'
     ,'ClosingVoucherNumber'

    )

SEARCH DebPost USING KtoDatoIdx
    WHERE DebPost.Bel›bVAL

    SET &Counter = &Counter + 1

    IF &Counter MOD 100 == 0 THEN
        PRINT Num2Str(&Counter,15,0,0,0) AT 20,6
    ENDIF

    SET &UdlignBilagsNr = ""
    SET DebPost.Valuta = DebPost.Valuta == &StdValuta ? "" : DebPost.Valuta

    SET &CustTransType = ' '
    #SWITCH(DebPost.Posttype)
        #Case(1)
        SET &CustTransType = 'Faktura'
        IF DebPost.Bel›bVAL < 0 THEN
            SET &CustTransType = 'Kreditnota'
        ENDIF
        #Case(2)
        SET &CustTransType = 'Kreditnota'
        IF DebPost.Bel›bVAL > 0 THEN
            SET &CustTransType = 'Faktura'
        ENDIF
        #Case(3)
        SET &CustTransType = 'Betaling'
        #Case(4)
        SET &CustTransType = 'Rentenota'
        #Case(12)
        SET &CustTransType = 'Rykker'
    #EndSwitch

    #ChangeTxt(DebPost.Tekst) {29.09.2015}
    WRITE &FileName AS TEXT FROM (
         #UserFormatStr(DebPost.Konto,'"',0,0)
        ,#UserFormatStr(Date2Str(DebPost.Dato,321,2,3,2,3,4),'"',0,0)
        ,#UserFormatStr(&CustTransType,'"',0,0)
        ,Int2Str(DebPost.Bilag)
        ,#UserFormatStr(DebPost.Faktura,'"',0,0)
        ,#UserFormatStr(DebPost.Tekst,'"',0,0)
        ,#UserFormatReal(DebPost.Bel›bDKK+DebPost.DiffBogf›rt,'9999.99')
        ,#UserFormatReal(DebPost.Bel›bVAL,'9999.99')
        ,#UserFormatStr(DebPost.Valuta,'"',0,0)
        ,#UserFormatStr(Date2Str(DebPost.Forfald,321,2,3,2,3,4),'"',0,0)
        ,#UserFormatStr(DebPost.Afdeling,'"',0,0)
        ,#UserFormatStr("",'"',0,0)
        ,#UserFormatStr("",'"',0,0)
        ,Int2Str(DebPost.RecId)
      )

    SEARCH DebPostUdlign USING KtoRefIdx
        WHERE DebPostUdlign.PostRef == DebPost.RecId
        AND   DebPostUdlign.Konto   == DebPost.Konto
        AND   DebPostUdlign.Oph‘vet == 0
        AND   DebPostUdlign.Bel›bVAL

        SET &UdlignBilagsnr = int2str(DebPost.Bilag)

        SEARCH DebPostUdlign RENAME Settle USING TransIdx
            WHERE Settle.Transaktion == DebPost.Transaktion
            AND   Settle.Konto       == DebPost.Konto
            AND   Settle.PostRef     <> DebPost.RecId

            SET &UdlignBilagsnr = int2str(DebPost[RecId, Settle.PostRef].Bilag)
        END

        SET DebPost.Valuta = DebPost.Valuta == &StdValuta ? "" : DebPost.Valuta

        WRITE &FileName2 AS TEXT FROM (
             #UserFormatStr(DebPost.Konto,'"',0,0)
            ,#UserFormatStr(Date2Str(DebPostUdlign.Dato,321,2,3,2,3,4),'"',0,0)
            ,Int2Str(DebPost.Bilag)
            ,#UserFormatReal(DebPostUdlign.Bel›bVAL,'9999.99')
            ,#UserFormatReal(DebPostUdlign.Bel›bDKK,'9999.99')
            ,#UserFormatStr(DebPost.Valuta,'"',0,0)
            ,#UserFormatStr(Int2Str(DebPostUdlign.PostRef),'"',0,0)
            ,#UserFormatStr((&UdlignBilagsnr),'"',0,0)

           )

    END

END

PRINT Num2Str(&Counter,15,0,0,0) AT 20,6




{ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿}
{³ Eksport af Kreditor posteringer + udligninger                            ³}
{ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ}

SET &FileName =  &FileFolder+'C5_Kreditorposter.csv'
SET &FileName2 = &FileFolder+'C5_Kreditorudligningsposter.csv'

WRITE &FileName AS TEXT FROM (
     'Account'
     ,'Date'
     ,'Type'
     ,'VoucherNumber'
     ,'InvoiceNumber'
     ,'Text'
     ,'AmountDefaultcurrency'
     ,'Amount'
     ,'Currency'
     ,'DueDate'
     ,'Dimension1'
     ,'Dimension2'
     ,'Dimension3'
     ,'Handle'
   )

WRITE &FileName2 AS TEXT FROM (
     'Account'
     ,'Date'
     ,'VoucherNumber'
     ,'Amount'
     ,'AmountDefaultcurrency'
     ,'Currency'
     ,'Handle'
     ,'ClosingVoucherNumber'

   )


SEARCH KrePost USING KtoDatoIdx
    WHERE KrePost.Bel›bVAL

    SET &Counter = &Counter + 1

    IF &Counter MOD 100 == 0 THEN
        PRINT Num2Str(&Counter,15,0,0,0) AT 20,6
    ENDIF

    SET &UdlignBilagsNr = ""
    SET KrePost.Valuta = KrePost.Valuta == &StdValuta ? "" : KrePost.Valuta


    SET &CustTransType = ' '
    #SWITCH(KrePost.Posttype)
        #Case(1)
        SET &CustTransType = 'Faktura'
        IF KrePost.Bel›bVAL > 0 THEN
            SET &CustTransType = 'Kreditnota'
        ENDIF
        #Case(2)
        SET &CustTransType = 'Kreditnota'
        IF KrePost.Bel›bVAL < 0 THEN
            SET &CustTransType = 'Faktura'
        ENDIF
        #Case(3)
        SET &CustTransType = 'Betaling'
        #Case(4)
        SET &CustTransType = 'Rentenota'
        #Case(12)
        SET &CustTransType = 'Rykker'
    #EndSwitch

    #ChangeTxt(KrePost.Tekst) {29.09.2015}

    WRITE &FileName AS TEXT FROM (
         #UserFormatStr(KrePost.Konto,'"',0,0)
        ,#UserFormatStr(Date2Str(KrePost.Dato,321,2,3,2,3,4),'"',0,0)
        ,#UserFormatStr(&CustTransType,'"',0,0)
        ,Int2Str(KrePost.Bilag)
        ,#UserFormatStr(KrePost.Faktura,'"',0,0)
        ,#UserFormatStr(KrePost.Tekst,'"',0,0)
        ,#UserFormatReal(KrePost.Bel›bDKK+KrePost.DiffBogf›rt,'9999.99')
        ,#UserFormatReal(KrePost.Bel›bVAL,'9999.99')
        ,#UserFormatStr(KrePost.Valuta,'"',0,0)
        ,#UserFormatStr(Date2Str(KrePost.Forfald,321,2,3,2,3,4),'"',0,0)
        ,#UserFormatStr(KrePost.Afdeling,'"',0,0)
        ,#UserFormatStr("",'"',0,0)
        ,#UserFormatStr("",'"',0,0)
        ,Int2Str(KrePost.RecId)

      )


    SEARCH KrePostUdlign USING KtoRefIdx
        WHERE KrePostUdlign.PostRef   == KrePost.RecId
        AND   KrePostUdlign.Konto     == KrePost.Konto
        AND   KrePostUdlign.Oph‘vet   == 0
        AND   KrePostUdlign.Bel›bVAL

        SET &UdlignBilagsnr = int2str(KrePost.Bilag)

        SEARCH KrePostUdlign RENAME Settle USING TransIdx
            WHERE Settle.Transaktion == KrePost.Transaktion
            AND   Settle.Konto       == KrePost.Konto
            AND   Settle.PostRef     <> KrePost.RecId

            SET &UdlignBilagsnr = int2str(KrePost[RecId, Settle.PostRef].Bilag)
        END

        SET KrePost.Valuta = KrePost.Valuta == &StdValuta ? "" : KrePost.Valuta

        WRITE &FileName2 AS TEXT FROM (
             #UserFormatStr(KrePost.Konto,'"',0,0)
            ,#UserFormatStr(Date2Str(KrePostUdlign.Dato,321,2,3,2,3,4),'"',0,0)
            ,Int2Str(KrePost.Bilag)
            ,#UserFormatReal(KrePostUdlign.Bel›bVAL,'9999.99')
            ,#UserFormatReal(KrePostUdlign.Bel›bDKK,'9999.99')
            ,#UserFormatStr(KrePost.Valuta,'"',0,0)
            ,#UserFormatStr(Int2Str(KrePostUdlign.PostRef),'"',0,0)
            ,#UserFormatStr((&UdlignBilagsnr),'"',0,0)
           )
    END
END
PRINT Num2Str(&Counter,15,0,0,0) AT 20,6

{ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿}
{³ Eksport af Lager                                                         ³}
{ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ}

SET &FileName = &FileFolder+'C5_Lager.csv'
SET &Counter  = 0

    WRITE &FileName AS TEXT FROM (
          #UserFormatStr("Handle",'"',0,0)
         ,#UserFormatStr("Number",'"',0,0)
         ,#UserFormatStr("ProductGroupHandle",'"',0,0)
         ,#UserFormatStr("Name1",'"',0,0)
         ,#UserFormatStr("Name2",'"',0,0)
         ,#UserFormatStr("Barcode",'"',0,0)
         ,#UserFormatStr("Salesprice",'"',0,0)
         ,#UserFormatStr("CostPrice",'"',0,0)
         ,#UserFormatStr("RecommendePrice",'"',0,0)
         ,#UserFormatStr("Unithandle",'"',0,0)
         ,#UserFormatStr("Available",'"',0,0)
         ,#UserFormatStr("ItemType",'"',0,0)
         )


// derindl‘ses i TmpAccountSum for at sikre der ikke er dubletter.
#DeleteKontoSum(1234)
SEARCH LagKart USING VareIdx
    SET &Counter = &Counter + 1

    INTRODUCE TmpKontoSum[KontoIdx, 1234]
    //2.10 SET TmpKontoSum.Konto   = StrReplaceAll(LagKart.VareNummer, " ", "-")  // er statter blanke tegn med -
    SET TmpKontoSum.Konto   = LagKart.VareNummer
    WHILE StrFind(TmpKontoSum.Konto," ",1,20)
        SET TmpKontoSum.Konto   = #StrReplace(TmpKontoSum.Konto, " ", "-")  // er statter blanke tegn med -
    END
    SET TmpKontoSum.Tekst   = LagKart.VareNummer

    IF TmpKontoSum.Konto == StrKeep(TmpKontoSum.Konto, &ValidCharacter) THEN
        INSERT TmpKontoSum
    ENDIF
END
SEARCH TmpKontoSum
    WHERE TmpKontoSum.Session == 1234

    INTRODUCE LagKart[VareIdx, TmpKontoSum.Tekst]
    IF &Counter MOD 1 == 0 THEN
        PRINT Num2Str(&Counter,15,0,0,0) AT 20,7
    ENDIF

    #ValKursSet(LagKart.Kostvaluta,&SystemDato,&ExchRate)
    SET &CostPrice    = #Bel›b( (LagKart.Kostprisenhed ? LagKart.Kostpris / LagKart.Kostprisenhed : LagKart.Kostpris ) * #ValKursDKK(&ExchRate))

    INTRODUCE LagPris[VarePrisIdx == LagKart.VareNummer, &StdPriceGroup]
    #ValKursSet(LagPris.Valuta,&SystemDato,&ExchRate)
    SET &SalesPrice    = #Bel›b( (LagPris.Prisenhed ? LagPris.Pris / LagPris.Prisenhed : LagPris.Pris ) * #ValKursDKK(&ExchRate))

    #ChangeTxt(LagKart.Varenavn1) {24.02.2015}
    #ChangeTxt(LagKart.Varenavn2) {24.02.2015}
    WRITE &FileName AS TEXT FROM (
         #UserFormatStr(Int2Str(LagKart.L›benummer),'"',0,0)
        ,#UserFormatStr(TmpKontoSum.Konto,'"',0,0)
        ,#UserFormatStr(LagKart.Gruppe,'"',0,0)
        ,#UserFormatStr(LagKart.Varenavn1,'"',0,0)
        ,#UserFormatStr(LagKart.Varenavn2,'"',0,0)
        ,#UserFormatStr('','"',0,0)
        ,#UserFormatReal(&SalesPrice,'9999.00')
        ,#UserFormatReal(&Costprice,'9999.00')
        ,#UserFormatStr('','"',0,0)
        ,#UserFormatStr(LagKart.Enhed,'"',0,0)
        ,Int2Str(LagKart.Sp‘rret)
        ,#UserFormatStr(LagKart.Varetype == 1 ? '1':'0','"',0,0)
        )
END

{+--------------------------------------------------------------------------+}
{Ý Eksport af f›rste og sidste statuskonto                                  Ý}
{+--------------------------------------------------------------------------+}

SET &FileName = &FileFolder+'C5_F›rsteOgSidsteStatuskonto.csv'
SET &Counter  = 0
WRITE &FileName AS TEXT FROM (
    #UserFormatStr("FromAccount",'"',0,0)
   ,#UserFormatStr("ToAccount",'"',0,0)
)

SET &BalanceFrom = ""
SET &BalanceTo   = ""
SEARCH FinKart USING KontoIdx
    WHERE Konto
    AND Konto >= &FromAcc
    AND Konto <= &ToAcc
    AND KontoType == 1      // Status

    #ADD(&Counter,1)
    IF &Counter MOD 1 == 0 THEN
        PRINT Num2Str(&Counter,15,0,0,0) AT 20,8
    ENDIF

    IF NOT &BalanceFrom THEN
        //PRINT FinKart.Konto
        SET &BalanceFrom = FinKart.Konto
        PREV FinKart
        IF FinKart.KontoType <> 5 THEN
            SET &BalanceFrom = FinKart.Konto
            PREV FinKart
            IF FinKart.KontoType <> 5 THEN
                SET &BalanceFrom = FinKart.Konto
                PREV FinKart
                IF FinKart.KontoType <> 5 THEN
                    SET &BalanceFrom = FinKart.Konto
                    PREV FinKart
                    IF FinKart.KontoType <> 5 THEN
                        SET &BalanceFrom = FinKart.Konto
                        PREV FinKart
                        IF FinKart.KontoType <> 5 THEN
                            SET &BalanceFrom = FinKart.Konto
                            PREV FinKart
                        ENDIF
                    ENDIF
                ENDIF
            ENDIF
        ENDIF
        //SET &BalanceFrom = FinKart.Konto
    ELSE
        SET &BalanceTo = FinKart.Konto
    ENDIF
END

INTRODUCE FinKart[KontoIdx == &BalanceTo]
    SET &BalanceTo = FinKart.Konto
    NEXT FinKart
    IF FinKart.KontoType <> 2 THEN
        SET &BalanceTo = FinKart.Konto
        NEXT FinKart
        IF FinKart.KontoType <> 2 THEN
            SET &BalanceTo = FinKart.Konto
            NEXT FinKart
            IF FinKart.KontoType <> 2 THEN
                SET &BalanceTo = FinKart.Konto
                NEXT FinKart
                IF FinKart.KontoType <> 2 THEN
                    SET &BalanceTo = FinKart.Konto
                    NEXT FinKart
                    IF FinKart.KontoType <> 2 THEN
                        SET &BalanceTo = FinKart.Konto
                        NEXT FinKart
                    ENDIF
                ENDIF
            ENDIF
         ENDIF
    ENDIF

IF Str2Int(&BalanceTo) > Str2Int(&ToAcc) THEN
    SET &BalanceTo = &ToAcc
ENDIF

WRITE &FileName AS TEXT FROM (
    #UserFormatStr(&BalanceFrom,'"',0,0)
   ,#UserFormatStr(&BalanceTo,'"',0,0)
)

{ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿}
{³ Eksport af firmakartotek                                                 ³}
{ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ}

SET &FileName = &FileFolder+'C5_virksomhedsoplysning.csv'
SET &Counter  = 0

    WRITE &FileName AS TEXT FROM (
         #UserFormatStr("CINumber",'"',0,0)
        ,#UserFormatStr("Name",'"',0,0)
        ,#UserFormatStr("Address1",'"',0,0)
        ,#UserFormatStr("Address2",'"',0,0)
        ,#UserFormatStr("PostalCode",'"',0,0)
        ,#UserFormatStr("City",'"',0,0)
        ,#UserFormatStr("Country",'"',0,0)
        ,#UserFormatStr("Phone",'"',0,0)
        ,#UserFormatStr("CellPhone",'"',0,0)
        ,#UserFormatStr("Fax",'"',0,0)
        ,#UserFormatStr("Email",'"',0,0)
        ,#UserFormatStr("Website",'"',0,0)
        ,#UserFormatStr("Bank",'"',0,0)
        ,#UserFormatStr("Giro",'"',0,0)
        ,#UserFormatStr("BankName",'"',0,0)
        ,#UserFormatStr("Swift",'"',0,0)
        ,#UserFormatStr("IBAN",'"',0,0)
        )

SEARCH FirmaOplysninger

    SET &Zip = SubStr(FirmaOplysninger.PostBy,1,StrFind(FirmaOplysninger.PostBy,' ',1,50)-1)
    INTRODUCE Land[KodeIdx, FirmaOplysninger.Land ? FirmaOplysninger.Land : "Danmark"]
    SET &Country = Land.Land
    #ValidateCountry(Land,&Country)
    WRITE &FileName AS TEXT FROM (
         #UserFormatStr(FirmaOplysninger.CVR ? Land.Mokode+FirmaOplysninger.CVR : "",'"',0,0)
        ,#UserFormatStr(FirmaOplysninger.Navn,'"',0,0)
        ,#UserFormatStr(FirmaOplysninger.Adresse1,'"',0,0)
        ,#UserFormatStr(FirmaOplysninger.Adresse2,'"',0,0)
        ,#UserFormatStr(&Zip,'"',0,0)
        ,#UserFormatStr(Postnummer[PostNrIdx, &Zip].Bynavn,'"',0,0)
        ,#UserFormatStr(&Country,'"',0,0)
        ,#UserFormatStr(FirmaOplysninger.Telefon,'"',0,0)
        ,#UserFormatStr(FirmaOplysninger.MobilTelefon,'"',0,0)
        ,#UserFormatStr(FirmaOplysninger.Telefax,'"',0,0)
        ,#UserFormatStr(FirmaOplysninger.Email,'"',0,0)
        ,#UserFormatStr(FirmaOplysninger.URL,'"',0,0)
        ,#UserFormatStr(FirmaOplysninger.Bank,'"',0,0)
        ,#UserFormatStr(FirmaOplysninger.Giro,'"',0,0)
        ,#UserFormatStr(FirmaOplysninger.BankNavn,'"',0,0)
        ,#UserFormatStr(FirmaOplysninger.Swift,'"',0,0)
        ,#UserFormatStr(FirmaOplysninger.IBAN,'"',0,0)
        )

    #ADD(&Counter,1)
    IF &Counter MOD 1 == 0 THEN
        PRINT Num2Str(&Counter,15,0,0,0) AT 20,8
    ENDIF

END

{ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿}
{³ Eksport af dimensioner                                                   ³}
{ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ}
SET &FileName = &FileFolder+'C5_Dimension.csv'
SET &Counter  = 0

    WRITE &FileName AS TEXT FROM (
         #UserFormatStr("Number",'"',0,0)
        ,#UserFormatStr("Name",'"',0,0)
        ,#UserFormatStr("DimCode",'"',0,0)
        )

SEARCH Afdeling USING KodeIdx

    WRITE &FileName AS TEXT FROM (
         #UserFormatStr(Afdeling.Afdeling,'"',0,0)
        ,#UserFormatStr(Afdeling.Navn,'"',0,0)
        ,#UserFormatStr("1",'"',0,0)
        )

    #ADD(&Counter,1)
    IF &Counter MOD 1 == 0 THEN
        PRINT Num2Str(&Counter,15,0,0,0) AT 20,9
    ENDIF

END


{ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿}
{³ Evt. Eksport af fakturaer til pdf filer                                  ³}
{ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ}
IF &PdfOk THEN
    INTRODUCE TmpFrmVirtuel[SessionFilRecIdx,99999999,1,1,1]
    SET TmpFrmVirtuel.Tekst1    = &PdfFileFolder
    INSERT TmpFrmVirtuel
    SEARCH DebJournal USING KtoDatoIdx

        INTRODUCE OrdKartArkiv[NumTraIdx,Nummer,Transaktion]
        IF L›benummer THEN
            IF LagerStatus == #LSkonomisk THEN
                #KaldFunktion(#OrdFaktura,0,1,1,#MdlDebitor,Konto,OrdKartArkiv.RecId,,OrdKartArkiv)

                //IF CustJournal.SimpleInvoice THEN
                //    #CallActionGroup(#SimpleSalesInv,0,,0,#ModCustomer,SalesTableArch.InvoiceAccount,1,,SalesTableArch,1,&OverrideOutput,&OverridePrinter,&MakeXML,&OverrideOSPrinter)
                //ELSE
                //    #CallActionGroup(#SalesInvoice,0,,0,#ModCustomer,SalesTableArch.InvoiceAccount,1,,SalesTableArch,1,&OverrideOutput,&OverridePrinter,&MakeXML,&OverrideOSPrinter)
                //ENDIF
            ENDIF
        ELSE


            {IF DSP_SagFakGem[FakNrIdx,CustJournal.Voucher].RowNumber THEN                                                                        }
            {    INTRODUCE DSP_SagFakGem[FakNrIdx,CustJournal.Voucher]                                                                            }
            {                                                                                                                                     }
            {    Process 15 'Report=DSP_TimeFakturaNy "PRINTER=SMART2NAV" OUTPUT=PRINTER,MSGWND-,GETOPTS-,CODES-  Language=*' USING DSP_SagFakGem }
            {ENDIF                                                                                                                                }
        ENDIF

    END
ENDIF



PAUSE