Sunday, March 18, 2012

Menambah record baru pada kedua company

Berikut ini digunakan untuk melakukan insert data ke 2 company dengan menggunakan class.
Syntax nya changeCompany("HSP").

static void Create_to_2Company(Args _args)
{
AxPurchTable table;
AxPurchLine line;
;
table = new AxPurchTable();
table.parmOrderAccount('');
table.parmInventLocationId('WAREHOUSE');
table.save();
line = new AxPurchLine();
line.axPurchTable(table);
line.parmItemId('A001'); // Item number Q987
line.parmPurchQty(12); // 12 pcs.
line.save();
    changeCompany("HSP")
    {
        table = new AxPurchTable();
        table.parmOrderAccount('');
        table.parmInventLocationId('WAREHOUSE');
        table.save();
        line = new AxPurchLine();
        line.axPurchTable(table);
        line.parmItemId('A001'); // Item number Q987
        line.parmPurchQty(12); // 12 pcs.
        line.save();
    }
}

Monday, March 5, 2012

Lookup modifikasi

Berikut ini digunakan untuk membuat lookup sendiri. Kasusnya, nambah form dan EditString, namun tidak ada relasi ke datasource (EdiString lepasan gitu.....)

public void lookup()
{
     //super();
     //Inisialisasi sysTableLookupClass
     sysTableLookup          sysTableLookup  = SysTableLookup::newParameters(tableNum(InventItemgroup), this);
     Query                   query           = New Query();
     QueryBuildDataSource    qbdsTbl1, qbdsTbl2;
     QueryBuildRange         qbr;
     ;

     //Tambah tabel
     qbdsTbl1      = query.addDataSource(tableNum(InventItemgroup));

     //Tambah rentang Query untuk membatasi daftar record
     qbr = qbdsTbl1.addRange(fieldNum(InventItemgroup,ItemGroupId));
     qbr.value();

     qbr = qbdsTbl1.addRange(fieldNum(InventItemgroup,Name));
     qbr.value();

     qbdsTbl1.relations(true);

     sysTableLookup.addLookupfield(fieldNum(InventItemgroup, ItemGroupId));
     sysTableLookup.addLookupfield(fieldNum(InventItemgroup, Name));

     sysTableLookup.parmQuery(query);

    //Tampilkan drop down

     sysTableLookup.performFormLookup();
}

Wednesday, February 22, 2012

Membuat dialog sederhana dengan lookup dan input value

Berikut ini dialog dasar dengan lookup dan inputan value.


static void OpenDialogItemGroup(Args _args)
{
Dialog      dialog = new Dialog("Item grup selection");


DialogField fieldGroup;
DialogField fieldDisc;
ItemgroupId ItemgroupId;
Amount Amount;

;


fieldGroup = dialog.addField(typeid(ItemgroupId));
fieldDisc = dialog.addField(typeid(Amount),"Disc. Pct.");


    if (dialog.run())
    {
        info("You selected: " + fieldGroup.value() + " " +int2str(fieldDisc.value()));
    }
}

Tuesday, August 2, 2011

Contoh manipulasi tanggal di AX 2009

static void Testing_Tgl(Args _args)
{

    str tglitem,tglstr,blnstr,thnstr,tglwalbln;
    date tgl,akhirbln;
    date d = today(),x;
    int i;

    ;
    tglitem = '2011/06/10';

    tglstr=date2str(str2date(tglitem,321), 123, 2, 0, 0, 0,0);
    blnstr=date2str(str2date(tglitem,321), 123, 0, 0, 2, 0,0);
    thnstr=date2str(str2date(tglitem,321), 123, 0, 0, 0, 0,4);


    info('Tgl :' +tglstr);
    info('Bln :' +blnstr);
    info('thn :' +thnstr);
   

    info('Waktu :'+time2str(timeNow(),TimeSeparator::Dot, TimeFormat::Hour24));

    akhirbln = EndMth(str2date(tglitem,321));

    info('Tgl Awal Bulan '+blnstr+': '+date2str(str2date(thnstr+blnstr+'01',321), 123,2,0,0,0,0));
    info('Tgl Akhir Bulan '+blnstr+': '+date2str(akhirbln, 123, 2, 1, 0, 1,0));

   // info(date2str(str2date(thnstr+blnstr+tglstr,321), 123, 2, 1, 2, 1,4));
    info(date2str(str2date('201110'+tglstr,321), 123, 2, -1, 2, -1,4));

}

