首页 > 解决方案 > 使用 PDF 预览创建新的审批屏幕

问题描述

我描述如下:

我通过从 Acumatica 复制原始代码创建了一个新的批准屏幕,同时从 PDF 复制预览代码,我不知道是否可以这样做。

我所做的事情的结果。

在此处输入图像描述

当我上传 pdf 时,网格会清除:

在此处输入图像描述

在这个事件 RowSelected 我发现这个加载文件的逻辑:

如果我评论这部分它不会加载 pdf 但它会不断清除网格。

       if (e.Row.NoteID != null)
        {
            ProcessFile(e.Cache, e.Row);
        }

    private void ProcessFile(PXCache cache, APRecognizedInvoice invoice)
    {
        // File notes has random order as NoteDoc doesn't contain CreatedDateTime column
        var fileNotes = PXNoteAttribute.GetFileNotes(cache, invoice);

        if (fileNotes == null || fileNotes.Length == 0)
        {
            if (invoice.FileID != null)
            {
                RemoveAttachedFile();
                UpdateFileInfo(null);

                invoice.FileID = null;
            }

            return;
        }

        var fileId = fileNotes[0];
        var file = GetFile(this, fileId);

        if (invoice.RecognitionStatus == APRecognizedInvoiceRecognitionStatusListAttribute.PendingFile)
        {
            invoice.RecognitionStatus = RecognizedRecordStatusListAttribute.PendingRecognition;

            var recognizedRecord = CreateRecognizedRecord(file.Name, file.Data, invoice);

            invoice.EntityType = recognizedRecord.EntityType;
            invoice.FileHash = recognizedRecord.FileHash;
            invoice.RecognitionStatus = recognizedRecord.Status;
            invoice.DuplicateLink = recognizedRecord.DuplicateLink;
        }
        else if (invoice.FileID != null)
        {
            // File notes ordered by created time descending
            if (invoice.FileID != fileId)
            {
                RemoveAttachedFile();
                UpdateFileInfo(file);
            }
            // File notes ordered by created time ascending
            else if (fileNotes.Length == 2)
            {
                fileId = fileNotes[1];
                file = GetFile(this, fileId);

                RemoveAttachedFile();
                UpdateFileInfo(file);
            }
        }

        invoice.FileID = fileId;

        // To load restricted file by page via GetFile.ashx
        var fileInfoInMemory = new PX.SM.FileInfo(fileId, file.Name, null, file.Data);
        PXContext.SessionTyped<PXSessionStatePXData>().FileInfo[fileInfoInMemory.UID.ToString()] = fileInfoInMemory;
    }

谢谢大家我希望你告诉我错误在哪里,或者无法通过预览执行此审批功能。

标签: acumaticaacumatica-kb

解决方案


推荐阅读