DocuSign API - UpdateTabs не устанавливает значения в документе - PullRequest
0 голосов
/ 08 июля 2019

Я работаю в песочнице и сохраняю шаблон с PDF-файлом, для которого я создал поля.Я пытаюсь предварительно заполнить эти поля на основе некоторых условий, а затем отправить шаблон для подписи.Я использую метод UpdateTabs и передаю список вкладок для шаблона, включая TabId, который я перебрал и изменил значение для.

Когда шаблон отправляется после этого,поля все пустые.Это ограничение среды песочницы, или я делаю это неправильно?

Вот код для создания черновика шаблона, захвата вкладок, обновления вкладок и отправки черновика:

var roles = recipients
    .Select((role, i) =>
    {
        var templateRole = role.MapTo<TemplateRole>();
        templateRole.RoutingOrder = $"{i + 1}";
        return templateRole;
    })
    .ToList();

var envelope = new EnvelopeDefinition(
    TemplateId: templateId,
    TemplateRoles: roles,
    Status: DocuSignConstants.Statuses.Created);

var envelopeApi = new EnvelopesApi(_docuSignClient.Client.Configuration);

var result = await envelopeApi
    .CreateEnvelopeAsync(_docuSignContext.Account.AccountId, envelope)
    .ConfigureAwait(false);

var template = await GetDocuSignTemplateById(templateId);

// Grabbing the tabs from the template and then updating the values in them
var tabs = await GetDocumentTabs(templateId, template.Documents.First().DocumentId);
SetDocumentTabValues(recordId, templateId, template.Documents.First().DocumentId, tabs);

var draftRecipients = await envelopeApi.ListRecipientsAsync(_docuSignContext.Account.AccountId,
    result.EnvelopeId);

foreach (var signer in draftRecipients.Signers)
{
    envelopeApi.UpdateTabs
    (
        _docuSignContext.Account.AccountId,
        result.EnvelopeId,
        signer.RecipientId,
        tabs
    );
}

envelopeApi.Update(_docuSignContext.Account.AccountId, result.EnvelopeId, new Envelope
{
    Status = DocuSignConstants.Statuses.Sent
});

И вот где я устанавливаю значение для вкладок (текстовые вкладки в данном случае):

var tab = tabs.TextTabs?.FirstOrDefault(x => x.TabLabel == field.TemplateField);
if (tab != null)
{
    tab.OriginalValue = fieldValue;
    tab.Value = fieldValue;
}

Я попытался установить оба поля Value и OriginalValue, но ни одно из них не устанавливает поля,В правом верхнем углу отображается предупреждение «ТОЛЬКО ДЕМОНСТРАЦИОННЫЙ ДОКУМЕНТ», что заставляет меня задуматься, не могу ли я просто установить вкладки в песочнице.

returned document

1 Ответ

2 голосов
/ 08 июля 2019

Я выяснил проблему: я брал вкладки из документов шаблона вместо вызова функции ListTabs для каждого получателя. Как только я взял эти вкладки, установка значений работает отлично.

foreach (var signer in draftRecipients.Signers)
{
    var signerTabs = await envelopeApi
        .ListTabsAsync(_docuSignContext.Account.AccountId, 
        result.EnvelopeId, 
        signer.RecipientId);

    SetDocumentTabValues(recordId, templateId, template.Documents.First().DocumentId, signerTabs);

    envelopeApi.UpdateTabs
    (
        _docuSignContext.Account.AccountId,
        result.EnvelopeId,
        signer.RecipientId,
        signerTabs
    );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...