Friday, June 10, 2011

Mengetahui koneksi user di SQL Server


SELECT d.name, p.login_time,p.status,p.hostname,p.loginame
from master.dbo.sysprocesses p
join master.dbo.sysdatabases d on p.dbID = d.dbID

Monday, May 30, 2011

Import General Journal dengan CSV (termasuk Fixed asset & prepayment)

static void Import_GL_LedgerJournal_CSV(Args _args)///and also it will import the data from the Excel
{

LedgerJournalName       ledgerJournalName;

LedgerJournalTable      ledgerjournalTable;
Axledgerjournaltrans    axledgerjournaltrans;

LedgerJournalTrans        ledgerJournalTrans;
LedgerJournalTrans_Asset  ledgerJournalTrans_asset;
LedgerJournalACType       ledgerJournalACType;

Numberseq               _NumberSeq;
Voucher                 numbervoucher;

Dialog                  dialog;
DialogField             dialogField,dialogField2,dialogdate;
Filename                filename;

CommaIO                 io;
Container               con;
Container               filterCriteria;
str                     val, qtyStr, priceStr, tgl, tgl_due;
str                     acctype,offacctype,_bookId,prepay;

COMVariant cOMVariant;

int i,j,k;
SysOperationProgress simpleProgress;

#avifiles
;

    Dialog          = new dialog();

    dialogField     = dialog.addField(typeId(FileNameOpen),'File Name');
    filterCriteria  = ['*.csv','*.csv'];//// To filter only CSV files
    filterCriteria  = dialog.filenameLookupFilter(filterCriteria);
    dialog.run();
    if(dialog.run())
    fileName        = dialogField.value();
    info(filename);
    io              = new CommaIO(fileName, "r");
    io.read();
    io.inFieldDelimiter(";");



if(fileName)
{
    ttsBegin;
    ledgerJournalTable.JournalName = "GL-BEGIN";

    ledgerJournalTable.Name    = " Saldo Awal ";
    ledgerJournalTable.initFromLedgerJournalName();
    ledgerJournalTable.insert();

    ttscommit;

    _NumberSeq = NumberSeq::newGetVoucherFromCode(ledgerJournalName::find(ledgerJournalTable.JournalName).VoucherSeries);
    numbervoucher = _NumberSeq.voucher();

    simpleProgress = SysOperationProgress::newGeneral(#aviUpdate,'Importing Transactions',100);///SysProgressOperation

   while((io.status()==IO_Status::Ok))
   {
    con     = io.read();

    if (conlen(con) == 26)
    {
        j++;
        simpleProgress.incCount();
        simpleprogress.setText(strfmt("Transaction Imported: %1",i));
        sleep(10);

        tgl = conPeek(con, 22);
        tgl_due = conPeek(con, 22);
        _BookId = conPeek(con, 19);

        acctype = conPeek(con, 3);
        offacctype = conPeek(con, 2);
        prepay = conPeek(con, 26);

        axledgerjournaltrans = new Axledgerjournaltrans();
        axledgerjournaltrans.parmJournalNum(ledgerJournalTable.JournalNum);
        // mm-dd-yy --> 213, dd-mm-yy --> 123
        axledgerjournaltrans.parmTransDate(str2date(tgl,213));
        //info(tgl + ' - '  + date2str(str2date(tgl,213),123,2,2,2,2,4));

        axledgerjournaltrans.parmVoucher(conPeek(con, 17));

        switch(acctype) //accounttype
        {
            case "Ledger":
                axledgerjournaltrans.parmAccountType(ledgerJournalACType::Ledger);
                break;

            case "Customer":
                axledgerjournaltrans.parmAccountType(ledgerJournalACType::Cust);
                break;

            case "Vendor":
                axledgerjournaltrans.parmAccountType(ledgerJournalACType::Vend);
                break;

            case "Fixed assets":
                axledgerjournaltrans.parmAccountType(ledgerJournalACType::FixedAssets);
                break;

            case "Bank":
                axledgerjournaltrans.parmAccountType(ledgerJournalACType::Bank);
                break;
        }

        axledgerjournaltrans.parmAccountNum(conPeek(con, 4));
        axledgerjournaltrans.parmTxt(conPeek(con, 6));
        axledgerjournaltrans.parmPostingProfile(conPeek(con, 8));

        if (prepay == "Y" )
        {
            axledgerjournaltrans.parmPrepayment(Noyes::Yes);
        }
        else
        {
            axledgerjournaltrans.parmPrepayment(Noyes::No);
        }

        axledgerjournaltrans.parmAmountCurDebit(conPeek(con, 11));
        axledgerjournaltrans.parmAmountCurCredit(conPeek(con, 10));

        switch(offacctype) //offset accounttype
        {
            case "Ledger":
                axledgerjournaltrans.parmOffsetAccountType(ledgerJournalACType::Ledger);
                break;

            case "Customer":
                axledgerjournaltrans.parmOffsetAccountType(ledgerJournalACType::Cust);
                break;

            case "Vendor":
                axledgerjournaltrans.parmOffsetAccountType(ledgerJournalACType::Vend);
                break;

            case "Fixed assets":
                axledgerjournaltrans.parmOffsetAccountType(ledgerJournalACType::FixedAssets);
                break;

            case "Bank":
                axledgerjournaltrans.parmOffsetAccountType(ledgerJournalACType::Bank);
                break;
        }

        axledgerjournaltrans.parmOffsetAccount(conPeek(con, 5));
        axledgerjournaltrans.parmDue(str2date(tgl_due,123));
        axledgerjournaltrans.parmDocumentDate(str2date(tgl,123));

        axledgerjournaltrans.save();
        /*
        if(acctype == "Fixed assets")
        {
        if(axledgerjournaltrans.ledgerJournalTrans().RecId)
                {
                   ttsbegin;
                   ledgerJournalTrans_asset.RefRecId = axledgerjournaltrans.ledgerJournalTrans().RecId;
                   ledgerJournalTrans_asset.AssetId  = axledgerjournaltrans.ledgerJournalTrans().getAssetId();
                   ledgerJournalTrans_Asset.Company  = axledgerjournaltrans.ledgerJournalTrans().getAssetCompany();
                   ledgerJournalTrans_asset.BookId   = _BookId;
                   ledgerJournalTrans_asset.TransType = AssetTransTypeJournal::Acquisition;
                   ledgerJournalTrans_asset.TransType = AssetTransTypeJournal::Depreciation;

                   if(assetype == "A")
                       ledgerJournalTrans_asset.TransType = AssetTransTypeJournal::Acquisition;
                   else
                       ledgerJournalTrans_asset.TransType = AssetTransTypeJournal::Depreciation;

                   ledgerJournalTrans_asset.insert();
                   ttscommit;
                }
         }
        */
        i++;
    } //if

   }//while
}//if filename
}

Saturday, May 28, 2011

Buat Master Aset

static void GL_ImporttAsset(Args _args)
{
    axAssetTable    _axAssetTable;
    assetBook       _assetBook;
    AssetId         _AsseiId;
    ;

       if (Box::yesNo("Create New Asset ?",DialogButton::No))
    {

        _axAssetTable =  new axAssetTable();

        _axAssetTable.parmAssetGroup("INV.00");
        _axAssetTable.parmAssetId("008001987001");
        _axAssetTable.parmName("NEW ASSET");

        _axAssetTable.save();

        ttsBegin;
            select forUpdate _assetBook
            where _assetBook.AssetId == "008001987001" && _assetBook.BookId == "Y02";

            _assetBook.Depreciation = NoYes::Yes;

            _assetBook.update();

       ttsCommit;
    }
}