Friday, February 15, 2013

Creating Payment Journal from Text file through X++ in AX 2012



static void Amundla_GLPosting(Args _args)
{
    Ledgerjournalname       ledgerjournalname;
    LedgerjournalTable      LedgerjournalTable;
    LedgerjournalTrans      LedgerjournalTrans;
    LedgerjournalCheckPost  LedgerjournalCheckPost;
    NumberSeq               numberSeq;
    Container               con;
    Filename                filename, Filename2;
    FileIOPermission        permission;
    TextIO                  textIO, textIO1;
    Dialog                  dialog;
    DialogField             dialogField;
 
    #File

   ;

   dialog = new Dialog("Posting Payment Journal");
   dialogField = dialog.addField(ExtendedTypeStr("FilenameOpen"),"Source file");

   if (dialog.run())
   {
        Filename = dialogField.value();
        permission = new fileIOpermission(filename,"RW");
        permission.assert();
        textIO = new TextIO(filename,#io_read);
        textIO.inFieldDelimiter('|');

        select ledgerjournalname where ledgerjournalname.JournalName == "ICICI BR";
        ttsBegin;
        LedgerjournalTable.JournalName      =   ledgerjournalname.JournalName;
        LedgerjournalTable.initFromLedgerJournalName();
        LedgerjournalTable.JournalNum       =   JournalTableData::newTable(LedgerjournalTable).nextJournalId();
        LedgerjournalTable.insert();
        ttsCommit;

       if(textIO)

       {

         while(textIO.status() == IO_Status::Ok)

           {
               con = textIO.read();
               if(con)
               {


                    ttsBegin;
                    numberSeq                               =   NumberSeq::newGetVoucherFromId((ledgerjournalname.NumberSequenceTable));
                    LedgerjournalTrans.Voucher              =   numberSeq.voucher();
                    LedgerjournalTrans.JournalNum           =   LedgerjournalTable.JournalNum;
                    LedgerjournalTrans.CurrencyCode         =   "USD";
                    LedgerjournalTrans.ExchRate             =   Currency::exchRate(LedgerjournalTrans.CurrencyCode);
                    LedgerjournalTrans.AccountType          =   LedgerJournalACType::Cust;
                    LedgerjournalTrans.parmAccount(conPeek(con,2),LedgerjournalTrans.AccountType);
                    LedgerjournalTrans.Txt                  =   conPeek(con,1);
                    LedgerjournalTrans.AmountCurCredit      =   conPeek(con,3);
                    LedgerjournalTrans.TransDate            =   str2Date(conPeek(con,4),123);
                    LedgerjournalTrans.OffsetAccountType    =   LedgerjournalTable.OffsetAccountType;
                    LedgerjournalTrans.OffsetLedgerDimension=   LedgerjournalTable.OffsetLedgerDimension;
                    LedgerjournalTrans.DefaultDimension     =   CustTable::find(conPeek(con,2)).DefaultDimension;
                    LedgerjournalTrans.OffsetDefaultDimension=  CustTable::find(conPeek(con,2)).DefaultDimension;
                    LedgerjournalTrans.insert();
                    ttsCommit;


               }
           }
                    LedgerjournalCheckPost      =   LedgerjournalCheckPost::newLedgerJournalTable(LedgerjournalTable,NoYes::Yes);
                    LedgerjournalCheckPost.run();

     
       }
   }
}