Добавить файлы в позицию продавца - PullRequest
1 голос
/ 13 марта 2019

Я хочу добавить файлы в позиции продавца в Acumatica с помощью веб-сервисов. Какую конечную точку следует использовать? enter image description here

Я хочу добавить изображение, как показано на скриншоте выше, используя конечную точку веб-службы.

1 Ответ

0 голосов
/ 13 марта 2019

REST API должен ссылаться на строку детализации в теле. Поскольку тело используется для передачи двоичных данных вложения, REST API нельзя использовать для вложения файлов в строку подробностей.

Ниже приведен фрагмент кода API на основе экрана, который создает новый главный / подробный документ и прикрепляет изображения к подробной строке. Если вы решите использовать API на основе экрана, вам нужно будет адаптировать фрагмент экрана ASMX для заказа на продажу и получить заказ на продажу с расширенными сведениями SOLine. Шаблон для прикрепления файла будет таким же:

string[] detailDescription = "Test";
List<string> filenames = "image.jpg";
List<byte[]> images = new byte[] { put_image_binary_data_here } ;

ServiceReference1.Screen context = new ServiceReference1.Screen();
context.CookieContainer = new System.Net.CookieContainer();
context.Url = "http://localhost/Demo/Soap/XYZ.asmx";
context.Login("admin@CompanyLoginName", "admin");

ServiceReference1.XY999999Content content = PX.Soap.Helper.GetSchema<ServiceReference1.XY999999Content>(context);

List<ServiceReference1.Command> cmds = new List<ServiceReference1.Command>
{
    // Insert Master
    new ServiceReference1.Value { Value="<NEW>", LinkedCommand = content.Document.KeyField},
    new ServiceReference1.Value { Value="Description", LinkedCommand = content.Document.Description},

    // Insert Detail
    content.DataView.ServiceCommands.NewRow,
        new ServiceReference1.Value { Value = noteDetail[0], LinkedCommand = content.DataView.Description },

    // Attaching a file to detail
    new ServiceReference1.Value
    {
        Value = Convert.ToBase64String(images[0]),
        FieldName = filenames[0],
        LinkedCommand = content.DataView.ServiceCommands.Attachment
    },
    content.Actions.Save,
    content.Document.KeyField
};

var returnValue = context.PP301001Submit(cmds.ToArray());
context.Logout();
...