Thursday, October 21, 2010

Ledger Journal Import, General Journal

Importing from a CSV file to create a Ledger journal, we make use of the aX classes here and they simplify our work a lot compared to managing the tables directly.  The data being imported below is minimal; but the code should give you a good example of how to work with additional fields.

//Job Start -->
static void GL_GJImport(Args _args)
{
    textBuffer tb = new textBuffer();
    int cnt;
    int numLines;
    int c;
    container inLine;
    boolean first = true;
    Dimension finDim;
    amount amount;
    LedgerJournalACType LedgerJournalACType;
    ledgerJournalName ledgerJournalName;
    journalID JournalID;
    axLedgerJournalTable axLedgerJournalTable;
    axledgerJournalTrans axLedgerJournalTrans;
    LedgerJournalType JournalType = ledgerJournalType::Daily;
    ;
    tb.fromFile('C:\\sampleGLImport.csv');  //File name  with Path ...
    numLines = tb.numLines();
    if(numLines)
    {
        ttsBegin;
        for(cnt = 0; cnt < numLines; ++cnt)
        {
            inLine = str2Con(tb.nextToken(true));
            if(conpeek(inLine, 1) && !first)  //first field don’t do anything if blank
            {
                if(!JournalID) //Create Journal Haader
                {
                    select firstonly ledgerJournalName
                        where ledgerJournalName.JournalType == JournalType;
                    axLedgerJournalTable = new axLedgerJournalTable();
                    axLedgerJournalTable.parmJournalName(ledgerJournalName.JournalName);
                    axLedgerJournalTable.parmJournalType(JournalType);
                    axLedgerJournalTable.parmName("Journal Description");
                    axLedgerJournalTable.save();
                    JournalID = axLedgerJournalTable.parmJournalNum();
                }
                //Create Trans ...
                axLedgerJournalTrans = new axLedgerJournalTrans();
                axLedgerJournalTrans.parmJournalNum(JournalID);
                axLedgerJournalTrans.parmAccountType(  str2Enum(LedgerJournalACType, conPeek(inLine, 1)));
                axLedgerJournalTrans.parmAccountNum(conpeek(inLine, 2));
                axLedgerJournalTrans.parmOffsetAccountType(  str2Enum(LedgerJournalACType, conpeek(inLine, 3)));
                axLedgerJournalTrans.parmOffsetAccount(conpeek(inLine, 4));
                finDim[1] = conPeek(inLine, 6);
                finDim[2] = conPeek(inLine, 7);
                axLedgerJournalTrans.parmDimension(finDim);
                amount = conpeek(inLine, 5);
                axLedgerJournalTrans.parmAmountCurCredit((amount > 0 ? abs(amount) : 0));
                axLedgerJournalTrans.parmAmountCurDebit((amount < 0 ? abs(amount) : 0));
                axLedgerJournalTrans.save();
                ++c;
            }
            first = false;
        }
        ttsCommit;
        info(strFmt('Imported %1 Items', c));
    }
}
// Job End <--

Acct Type
Acct
Offset Type
OffSet Acct
Amount
Department
CostCenter
Bank
USA Oper
Ledger
300160
500

1201
Ledger
300160
Bank
USA Oper
-250

1102

No comments:

Post a Comment