将Excel上传功能添加到员工考勤卡条目中不会显示ProjectTask字段

时间:2018-11-21 14:10:54

标签: acumatica

我对Employee Timecard Entry屏幕(EP305000)进行了自定义,该屏幕使Excel上载功能可以进入Details选项卡网格。我是通过在TimeCardMaint BLC扩展的“活动”视图重新声明中添加属性[PXImport(typeof(EPTimeCard))]来完成此操作的,如下所示:

    [PXImport(typeof(EPTimeCard))]
    [PXViewName(PX.Objects.EP.Messages.TimeCardDetail)]
    public  PXSelectJoin<EPTimecardDetail,
            InnerJoin<CREmployee,
                On<CREmployee.userID, Equal<EPTimecardDetail.ownerID>>,
            LeftJoin<CRActivityLink,
                On<CRActivityLink.noteID, Equal<EPTimecardDetail.refNoteID>>,
            LeftJoin<CRCase,
                On<CRCase.noteID, Equal<CRActivityLink.refNoteID>>,
            LeftJoin<PX.Objects.AR.Customer,
                On<PX.Objects.AR.Customer.bAccountID, Equal<CRCase.customerID>>,
            LeftJoin<PX.Objects.EP.TimeCardMaint.ContractEx,
                On<PX.Objects.EP.TimeCardMaint.ContractEx.contractID, Equal<CRCase.contractID>>,
            LeftJoin<PMProject,
                On<PMProject.contractID, Equal<EPTimecardDetail.projectID>>>>>>>>,
            Where<CREmployee.bAccountID, Equal<Current<EPTimeCard.employeeID>>,
                And<EPTimecardDetail.weekID, Equal<Current<EPTimeCard.weekId>>,
                And<EPTimecardDetail.trackTime, Equal<True>,
                And<EPTimecardDetail.approvalStatus, NotEqual<ActivityStatusListAttribute.canceled>,
                And<Where<EPTimecardDetail.timeCardCD, IsNull, Or<EPTimecardDetail.timeCardCD, Equal<Current<EPTimeCard.timeCardCD>>>>>>>>>,
            OrderBy<Asc<EPTimecardDetail.date>>> Activities;

我还将网格的“ AllowImport”属性设置为“ True”。看起来不错,除了上载的“ ProjectTask”字段不允许映射-即,如果您执行导入过程,则在到达字段映射部分时,无法映射ProjectTask的Excel字段到网格的ProjectTask。它只是没有出现。

这是因为源BLC具有我未在扩展名中重现的“活动”的委托方法吗?

不允许映射到ProjectTask字段的原因可能是什么?

1 个答案:

答案 0 :(得分:0)

由于默认情况下禁用了ProjectTask字段,因此可以通过CacheAttached事件向[ProjectTask]属性中添加一个名为“ AlwaysEnabled”的参数来解决此问题,如下所示:

public class TimeCardMaint_Extension : PXGraphExtension<TimeCardMaint>
{
    [PXDefault(typeof(Search<PMTask.taskID, Where<PMTask.projectID, Equal<Current<TimeCardMaint.EPTimecardDetail.projectID>>, And<PMTask.isDefault, Equal<True>>>>), PersistingCheck = PXPersistingCheck.Nothing)]
    [ProjectTask(typeof(TimeCardMaint.EPTimecardDetail.projectID), 
        BatchModule.TA, 
        DisplayName = "Project Task", 
        BqlField = typeof(PMTimeActivity.projectTaskID),
        AlwaysEnabled = true)]
    protected virtual void EPTimecardDetail_ProjectTaskID_CacheAttached(PXCache cache)
    {
    }