Monday, December 11, 2017

Exportfile for AOT version 1.0 or later
Formatversion: 1

***Element: CLS

; Microsoft Dynamics AX Class: AKACOAExportToHyperion unloaded
; --------------------------------------------------------------------------------
  CLSVERSION 1
 
  CLASS #AKACOAExportToHyperion
    Id 51542
    PROPERTIES
      Name                #AKACOAExportToHyperion
      Extends             #RunBaseBatch
      RunOn               #Called from
    ENDPROPERTIES
   
    METHODS
      Version: 3
      SOURCE #caption
        #public ClassDescription caption()
        #{
        #    return "@AKA64";
        #}
      ENDSOURCE
      SOURCE #classDeclaration
        #abstract class AKACOAExportToHyperion extends RunBaseBatch
        #{
        #
        #    FilenameSave    fileName;
        #    FromDate        fromDate;
        #    ToDate          toDate;
        #
        #
        #    DialogField     dialogFilename;
        #    DialogField     dialogFromDate;
        #    DialogField     dialogToDate;
        #
        #    FilenameFilter  filenameFilter;
        #
        #    CommaIo         commaIO;
        #
        #    RunbaseProgress importProgress;
        #
        #    Counter         lineCounter;
        #
        #    SysQueryRun     queryrun;
        #    Query           query;
        #
        #    LedgerTrans     ledgerTrans;
        #    LedgerTable     ledgerTable;
        #
        #
        #
        #    #AviFiles
        #    #File
        #    #DEFINE.CurrentVersion(2)
        #    #LOCALMACRO.CurrentList
        #        filename,
        #        fromDate,
        #        toDate
        #    #ENDMACRO
        #
        #    }
      ENDSOURCE
      SOURCE #constructProgress
        #//to show the Progressbar
        #public RunBaseProgress constructProgress()
        #{
        #    importProgress = RunbaseProgress::construct(this.numOfProgressBars());
        #    importProgress.setAnimation(#AviTransfer);
        #    importProgress.setCaption((strfmt("@SYS79623",fileName)));
        #    return importProgress;
        #}
      ENDSOURCE
      SOURCE #dialog
        #protected Object dialog()
        #{
        #    DialogRunBase   dialog;
        #    Container       filterCriteria;
        #    ;
        #
        #    dialog = super();
        #
        #    dialog.addGroup("@SYS14598");
        #    dialogFromDate = dialog.addFieldValue(typeid(FromDate),fromDate);
        #    dialogToDate = dialog.addFieldValue(typeid(ToDate),toDate);
        #
        #    dialog.addGroup("@SYS65209");
        #    filterCriteria = ["@SYS39829",'*.csv'];
        #
        #    dialogFilename = dialog.addFieldValue(typeid(FilenameSave),fileName);
        #    filenameFilter = dialog.filenameLookupFilter(filterCriteria);
        #
        #
        #
        #
        #    return dialog;
        #}
      ENDSOURCE
      SOURCE #field2Container
        #protected  container field2Container()
        #{
        #
        #    return  [LedgerTable.dataAreaId,
        #            ledgerTrans.Dimension[1],
        #            LedgerTable.AccountNum,
        #            SystemDateGet(),
        #            ledgerTrans.Dimension[2],
        #            ledgerTrans.Dimension[3],
        #            ledgerTrans.AmountMST];
        #
        #
        #}
      ENDSOURCE
      SOURCE #filename
        #public FilenameSave filename(FileNameSave _fileName)
        #{
        #    ;
        #    fileName = _fileName;
        #
        #    return filename;
        #}
      ENDSOURCE
      SOURCE #getFromDialog
        #public boolean getFromDialog()
        #{
        #    boolean ret;
        #
        #    ret = super();
        #
        #    fileName = dialogFilename.value();
        #    fromDate = dialogFromDate.value();
        #    toDate   = dialogToDate.value();
        #
        #
        #    return ret;
        #}
      ENDSOURCE
      SOURCE #getHeader
        #public container getHeader()
        #{
        #    #define.Entity('Entity')
        #    #define.Product('Product')
        #    #define.Date('Date')
        #    #define.GLAccount('GL Account')
        #    #define.Region('Region')
        #    #define.Project('Project')
        #    #define.Amount('Amount')
        #    container   ret;
        #    int         counter;
        #
        #    void addField(str _header)
        #    {
        #        ;
        #        counter++;
        #        ret = conins(ret, conlen(ret) + 1, _header);
        #    }
        #    ;
        #    counter = 0;
        #    ret     = connull();
        #
        #    addField(#Entity);
        #    addField(#Product);
        #    addField(#Date);
        #    addField(#GLAccount);
        #    addField(#Region);
        #    addField(#Project);
        #    addField(#Amount);
        #
        #
        #    return ret;
        #}
      ENDSOURCE
      SOURCE #getLast
        #public void getLast()
        #{
        #    super();
        #
        #    if (!WinAPI::showMruAllowed())
        #    {
        #            fileName = '';
        #    }
        #}
      ENDSOURCE
      SOURCE #initializeFile
        #// Permissions needed:
        #//      FileIOPermission('fileName','w')
        #public void initializeFile()
        #{
        #    #define.writeMode('W')
        #
        #    FileIOPermission permission;
        #    ;
        #
        #    permission = new FileIOPermission(filename, #writeMode);
        #    permission.assert();
        #
        #    // BP deviation documented
        #    commaIO = new CommaIO(fileName,#writeMode);
        #
        #    if (!commaIO)
        #        throw error("@SYS26757" + "@DTE2357");
        #
        #    CodeAccessPermission::revertAssert();
        #}
      ENDSOURCE
      SOURCE #initParmDefault
        #public void initParmDefault()
        #{
        #    this.initQuery();
        #
        #    super();
        #}
      ENDSOURCE
      SOURCE #initQuery
        #public void initQuery()
        #{
        #
        #    QueryBuildDataSource    qBds1;
        #    QueryBuildDataSource    qBds2;
        #    ;
        #
        #    query = new Query();
        #    qBds1 = query.addDataSource(tablenum(LedgerTrans));
        #    qBds1.addRange(fieldnum(LedgerTrans, TransDate)).value(SysQuery::range(fromDate, ToDate));
        #    // Don't count system generated ultimo transactions
        #    qBds1.addRange(FieldId2Ext(fieldnum(LedgerTrans, Dimension),1));
        #   // qBds1.addRange(FieldId2Ext(fieldnum(LedgerTrans, Dimension),3));
        # //   qBds1.addRange(FieldId2Ext(fieldnum(LedgerTrans, Dimension),4));
        #    qBds1.orderMode(OrderMode::GroupBy);
        #
        #    qBds2 = qBds1.addDataSource(tablenum(LedgerTable));
        #    qBds2.addRange(fieldnum(LedgerTable, AccountPlType)).value(enum2Str(LedgerAccountType::AccountOperations));
        #    qBds2.addLink(fieldnum(LedgerTrans, AccountNum), fieldnum(LedgerTable, AccountNum));
        #  //  qBds2.fetchMode(QueryFetchMode::One2One);
        #    qBds2.joinMode(JoinMode::InnerJoin);
        #
        #    qBds1.addSelectionField(fieldnum(LedgerTrans, AmountMST), SelectionField::Sum);
        #   // qBds1.addSelectionField(fieldnum(LedgerTrans, AmountCur), SelectionField::Sum);
        #    //qBds1.addSelectionField(fieldnum(LedgerTrans, AmountMSTSecond), SelectionField::Sum);
        #    //qBds1.addSelectionField(fieldnum(LedgerTrans, Qty), SelectionField::Sum);
        #
        #    qBds1.addSortField(fieldnum(LedgerTrans, AccountNum));
        #   query.allowCrossCompany(True);
        #   // qBds1.addSortField(fieldnum(LedgerTrans, OperationsTax));
        #    //qBds1.addSortField(fieldnum(LedgerTrans, CurrencyCode));
        #    //qBds1.addSortField(fieldnum(LedgerTrans, euroTriangulation));
        #    queryRun = new SysQueryRun(query);
        #
        #}
      ENDSOURCE
      SOURCE #lineCounter
        #public Counter lineCounter(Counter _lineCounter = lineCounter)
        #{
        #    lineCounter = _lineCounter;
        #
        #    return lineCounter;
        #}
        #
      ENDSOURCE
      SOURCE #numOfProgressBars
        #public int numOfProgressBars()
        #{
        #    return 1;
        #}
      ENDSOURCE
      SOURCE #pack
        #public container pack()
        #{
        #    ;
        #    return [#CurrentVersion,#CurrentList];
        #}
      ENDSOURCE
      SOURCE #queryRun
        #public QueryRun queryRun()
        #{
        #    return queryRun;
        #}
      ENDSOURCE
      SOURCE #recordCounter
        #public Counter recordCounter()
        #{
        #    return SysQuery::countTotal(queryRun);
        #}
      ENDSOURCE
      SOURCE #run
        #public void run()
        #{
        #    if (! this.validate())
        #        throw error("@DTE2365");
        #    try
        #    {
        #        ttsbegin;
        #        this.initQuery();
        #        this.writeTable2File();
        #
        #        ttscommit;
        #    }
        #    catch (Exception::Deadlock)
        #    {
        #        retry;
        #    }
        #}
        #
      ENDSOURCE
      SOURCE #showQueryValues
        #public boolean showQueryValues()
        #{
        #    return  true;
        #}
      ENDSOURCE
      SOURCE #unpack
        #public boolean unpack(container packedClass)
        #{
        #      Version version = runbase::getVersion(packedClass);
        #     container   queryCon;
        #    ;
        #        switch (version)
        #        {
        #            case #CurrentVersion:
        #                [version,#CurrentList ] = packedClass;
        #
        #             break;
        #            default:
        #                return false;
        #        }
        #
        #        return true;
        #
        #    }
        #
        #
      ENDSOURCE
      SOURCE #validate
        #public boolean validate()
        #{
        #    boolean ret = true;
        #    Container  checkType;
        #
        #    if (! filename)
        #    {
        #        ret = checkFailed("@SYS18624");
        #    }
        #
        #    checkType =  Docu::splitFilename(filename);
        #
        #    if(Conpeek(checkType,2) != 'csv')
        #    {
        #        ret = checkFailed("@SYS18624");
        #    }
        #
        #    if(!LedgerPeriod::existEndDate(toDate))
        #    {
        #        ret =  checkFailed("@SYS18624");
        #    }
        #
        #    if(!LedgerPeriod::existDate(fromDate))
        #    {
        #        ret =  checkFailed("@SYS18624");
        #    }
        #    return ret;
        #}
      ENDSOURCE
      SOURCE #writeTable2File
        #public void writeTable2File()
        #{
        #
        #    int     noOfRecords;
        #    SysOperationProgress    sysOperationProgress = new SysOperationProgress(1);
        #
        #    #AviFiles
        #    Container c = ['cec','CEE', 'CEU','FB', 'CHU']
        #    ;
        #
        #
        #    startLengthyOperation();
        #    setprefix("@DTE2355");
        #    sysOperationProgress.setAnimation(#AviTransfer);
        #    sysOperationProgress.setCaption(this.caption());
        #    sysOperationProgress.setTotal( SysQuery::countTotal(queryRun));
        #
        #    noOfRecords = 0;
        #
        #    commaIO.writeExp(this.getHeader());
        #
        #     While select crossCompany:c ledgerTable
        #         where  ledgerTable.AccountPlType == LedgerAccountType::AccountOperations
        #
        #     {
        #
        #          changecompany(ledgerTable.dataAreaId)
        #          {
        #           while select crossCompany:c sum(amountMst),dimension[1], dimension[2], dimension[3] from ledgerTrans
        #             group by accountNum, dimension[1], dimension[2], dimension[3]
        #                where ledgerTrans.TransDate >= fromDate
        #                   && ledgerTrans.TransDate <= toDate
        #                   && ledgerTrans.AccountNum== ledgerTable.AccountNum
        #{
        #      //}
        #
        #    //while(queryRun.next())
        #   // {
        #
        #      //  {
        #  //      ledgerTrans = queryRun.getNo(1);
        #        commaIO.writeExp(this.field2Container());
        #        sysOperationProgress.setText(strfmt("@DTE2353",tableid2pname(tableNum(InventTable)),fileName));
        #        sysOperationProgress.setCount(noOfRecords);
        #        noOfRecords++;
        #        setprefix(tableid2pname(tableNum(LedgerTrans)));
        #        }
        #        }
        #        }
        #
        #    endLengthyOperation();
        #    info(strfmt("@DTE2354", noOfRecords, filename));
        #
        #}
      ENDSOURCE
      SOURCE #construct
        #public Static Object construct(ClassId classId)
        #{
        #    DictClass           dictClass;
        #    Object              action;
        #    ;
        #
        #    if (! classId)
        #    {
        #        throw error(strFmt("@SYS59121"));
        #    }
        #
        #
        #    dictClass       = new DictClass(classId);
        #    action          = dictClass.makeObject();
        #
        #    return action;
        #}
      ENDSOURCE
      SOURCE #description
        #// Here goes a description of the class
        #public static ClassDescription description()
        #{
        #    throw error(Error::missingOverload(funcname()));
        #}
      ENDSOURCE
      SOURCE #main
        #static void main(Args args)
        #{
        #    AKACOAExportToHyperion        exportToHyperion  ;
        #;
        #    exportToHyperion =  AKACOAExportToHyperion::construct(classIdget(exportToHyperion));
        #
        #    if (exportToHyperion.prompt())
        #    {
        #        exportToHyperion.initializeFile();
        #        exportToHyperion.run();
        #    }
        #
        #
        #}
        #
      ENDSOURCE
    ENDMETHODS
  ENDCLASS

***Element: END

No comments: