วันอังคารที่ 11 กันยายน พ.ศ. 2555

ดึงราคาจากPO ก่อน Movement/Transfer จากรายงาน inventTranlist


display real PricePerUnit()
{
  real realRet;
  PurchIdBase ret;
  InventTrans  inventTrans_PONO;

  PurchLine  purchline;
  ;

     while select inventTrans_PONO
     where inventTrans_PONO.TransType == InventTransType::Purch
     && inventTrans_PONO.ItemId    == InventTrans.ItemId
     && inventTrans_PONO.InventTransId <= InventTrans.InventTransId
     {
        ret = inventTrans_PONO.TransRefId;
     }
  if(inventTrans.TransType == InventTransType::Purch)
   {
      ret = "";
   }

 if(ret != "")
{
      select purchline
      where purchline.PurchId == ret
         && purchline.ItemId == InventTrans.ItemId;

     realRet = purchline.PurchPrice;
      }
  else
 {
    realRet = 0;
  }

  return  realRet;
}

วันอาทิตย์ที่ 2 กันยายน พ.ศ. 2555

Create JournalMovement


Boolean CreateJournalMovement()
{

InventJournalTable journalTable;
InventJournalTrans journalTrans;
JournalTableData journalTableData;

InventJournalId journalId;
InventJournalName journalName;

;
ttsbegin;
//journalName = InventJournalName::find([MyJournalName]);
journalName = InventJournalName::find("M-FG");

journalTable.clear();

journalTable.JournalNameId=journalName.JournalNameId;
//rint journalTable.JournalNameId;
//ause;


journalTableData = JournalTableData::newTable(journalTable);
journalTableData.initFromJournalName(journalTableData.JournalStatic().findJournalName(journalTable.journalNameId));

journalTable.JournalId = journalTableData.nextJournalId();
   print journalTable.JournalId;
journalTable.Reservation = ItemReservation::Automatic;
journalTable.insert();


//=== Journal Trans ===//
journalTrans.clear();
journalTrans.JournalId = journalTable.JournalId;
journalTrans.JournalType = journalName.JournalType;
journalTrans.LedgerAccountIdOffset = journalName.LedgerAccountIdOffset;

   print journalTrans.JournalId;
   print journalTrans.JournalType;
   print journalTrans.LedgerAccountIdOffset;
   pause;
 
 //  BBCN0001

//journalTrans.ItemId = [MyItemId];
journalTrans.ItemId = "BBCN0001";

//journalTrans.initFromInventTable(InventTable::find([MyItemId]),False,False);
journalTrans.initFromInventTable(InventTable::find("BBCN0001"),False,False);



//ournalTrans.InventDimId = [MyInventDimId];
journalTrans.InventDimId = "DM-0000001";

journalTrans.TransDate = SystemDateGet();
//journalTrans.Qty = [MyQty];
journalTrans.Qty = 1000;
//journalTrans.PriceUnit = [MyPriceUnit];
journalTrans.PriceUnit = 1000;
//journalTrans.CostPrice = [MyCostPrice];
journalTrans.CostPrice = 999;
journalTrans.CostAmount = journalTrans.calcCostAmount();

print journalTrans.CostAmount;
pause;


journalTrans.insert();
ttscommit;

 info("Create journal movement is done.");

return true;

}

Reference http://oromux.wordpress.com/2008/07/02/ax-create-journal-movement-via-x/
Thanks....

SysGlobalCache ไว้เก็บค่า Global


static void SysGlobalCache(Args _args)
{
   SysGlobalCache globalCache;
   ;
   globalCache = ClassFactory.globalCache();
   globalCache.set(curuserid(), 1, "One");
   globalCache.set(curuserid(), 2, "two");
 
   print globalCache.get(curuserid(), 1);
   print globalCache.get(curuserid(), 2);
   globalcache.remove(curuserid(), 1);
   pause;
   print globalCache.get(curuserid(), 1);
   print globalCache.get(curuserid(), 2);
   pause;
}

อ้างอิง http://learnax.blogspot.com/2010/01/globalcache-alternative-to.html
Thanks.... Nagaraj Jadhav | India 

