【轉】K3Cloud 單據轉換開發


Entity, EntryEntity, SubEntryEntity 這三個對象具有繼承關系:
Entity 是實體基類,用於定義各種實體的公共屬性;
EntryEntity 是單據體實體類,從Entity派生,增加了單據體的一些特性;
SubEntryEntity 是子單據體實體類,從EntryEntity派生,增加了子單據體的一些特性;

BusinessInfo.GetEntity()方法,返回的是Entity類型,此類已經包含了實體的ORM屬性定義,利用此類,完全就可以到單據數據包中獲取到數據,無需轉換為EntryEntity。

通常情況下,沒有Model時,可以使用Entity.DynamicProperty.GetValue(obj)方法,獲取單據體的DynamicObjectCollection;

單據轉換插件各事件中,生成的下推結果,為了方便插件取數,提供了另外一種方式獲取單據體行。

如下演示代碼,介紹了在單據轉換插件中,兩種獲取單據體行數據的方法:
//**********************************************
public override void AfterConvert(AfterConvertEventArgs e)
{
    // 方法一:直接獲取生成的全部單據體行,不區分單據

    // 此方法特別適用單據轉換插件,非常方便
    ExtendedDataEntity[] allEntryRows = e.Result.FindByEntityKey("FEntity");
    foreach (var entryRowDataEntity in allEntryRows)
    {
        DynamicObject row = entryRowDataEntity.DataEntity;
        // TODO: xxxx
    }


    // 方法二:逐個單據循環,獲取其單據體行
    // 此方法比較通用
    Entity entity = e.TargetBusinessInfo.GetEntity("FEntity");
    // 獲取生成的全部單據
    ExtendedDataEntity[] billDataEntities = e.Result.FindByEntityKey("FBillHead");

    // 對單據做循環,逐單讀取單據體
    foreach (var billDataEntity in billDataEntities)
    {

        // 如下是比較通用的方法,利用entity讀取單據體
        DynamicObjectCollection entryRows = entity.DynamicProperty.GetValue(
                    billDataEntity.DataEntity) as DynamicObjectCollection;
        foreach (DynamicObject row in entryRows)
        {
            // TODO: xxxx
        }
    }
}

原貼地址 http://club.kisdee.com/forum.php?mod=viewthread&tid=967037&source=solr_search&word=ENTITY 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM