Delphi DLL
Delphi DLL
Peoplevox GetReportData
See more Peoplevox Examples
Demonstrates how to export data from a Peoplevox Warehouse Management System (WMS) using a system report template.Chilkat Delphi DLL Downloads
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Csv, HttpResponse, HttpRequest, StringBuilder, Xml, Http;
...
procedure TForm1.Button1Click(Sender: TObject);
var
success: Boolean;
sbSoapXml: HCkStringBuilder;
req: HCkHttpRequest;
http: HCkHttp;
resp: HCkHttpResponse;
xmlResponse: HCkXml;
detail: PWideChar;
csv: HCkCsv;
i: Integer;
numRows: Integer;
begin
success := False;
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
// Sends a POST that looks like this:
// POST /PEOPLEVOX_CLIENT_ID/resources/integrationservicev4.asmx HTTP/1.1
// Content-Type: text/xml;charset=UTF-8
// SOAPAction: http://www.peoplevox.net/GetReportData
// Content-Length: (automatically computed and added by Chilkat)
// Host: qac.peoplevox.net
//
// <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:peop="http://www.peoplevox.net/">
// <soap:Header>
// <peop:UserSessionCredentials>
// <peop:UserId>PEOPLEVOX_USER_ID</peop:UserId>
// <peop:ClientId>PEOPLEVOX_CLIENT_ID</peop:ClientId>
// <peop:SessionId>PEOPLEVOX_SESSION_ID</peop:SessionId>
// </peop:UserSessionCredentials>
// </soap:Header>
// <soap:Body>
// <peop:GetReportData>
// <peop:getReportRequest>
// <peop:TemplateName>Item movement history</peop:TemplateName>
// <peop:PageNo>1</peop:PageNo>
// <peop:ItemsPerPage>20</peop:ItemsPerPage>
// <peop:OrderBy>[Date timestamp]</peop:OrderBy>
// <peop:Columns>[Item code],[Date timestamp],[From],[To],[Quantity],[Comments]</peop:Columns>
// <peop:SearchClause>([Date timestamp] > DateTime(2016,01,01,09,00,00))</peop:SearchClause>
// </peop:getReportRequest>
// </peop:GetReportData>
// </soap:Body>
// </soap:Envelope>
//
// Notice that a UserId is needed here. This is different than the username required for Peoplevox authentication.
// The UserId for the admin account is 1.
//
sbSoapXml := CkStringBuilder_Create();
CkStringBuilder_Append(sbSoapXml,'<?xml version="1.0" encoding="utf-8"?>' + #13#10);
CkStringBuilder_Append(sbSoapXml,'<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:peop="http://www.peoplevox.net/">' + #13#10);
CkStringBuilder_Append(sbSoapXml,' <soap:Header>' + #13#10);
CkStringBuilder_Append(sbSoapXml,' <peop:UserSessionCredentials>' + #13#10);
CkStringBuilder_Append(sbSoapXml,' <peop:UserId>PEOPLEVOX_USER_ID</peop:UserId>' + #13#10);
CkStringBuilder_Append(sbSoapXml,' <peop:ClientId>PEOPLEVOX_CLIENT_ID</peop:ClientId>' + #13#10);
CkStringBuilder_Append(sbSoapXml,' <peop:SessionId>PEOPLEVOX_SESSION_ID</peop:SessionId>' + #13#10);
CkStringBuilder_Append(sbSoapXml,' </peop:UserSessionCredentials>' + #13#10);
CkStringBuilder_Append(sbSoapXml,' </soap:Header>' + #13#10);
CkStringBuilder_Append(sbSoapXml,' <soap:Body>' + #13#10);
CkStringBuilder_Append(sbSoapXml,' <peop:GetReportData>' + #13#10);
CkStringBuilder_Append(sbSoapXml,' <peop:getReportRequest>' + #13#10);
CkStringBuilder_Append(sbSoapXml,' <peop:TemplateName>Item movement history</peop:TemplateName>' + #13#10);
CkStringBuilder_Append(sbSoapXml,' <peop:PageNo>1</peop:PageNo>' + #13#10);
CkStringBuilder_Append(sbSoapXml,' <peop:ItemsPerPage>20</peop:ItemsPerPage>' + #13#10);
CkStringBuilder_Append(sbSoapXml,' <peop:OrderBy>[Date timestamp]</peop:OrderBy>' + #13#10);
CkStringBuilder_Append(sbSoapXml,' <peop:Columns>[Item code],[Date timestamp],[From],[To],[Quantity],[Comments]</peop:Columns>' + #13#10);
CkStringBuilder_Append(sbSoapXml,' <peop:SearchClause>([Date timestamp] > DateTime(2016,01,01,09,00,00))</peop:SearchClause>' + #13#10);
CkStringBuilder_Append(sbSoapXml,' </peop:getReportRequest>' + #13#10);
CkStringBuilder_Append(sbSoapXml,' </peop:GetReportData>' + #13#10);
CkStringBuilder_Append(sbSoapXml,' </soap:Body>' + #13#10);
CkStringBuilder_Append(sbSoapXml,'</soap:Envelope>');
req := CkHttpRequest_Create();
CkHttpRequest_putHttpVerb(req,'POST');
CkHttpRequest_putSendCharset(req,True);
CkHttpRequest_putCharset(req,'utf-8');
CkHttpRequest_AddHeader(req,'Content-Type','text/xml');
CkHttpRequest_AddHeader(req,'SOAPAction','http://www.peoplevox.net/GetReportData');
CkHttpRequest_putPath(req,'/PEOPLEVOX_CLIENT_ID/resources/integrationservicev4.asmx');
success := CkHttpRequest_LoadBodyFromString(req,CkStringBuilder__getAsString(sbSoapXml),'utf-8');
http := CkHttp_Create();
CkHttp_putFollowRedirects(http,True);
resp := CkHttpResponse_Create();
success := CkHttp_HttpSReq(http,'qac.peoplevox.net',443,True,req,resp);
if (success = False) then
begin
Memo1.Lines.Add(CkHttp__lastErrorText(http));
Exit;
end;
// We should expect a 200 response if successful.
if (CkHttpResponse_getStatusCode(resp) <> 200) then
begin
Memo1.Lines.Add('Response StatusCode = ' + IntToStr(CkHttpResponse_getStatusCode(resp)));
Memo1.Lines.Add('Response StatusLine: ' + CkHttpResponse__statusLine(resp));
Memo1.Lines.Add('Response Header:');
Memo1.Lines.Add(CkHttpResponse__header(resp));
Memo1.Lines.Add(CkHttpResponse__bodyStr(resp));
Exit;
end;
xmlResponse := CkXml_Create();
success := CkXml_LoadXml(xmlResponse,CkHttpResponse__bodyStr(resp));
Memo1.Lines.Add(CkXml__getXml(xmlResponse));
detail := CkXml__chilkatPath(xmlResponse,'soap:Body|GetReportDataResponse|GetReportDataResult|Detail|*');
csv := CkCsv_Create();
CkCsv_putHasColumnNames(csv,True);
CkCsv_LoadFromString(csv,detail);
Memo1.Lines.Add('NumRows = ' + IntToStr(CkCsv_getNumRows(csv)));
Memo1.Lines.Add('NumColumns = ' + IntToStr(CkCsv_getNumColumns(csv)));
// Iterate over the rows, getting the ItemCode, Name, and Barcode
i := 0;
numRows := CkCsv_getNumRows(csv);
while i < numRows do
begin
Memo1.Lines.Add('Item code: ' + CkCsv__getCellByName(csv,i,'Item code'));
Memo1.Lines.Add('Date timestamp: ' + CkCsv__getCellByName(csv,i,'Date timestamp'));
Memo1.Lines.Add('From: ' + CkCsv__getCellByName(csv,i,'From'));
Memo1.Lines.Add('To: ' + CkCsv__getCellByName(csv,i,'To'));
Memo1.Lines.Add('Quantity: ' + CkCsv__getCellByName(csv,i,'Quantity'));
Memo1.Lines.Add('Comments: ' + CkCsv__getCellByName(csv,i,'Comments'));
Memo1.Lines.Add('-');
i := i + 1;
end;
CkStringBuilder_Dispose(sbSoapXml);
CkHttpRequest_Dispose(req);
CkHttp_Dispose(http);
CkHttpResponse_Dispose(resp);
CkXml_Dispose(xmlResponse);
CkCsv_Dispose(csv);
end;