How to use:
To Set a Value:
static void GlobalCacheSet(Args _args)
{
SysGlobalCache globalCache;
;
globalCache = ClassFactory.globalCache();
globalCache.set(curuserid(), 1, "One");

To Get the Value:
static void GlobalCacheGet(Args _args)
{
SysGlobalCache globalCache;
;
globalCache = ClassFactory.globalCache();
print globalCache.get(curuserid(), 1);
globalcache.remove(curuserid(), 1);
pause;
}

วันพุธที่ 22 สิงหาคม พ.ศ. 2555

Post Movement By Code


static void PostMovement(Args _args)
{
   InventJournalTable inventJournalTable;
   InventJournalName   xInventJournalName;
   InventJournaltrans inventJournaltrans;
  
   
   InventJournalCheckPost inventJournalCheckPost;
   ;
   xInventJournalName = InventJournalName::find(InventParameters::find().MovementJournalNameId);

   info(strfmt("%1", xInventJournalName.JournalType));
   inventJournalTable.initFromInventJournalName(xInventJournalName);

   inventJournalTable.JournalNameId = 'IMov';
   inventJournalTable.insert();

   inventJournaltrans.JournalId =  InventJournalTable.JournalId;
   info(strfmt("%1", inventJournaltrans.JournalId));
   inventJournaltrans.Voucher = '8000_999';
   inventJournaltrans.ItemId = '1005';
   inventJournaltrans.InventDimId = '00000465_069';
   inventJournaltrans.Qty = 1000;
   inventJournaltrans.TransDate = mkdate(1,10,2009);
   inventJournaltrans.insert();
  
 
   inventJournalCheckPost =     InventJournalCheckPost::newJournalCheckPost(JournalCheckPostType::Check,inventJournalTable);
   inventJournalCheckPost.run();
  
  
   //
}

วันพฤหัสบดีที่ 16 สิงหาคม พ.ศ. 2555

ดึงค่า Pool


/*
void create(boolean _append = false)
{
    ;
    inCreate = true;
    if (! journalFormTable.datasourceCreatePre())
    {
        inCreate = false;
        return;
    }

    super(_append);

    journalFormTable.datasourceCreatePost();
    inCreate = false;
}
*/

void create(boolean _append = false)
{
   // Pantep Cust1
    ProdTable     prodTable2setProdPoolId;
   // End Cust1
    ;
    inCreate = true;
    if (! journalFormTable.datasourceCreatePre())
    {
        inCreate = false;
        return;
    }

    super(_append);

   // Pantep Cust1
    select firstonly ProdPoolId from prodTable2setProdPoolId
    where prodTable2setProdPoolId.ProdId == ProdJournalTable.ProdId;

    ProdJournalTable.PoolId =  prodTable2setProdPoolId.ProdPoolId;
   // End Cust1


    journalFormTable.datasourceCreatePost();
    inCreate = false;
}

วันจันทร์ที่ 6 สิงหาคม พ.ศ. 2555

วันพุธที่ 1 สิงหาคม พ.ศ. 2555

All About Form

Link Type: มีหลายๆ datasource ใน Form เดียว

Link ปกติ
Inner Join : เอาเฉพาะมี link
Outer Join : เอาที่ไม่มี Link ด้วย -> ตัวที่ไม่มี Link จะแสดง Recordใน Mater ที่ไม่มี Link ด้วย
Exist  Join : เอาเฉพาะตารางหลัก ที่มี link
Not Exist  Join : เอาเฉพาะตารางหลัก ที่ไม่มี link
Link พิเศษDelayed : default
Passive : ไว้ตอนเขียนโค้ดเอง
Active : ..

Dynalink เช่นตอนดู Transaction ของ Item

ในตัวอย่างนี้เขียนที่ Datasource ของฟอร์ม CustTrans เพื่อทำ DynaLink ใหม่

void init()
{
    Query   query;
    ;

    super();
    //  Clear Dynalink
    /*
    this.query().dataSourceNo(1).clearDynalinks();
    criteriaOpen = this.query().dataSourceNo(1).addRange(fieldnum(CustTrans,Closed));
    custTransDetails = new CustTransDetails(custTrans);
    */
    //

    // Cutomize Dynalink

    this.query().dataSourceNo(1).clearDynalinks();
    this.query().dataSourceTable(tablenum(CustTrans)).addDynalink(
                     fieldnum(CustTrans,AccountNum),
                     element.args().record(),
                     fieldnum(SalesTable,CustAccount));
    criteriaOpen = this.query().dataSourceNo(1).addRange(fieldnum(CustTrans,Closed));

    custTransDetails = new CustTransDetails(custTrans);
  ..