Sabtu, 27 April 2019

Create Header Detail without define relation table

Requirement :
James sebagai directur perusahaan tidak mau melihat comment workflow yang tersimpan di Form Workflow. James menginginkan informasi workitem dan comment ada diform utama.

Req ini bisa kita kerjakan dengan metode QUERY,VIEW, Query table/view dengan QUERY CLASS

Pertama kita harus membuat QUERY yang terbuat dari Table-table workflow dan tentunya berelasi dengan table document entah itu jurnal,PO atau apapun.

Sebagai contoh disini adalah table SQ.

CREATE QUERY : SQ2WFQuery
SQ berelasi dengan WorkflowTrackingStatusTable,
melalui :
              SQ.dataareaId <> WorkflowTrackingStatusTable.ContexCompanyId
              SQ.RecId        <> WorkflowTrackingStatusTable.ContectRecId
              SQ.TableId      <> WorkflowTrackingStatusTable.ContextTableId

WorkflowTrackingStatusTable berelasi dengan WorkflowTrackingTable,
melalui :
       WorkflowTrackingStatusTable.RecId <> WorkflowTrackingTable.WorkflowTrackingStatusTable

WorkflowTrackingTable berelasi dengan WorkflowTrackingCommentTable
melalui :
       WorkflowTrackingTable.RecId <>  WorkflowTrackingCommentTable.WorkflowTrackingTable

CREATE VIEW : SQ2WFView
VIEW yang sudah dibuat dengan nama SQ2WFview dengan Query SQ2WFQuery.
Definisikan field mana saja yang akan dibawa sebagai field SQ2WFView
ex : SQnum, TrackingStatus, User, TrackingType, Comment.
Defisinikan Field2 yang akan dipakai dengan cara memasukannnya keGroup

DIform SQTable. Tambah Datasourcenya dari SQ2WFView.
Dikarenkaan source yang kita pakai berasal dari VIEW sehingga kita membutuhkan codes yang akan membuat SQ2WFView berelasi ke SQTable.di Method Exceute Query table SQ2WFView harus didefisikan code berikut :


public void executeQuery()
{
    //mendefinisikan variable qbds
    QueryBuildDataSource    qbds;

    //qbds tersebut adalah Datasourcenya sendiri(yang diadd di form)
    qbds = this.queryBuildDataSource();
   
    //qbds membersihkan chace range query agar default selalu dalam keadaan kosong
    qbds.clearRanges();
    //qbds melakukan query seperti "while select" berdasarkan paramater SQTable.SQNum
    qbds.addRange(fieldNum(PSMWF2SQtableView, SQNum)).value(SysQuery::value(SQTable.SQNum));

   //maka Datasource SQ2WFView berisi hasil Query = While select * from SQ2WFView where  SQ2WFView.SQnum == SQTable.SQNum

    super();
//setelah super() maka hasil Query ditampilkan di Grid
}





Senin, 22 April 2019

Relasi antara Worfklow dan Table document

Berikut Relasi antara Workflow dengan Table docment yang memakai workflow:

WorkflowTrackingStatusTable.ContextCompanyId <> [tabledocument].DataAreaId
WorkflowTrackingStatusTable.ContextRecId          <> [tabledocument].RecId
 WorkflowTrackingStatusTable.ContextTableId      <>  tabledocument].TableId

Sample :
Asumsi saya mempunyai table dengan nama RFPTable
 

WorkflowTrackingStatusTable             wfstatustable;
WorkflowTrackingTable                      wftrackingtable;
Description                                           descriptwf;
RFPTable                                              rfpTable;
    ;

    select * from rfpTable
    where rfpTable.TransNum == _dfpnumber;

    select * from wfstatustable
    where wfstatustable.ContextCompanyId == rfpTable.dataAreaId
    && wfstatustable.ContextRecId == rfpTable.RecId
    && wfstatustable.ContextTableId == rfpTable.TableId
    && (wfstatustable.TrackingStatus == WorkflowTrackingStatus::Completed || wfstatustable.TrackingStatus == WorkflowTrackingStatus::Pending);

    while select * from wftrackingtable
        order by createdDateTime asc
        where wftrackingtable.WorkflowTrackingStatusTable == wfstatustable.RecId
        && (wftrackingtable.TrackingType == WorkflowTrackingType::Submission || wftrackingtable.TrackingType == WorkflowTrackingType::Approval)
    {
        descriptwf += strFmt("%1 (%2).",wftrackingtable.User,wftrackingtable.TrackingType);
    }

    return descriptwf;

Cannot save the record because the Number Sequence already Exist

Ada kalanya saya menemukan system memakai Nomor sequence yang sama/duplicate pada saat menyimpan/create record baru. dan akhirnya sistem sendiri mengeluarkan info
"cannot save the record because the number sequence already exist".

Trouble solving :
Masuk ke menu :
Organization and Administration - Common - Number Squences - Number Sequences

Pilih nomor sequencenya.
Klik tombol Status Listnya.
Form status list akan tampak.


Maka akan kita temukan satu atau beberpa nomor disana.
Nomor-nomor tersebut adalah yang muncul pada saat user create record ditable yang bersangkutan.
Jika memang nomor yang selalu muncul/duplicate pada saat create record itu tidak akan digunakan lagi, kta bisa mendeletenya.

untuk detailnya untuk apa form ini?
saya juga blum tahu. :D

error ax 2012 sysdictfieldgroup object not initialized.

error ax 2012 sysdictfieldgroup object not initialized

Pada saat saya akan test Pengkondisian di Workflow, error ini muncul.
Trouble solving untuk seperti ini bisa dengan menambahkan Field(bebas) di Group Table yang dijadikan parameter di workflow kita. 
tambahkan Field apa saya diGroup Auto Report. 

Minggu, 14 April 2019

simple Logic for Grouping some records

Check this out :

thanks to Tukang Ojek ASP who create this simple logic.

ListPaymentGenralJournalAccount2V       viewPayment;
    CustVendAC                              CustVendAC,lastvalue;
    Amount                                  sumAmount;
    int                                     i=1;
    int                                     numofrecord;
    

while select viewPayment
    where viewPayment.JournalNum == ListPaymentGenralJournalAccount2V.JournalNum
    {
        CustVendAC = viewPayment.CustVendACcount();
        numofrecord += 1;
        if(CustVendAC == lastvalue)
        {
            sumAmount += viewPayment.AccountingCurrencyAmount;
            info(strFmt("%1",sumAmount));

        }
        else if(CustVendAC != lastvalue && i != 1)
        {
            info("beda");
            sumAmount = viewPayment.AccountingCurrencyAmount;
            info(strFmt("%1",sumAmount));
        }
        lastvalue = CustVendAC;
        i += 1;
    }

Erorr CS1963 - An expression tree may not contain a dynamic operation.

Kali ini saya mendapatkan erorr dengan code CS1963, padahal sebelumnya saya sudah mendefinisikan 'var item in Model' di @foreach(var...