<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://developerzone-stg.pastel.co.za/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=196.36.226.1&amp;*</id>
		<title>Sage Evolution SDK | Documentation Portal - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://developerzone-stg.pastel.co.za/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=196.36.226.1&amp;*"/>
		<link rel="alternate" type="text/html" href="https://developerzone-stg.pastel.co.za/index.php?title=Special:Contributions/196.36.226.1"/>
		<updated>2026-04-18T03:18:18Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.25.2</generator>

	<entry>
		<id>https://developerzone-stg.pastel.co.za/index.php?title=Getting_Started&amp;diff=193</id>
		<title>Getting Started</title>
		<link rel="alternate" type="text/html" href="https://developerzone-stg.pastel.co.za/index.php?title=Getting_Started&amp;diff=193"/>
				<updated>2015-11-04T07:28:18Z</updated>
		
		<summary type="html">&lt;p&gt;196.36.226.1: /* Getting Started */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Getting Started ==&lt;br /&gt;
&lt;br /&gt;
*[[Evolution | Requirements, Initialise A Connection and Licensing]]&lt;br /&gt;
*[[Trouble_Shooting_Connection_Problems | Troubleshooting Connection Problems]]&lt;br /&gt;
&lt;br /&gt;
== C# SDK Transactions ==&lt;br /&gt;
&lt;br /&gt;
*[[AccountsPayable | Accounts Payable]]&lt;br /&gt;
&lt;br /&gt;
*[[Accounts_Receivable | Accounts Receivable]]&lt;br /&gt;
&lt;br /&gt;
*[[General_Ledger | General Ledger]]&lt;br /&gt;
&lt;br /&gt;
*[[Inventory]]&lt;br /&gt;
&lt;br /&gt;
*[[Order_Entry | Order Entry]]&lt;br /&gt;
&lt;br /&gt;
*[[Contact_Management_Incidents | Contact Management Incidents]]&lt;br /&gt;
&lt;br /&gt;
*[[Job_Costing | Job Costing]]&lt;br /&gt;
&lt;br /&gt;
*[[Additional_Functionality | Additional Functionality]]&lt;br /&gt;
&lt;br /&gt;
== Other Languages ==&lt;br /&gt;
*[[Delphi_Sales_Orders|Delphi Sales Orders]]&lt;br /&gt;
&lt;br /&gt;
*[[Python]]&lt;br /&gt;
&lt;br /&gt;
*[[PHP_Sales_Orders|PHP Sales Orders]]&lt;br /&gt;
&lt;br /&gt;
*[[VB6_Customer_Account|VB 6 Transaction]]&lt;/div&gt;</summary>
		<author><name>196.36.226.1</name></author>	</entry>

	<entry>
		<id>https://developerzone-stg.pastel.co.za/index.php?title=SDK_Delphi&amp;diff=164</id>
		<title>SDK Delphi</title>
		<link rel="alternate" type="text/html" href="https://developerzone-stg.pastel.co.za/index.php?title=SDK_Delphi&amp;diff=164"/>
				<updated>2015-10-26T06:49:42Z</updated>
		
		<summary type="html">&lt;p&gt;196.36.226.1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you are using Delphi.NET, the API can be used by referencing the DLL (a .NET assembly) directly.&lt;br /&gt;
&lt;br /&gt;
However, the Pastel Evolution SDK can also be used from Delphi for Win32 by importing the COM type library distributed with the API as a .tlb file.&lt;br /&gt;
&lt;br /&gt;
Follow these steps to get started:&lt;br /&gt;
&lt;br /&gt;
# Refer to the [[Evolution|COM procedure]] for registering the DLL for COM.&lt;br /&gt;
# Import the type library.  View the [[SDK Delphi Import | procedure here]].&lt;br /&gt;
# Add '''Pastel_Evolution_TLB''' to your unit's ''uses'' declaration.&lt;br /&gt;
# Add the files '''mscorlib_TLB.pas''' and '''System_TLB.pas''' to your project.  You can either generate them yourself, or download them [[SDK Downloads | here]].&lt;br /&gt;
# Refer to the below example procedure for jump-starting your integration tasks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
procedure TForm1.Button1Click(Sender: TObject);&lt;br /&gt;
var&lt;br /&gt;
  stkItem : _InventoryItem;&lt;br /&gt;
  customer : _Customer;&lt;br /&gt;
  helper : _ComHelper;&lt;br /&gt;
  orderDetail : _OrderDetail;&lt;br /&gt;
  salesOrder : _SalesOrder;&lt;br /&gt;
  reference, itemCode, customerCode : string;&lt;br /&gt;
  recordID : integer;&lt;br /&gt;
begin&lt;br /&gt;
  try&lt;br /&gt;
    itemCode := 'ABC001';&lt;br /&gt;
    customerCode := 'CASH33';&lt;br /&gt;
    Log('Connecting...');&lt;br /&gt;
    helper := CoComHelper.Create();&lt;br /&gt;
    helper.CreateCommonDBConnection('server=.;initial catalog=EvolutionCommon;integrated security=SSPI');&lt;br /&gt;
    helper.SetLicense('DEMO', '47481667230473');&lt;br /&gt;
    helper.CreateConnection('server=.;initial catalog=50127;integrated security=SSPI');&lt;br /&gt;
    helper.BeginTran;&lt;br /&gt;
    Log('...connected');&lt;br /&gt;
    Log('Expected DB version', helper.CompatibleEvolutionDatabaseVersion);&lt;br /&gt;
    Log('Current DB version: ', helper.CurrentEvolutionDatabaseVersion);&lt;br /&gt;
    if helper.CompatibleEvolutionDatabaseVersion &amp;lt;&amp;gt; helper.CurrentEvolutionDatabaseVersion then&lt;br /&gt;
      Log('WARNING', 'The current database version differs from version expected by the API.');&lt;br /&gt;
    recordID := helper.FindARAccountByCode(customerCode);&lt;br /&gt;
    if recordID = -1 then&lt;br /&gt;
    begin&lt;br /&gt;
      // account does not exist, so create it&lt;br /&gt;
      customer := CoCustomer.Create();&lt;br /&gt;
      customer.Code := customerCode;&lt;br /&gt;
      customer.Description := 'Demo Account';&lt;br /&gt;
      customer.Save;&lt;br /&gt;
      Log('Account created', customer.ID);&lt;br /&gt;
    end&lt;br /&gt;
    else&lt;br /&gt;
    begin&lt;br /&gt;
      // account exists, so simply load it&lt;br /&gt;
      customer := helper.GetARAccount(customerCode);&lt;br /&gt;
    end;&lt;br /&gt;
    Log('Creating order...');&lt;br /&gt;
    salesOrder := CoSalesOrder.Create();&lt;br /&gt;
    salesOrder.Customer := customer;&lt;br /&gt;
    Log('Creating detail...');&lt;br /&gt;
    orderDetail := CoOrderDetail.Create;&lt;br /&gt;
    // find inventory item&lt;br /&gt;
    recordID := helper.FindStockItemByCode(itemCode);&lt;br /&gt;
    if recordID = -1 then&lt;br /&gt;
    begin&lt;br /&gt;
      // item does not exist, so create it&lt;br /&gt;
      stkItem := CoInventoryItem.Create();&lt;br /&gt;
      stkItem.Code := itemCode;&lt;br /&gt;
      stkItem.IsServiceItem := True;&lt;br /&gt;
      stkItem.Description := 'Demo Item';&lt;br /&gt;
      stkItem.Save;&lt;br /&gt;
      Log('Item created', stkItem.ID)&lt;br /&gt;
    end&lt;br /&gt;
    else&lt;br /&gt;
    begin&lt;br /&gt;
      // item exists, so simply load it&lt;br /&gt;
      stkItem := helper.GetStockItem(itemCode);&lt;br /&gt;
    end;&lt;br /&gt;
    orderDetail.InventoryItem := stkItem;&lt;br /&gt;
    // if this is a new item, it gets created as a service item (above),&lt;br /&gt;
    //   and the quantity on hand will be irrelevant&lt;br /&gt;
    Log('Stock on hand', stkItem.QtyOnHand);&lt;br /&gt;
    orderDetail.Quantity := 5;&lt;br /&gt;
    orderDetail.UnitSellingPrice := 100;&lt;br /&gt;
    orderDetail.Discount := 100;&lt;br /&gt;
    Log('Line total (excl.)', orderDetail.TotalExcl);&lt;br /&gt;
    Log('Adding detail...');&lt;br /&gt;
    Log('...done');&lt;br /&gt;
    salesOrder.Detail.Add_2(orderDetail);&lt;br /&gt;
    Log('Order Total (excl)', salesOrder.TotalExcl);&lt;br /&gt;
    reference := salesOrder.Complete;&lt;br /&gt;
    Log('Invoice No', reference);&lt;br /&gt;
    helper.CommitTran;&lt;br /&gt;
  except&lt;br /&gt;
    on E : Exception do&lt;br /&gt;
    begin&lt;br /&gt;
      helper.RollbackTran;&lt;br /&gt;
      ShowMessage(E.Message);&lt;br /&gt;
    end;&lt;br /&gt;
  end;&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>196.36.226.1</name></author>	</entry>

	<entry>
		<id>https://developerzone-stg.pastel.co.za/index.php?title=CSupplierAccountTransaction&amp;diff=163</id>
		<title>CSupplierAccountTransaction</title>
		<link rel="alternate" type="text/html" href="https://developerzone-stg.pastel.co.za/index.php?title=CSupplierAccountTransaction&amp;diff=163"/>
				<updated>2015-10-26T06:29:35Z</updated>
		
		<summary type="html">&lt;p&gt;196.36.226.1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''The supplier class is used to create Supplier Accounts which can be used on supplier related processes.&lt;br /&gt;
&lt;br /&gt;
The following code displays how a new supplier is created with the basic necessary properties like Code and description specified.'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
//Assign variable S to Supplier class&lt;br /&gt;
Supplier S = new Supplier();&lt;br /&gt;
//Specify Supplier properties&lt;br /&gt;
S.Code = &amp;quot;SupplierSDK1&amp;quot;;&lt;br /&gt;
S.Description = &amp;quot;supplierSDK1&amp;quot;;&lt;br /&gt;
//Use the save method to Save the Supplier&lt;br /&gt;
S.Save();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''The same supplier can be edited and saved again with updated information like addresses and telephone number.'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
Supplier S = new Supplier(&amp;quot;SupplierSDK1&amp;quot;);&lt;br /&gt;
//Set new properties&lt;br /&gt;
S.Telephone = &amp;quot;113456&amp;quot;;&lt;br /&gt;
S.EmailAddress = &amp;quot;Supplier@SDK&amp;quot;;&lt;br /&gt;
//Set Postal or physical address&lt;br /&gt;
S.PostalAddress = new Address(&amp;quot;Postal Address 1&amp;quot;, &amp;quot;Post 2&amp;quot;, &amp;quot;Post 3&amp;quot;, &amp;quot;Post 4&amp;quot;, &amp;quot;Post 5&amp;quot;, &amp;quot;PC&amp;quot;);&lt;br /&gt;
S.PhysicalAddress = new Address()&lt;br /&gt;
{&lt;br /&gt;
    Line1 = &amp;quot;Physical1&amp;quot;,&lt;br /&gt;
    Line2 = &amp;quot;Physical2&amp;quot;,&lt;br /&gt;
    Line3 = &amp;quot;Physical3&amp;quot;,&lt;br /&gt;
    Line4 = &amp;quot;Physical4&amp;quot;,&lt;br /&gt;
    Line5 = &amp;quot;Physical5&amp;quot;,&lt;br /&gt;
    PostalCode = &amp;quot;2000&amp;quot;,&lt;br /&gt;
};&lt;br /&gt;
//Use the save method to Save the Supplier&lt;br /&gt;
S.Save();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>196.36.226.1</name></author>	</entry>

	<entry>
		<id>https://developerzone-stg.pastel.co.za/index.php?title=SDK_Delphi&amp;diff=162</id>
		<title>SDK Delphi</title>
		<link rel="alternate" type="text/html" href="https://developerzone-stg.pastel.co.za/index.php?title=SDK_Delphi&amp;diff=162"/>
				<updated>2015-10-26T06:29:00Z</updated>
		
		<summary type="html">&lt;p&gt;196.36.226.1: Created page with &amp;quot;If you are using Delphi.NET, the API can be used by referencing the DLL (a .NET assembly) directly.  However, the Pastel Evolution SDK can also be used from Delphi for Win32 b...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you are using Delphi.NET, the API can be used by referencing the DLL (a .NET assembly) directly.&lt;br /&gt;
&lt;br /&gt;
However, the Pastel Evolution SDK can also be used from Delphi for Win32 by importing the COM type library distributed with the API as a .tlb file.&lt;br /&gt;
&lt;br /&gt;
Follow these steps to get started:&lt;br /&gt;
&lt;br /&gt;
# Refer to the [[Initialisation#COM|COM procedure]] for registering the DLL for COM.&lt;br /&gt;
# Import the type library.  View the [[SDK Delphi Import | procedure here]].&lt;br /&gt;
# Add '''Pastel_Evolution_TLB''' to your unit's ''uses'' declaration.&lt;br /&gt;
# Add the files '''mscorlib_TLB.pas''' and '''System_TLB.pas''' to your project.  You can either generate them yourself, or download them [[SDK Downloads | here]].&lt;br /&gt;
# Refer to the below example procedure for jump-starting your integration tasks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
procedure TForm1.Button1Click(Sender: TObject);&lt;br /&gt;
var&lt;br /&gt;
  stkItem : _InventoryItem;&lt;br /&gt;
  customer : _Customer;&lt;br /&gt;
  helper : _ComHelper;&lt;br /&gt;
  orderDetail : _OrderDetail;&lt;br /&gt;
  salesOrder : _SalesOrder;&lt;br /&gt;
  reference, itemCode, customerCode : string;&lt;br /&gt;
  recordID : integer;&lt;br /&gt;
begin&lt;br /&gt;
  try&lt;br /&gt;
    itemCode := 'ABC001';&lt;br /&gt;
    customerCode := 'CASH33';&lt;br /&gt;
    Log('Connecting...');&lt;br /&gt;
    helper := CoComHelper.Create();&lt;br /&gt;
    helper.CreateCommonDBConnection('server=.;initial catalog=EvolutionCommon;integrated security=SSPI');&lt;br /&gt;
    helper.SetLicense('DEMO', '47481667230473');&lt;br /&gt;
    helper.CreateConnection('server=.;initial catalog=50127;integrated security=SSPI');&lt;br /&gt;
    helper.BeginTran;&lt;br /&gt;
    Log('...connected');&lt;br /&gt;
    Log('Expected DB version', helper.CompatibleEvolutionDatabaseVersion);&lt;br /&gt;
    Log('Current DB version: ', helper.CurrentEvolutionDatabaseVersion);&lt;br /&gt;
    if helper.CompatibleEvolutionDatabaseVersion &amp;lt;&amp;gt; helper.CurrentEvolutionDatabaseVersion then&lt;br /&gt;
      Log('WARNING', 'The current database version differs from version expected by the API.');&lt;br /&gt;
    recordID := helper.FindARAccountByCode(customerCode);&lt;br /&gt;
    if recordID = -1 then&lt;br /&gt;
    begin&lt;br /&gt;
      // account does not exist, so create it&lt;br /&gt;
      customer := CoCustomer.Create();&lt;br /&gt;
      customer.Code := customerCode;&lt;br /&gt;
      customer.Description := 'Demo Account';&lt;br /&gt;
      customer.Save;&lt;br /&gt;
      Log('Account created', customer.ID);&lt;br /&gt;
    end&lt;br /&gt;
    else&lt;br /&gt;
    begin&lt;br /&gt;
      // account exists, so simply load it&lt;br /&gt;
      customer := helper.GetARAccount(customerCode);&lt;br /&gt;
    end;&lt;br /&gt;
    Log('Creating order...');&lt;br /&gt;
    salesOrder := CoSalesOrder.Create();&lt;br /&gt;
    salesOrder.Customer := customer;&lt;br /&gt;
    Log('Creating detail...');&lt;br /&gt;
    orderDetail := CoOrderDetail.Create;&lt;br /&gt;
    // find inventory item&lt;br /&gt;
    recordID := helper.FindStockItemByCode(itemCode);&lt;br /&gt;
    if recordID = -1 then&lt;br /&gt;
    begin&lt;br /&gt;
      // item does not exist, so create it&lt;br /&gt;
      stkItem := CoInventoryItem.Create();&lt;br /&gt;
      stkItem.Code := itemCode;&lt;br /&gt;
      stkItem.IsServiceItem := True;&lt;br /&gt;
      stkItem.Description := 'Demo Item';&lt;br /&gt;
      stkItem.Save;&lt;br /&gt;
      Log('Item created', stkItem.ID)&lt;br /&gt;
    end&lt;br /&gt;
    else&lt;br /&gt;
    begin&lt;br /&gt;
      // item exists, so simply load it&lt;br /&gt;
      stkItem := helper.GetStockItem(itemCode);&lt;br /&gt;
    end;&lt;br /&gt;
    orderDetail.InventoryItem := stkItem;&lt;br /&gt;
    // if this is a new item, it gets created as a service item (above),&lt;br /&gt;
    //   and the quantity on hand will be irrelevant&lt;br /&gt;
    Log('Stock on hand', stkItem.QtyOnHand);&lt;br /&gt;
    orderDetail.Quantity := 5;&lt;br /&gt;
    orderDetail.UnitSellingPrice := 100;&lt;br /&gt;
    orderDetail.Discount := 100;&lt;br /&gt;
    Log('Line total (excl.)', orderDetail.TotalExcl);&lt;br /&gt;
    Log('Adding detail...');&lt;br /&gt;
    Log('...done');&lt;br /&gt;
    salesOrder.Detail.Add_2(orderDetail);&lt;br /&gt;
    Log('Order Total (excl)', salesOrder.TotalExcl);&lt;br /&gt;
    reference := salesOrder.Complete;&lt;br /&gt;
    Log('Invoice No', reference);&lt;br /&gt;
    helper.CommitTran;&lt;br /&gt;
  except&lt;br /&gt;
    on E : Exception do&lt;br /&gt;
    begin&lt;br /&gt;
      helper.RollbackTran;&lt;br /&gt;
      ShowMessage(E.Message);&lt;br /&gt;
    end;&lt;br /&gt;
  end;&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>196.36.226.1</name></author>	</entry>

	</feed>