Posts Tagged ‘ ProjJournal

Proje ücret günlüğü oluşturmak

Merhaba

Bu yazımda proje modulunde bulunan ücret günlüğünün kodla nasıl oluşturulacağını anlatacağım. Bu örnekte bir temp tablom var. Tablonun yapısı aşağıdaki gibi.

Bu tablonun içerisine tipi ücret olan proje kategorilerini otomatik oluşturuyorum ve kullanıcının miktar ve fiyat girmesinden sonra bu tabloyu kullanarak bir sınıf yardımıyla proje günlüğünü oluşturuyorum.

Günlüğü oluşturduğum metot;


void fdCreateProjJournal()
{
    ProjJournalTableData    JournalTableData;
    ProjJournalTransData    journalTransData;
    ProjJournalTable        journalTable;
    ProjJournalTrans        journalTrans;
    DmrProjInvoiceTmp       tmp;       // Parm metotla sınıfa aktarıldı
    TransDate               transDate; // Parm metotla sınıfı aktarıldı
    ProjTable               projTable; // Parm metotla sınıfa aktarıldı

;
    ttsBegin;

    journalTableData = JournalTableData::newTable(journalTable);
    journalTransData = journalTableData.journalStatic().newJournalTransData(
       journalTrans,journalTableData);
    journalTable.clear();
    journalTable.JournalId      = journalTableData.nextJournalId();
    journalTable.JournalType    = ProjJournalType::Revenue;
    journalTable.JournalNameId  = ProjParameters::find().RevenueJournalNameId;

    while select tmp
        where tmp.Amount != 0
    {
        journalTableData.initFromJournalName(
         journalTableData.journalStatic().findJournalName(journalTable.JournalNameId));

        journalTrans.clear();
        journalTransData.initFromJournalTable();
        journalTrans.TransDate          = transDate;
        journalTrans.ProjTransDate      = transDate;
        journalTrans.ProjId             = projTable.ProjId;
        journalTrans.Qty                = tmp.Qty;
        journalTrans.SalesPrice         = tmp.Amount;
        journalTrans.CostPrice          =  1;
        journalTrans.Txt                = projTable.psaRetainageBillingDesc();
        journalTrans.CurrencyId         = ProjInvoiceTable::find(
                     projTable.ProjInvoiceProjId).CurrencyId;
        journalTrans.Worker             = HcmWorker::userId2Worker(curUserId());
        journalTrans.CategoryId         = tmp.ProjCategoryId;
        journalTrans.LinePropertyId     = ProjCategory::find(
                   tmp.ProjCategoryId).projLinePropertyId();
        journalTrans.DefaultDimension   = projTable.DefaultDimension;

        journalTransData.create();
    }
    journalTable.insert();

    info(strFmt("%1 nolu günlük oluşturuldu.", journalTable.JournalId));

    this.projJournalPost();
    ttsCommit;

}

Günlüğü defetere nakletmek için yazdığım metot:

void projJournalPost( )
{
    ProjJournalCheckPost jourPost;
    jourPost = ProjJournalCheckPost::newJournalCheckPost(true,true,
                JournalCheckPostType::Post, tableNum(ProjJournalTable),
                journalTable.JournalId);
    jourPost.run();
}

Bu sayede günlüğü oluşturup deftere nakil işlemini de yapmış oluyoruz. Oluşan günlüğü Proje modülü altında günlükler ücret günlüğünden görebilirsiniz.

Selamlar.