Update-ERPObject

Cmdlet to update an existing entity in the ERP-System.

Syntax

Update-ERPObject [[-EntitySet] <String>] [[-Keys] <Object>] [[-Properties] <Object>] [<CommonParameters>]

Parameters

Type

Name

Description

Optional

String

EntitySet

The EntitySet name where the item is located.
It is also possible to specify additional namespaces or the whole url (e.g MaterialService/Materials, http://localhost:8080/PGS/ERP/MaterialService/Materials)

no

Hashtable / PsObject

Keys

The reference properties for the updating item

no

Hashtable / PsObject

Properties

The properties which should be changed

no

Return type

Entity ← on success
empty ← on failure. Exception/ErrorMessage can be accessed using $Error.
If the cmdlet fails due to error responses returned by the ERP system, the $Error variable provides a WebRequestException .

Remarks

This commandlet is used to update an existing entity in ERP.
Per default it uses a HTTP MERGE request.

Method: PUT

When using PUT as PreferredUpdateMethod please note that you have to pass all properties, otherwise it will replace/reset the properties which where not passed.
For more information see: 2.6 Updating Entries

Examples

In the following examples we are using the default “ERP” plugin from the powerGateServer . Additionally they assume that objects with following entities exist:

  • On Materials: “Number” = “3169”

  • On Descriptions: “Number” = “6931”, “Language” = “EN”

Update type in Material

Connect-Erp -Service "http://localhost:8080/pgs/ERP/MaterialService/"
$entity = Update-ERPObject -EntitySet "Materials" -Keys @{ "Number" = "3169" } -Properties @{ "Type" = "updated Type"}

Update description in MaterialDescription

Connect-Erp -Service "http://localhost:8080/pgs/ERP/MaterialService/"
$entity = Update-ERPObject -EntitySet "MaterialDescriptions" -Keys @{ "Number" = "6931";"Language" = "EN" } -Properties @{ "Description" = "changed by powerGate"}

In the following example we are using the public OData Services (http://services.odata.org):
Search for Product and update it

Connect-ERP -Service "http://services.odata.org/V3/(S(xnnohcch2jddbn1z1ytpfni2))/OData/OData.svc/"
$product = Get-ERPObject -EntitySet "Products" -Keys @{"ID"=9}
Update-ERPObject -EntitySet "Products" -Keys $product._Keys -Properties @{"Rating"=9;"Price"=1.99}

<#
        ID : 9
        Name : Lemonade
        Description : Classic, refreshing lemonade (Single bottle)
        ReleaseDate : 01.01.1970 00:00:00
        DiscontinuedDate :
        Rating : 9
        Price : 1,99
#>

Update description using PUT as PreferredUpdateMethod

Connect-Erp -Service "http://localhost:8080/pgs/ERP/MaterialService/" -OnConnect {
        param($settings)
        $settings.PreferredUpdateMethod = "PUT"
}
$entity = Update-ERPObject -EntitySet "MaterialDescriptions" -Keys @{ "Number" = "6931";"Language" = "EN" } -Properties @{ "Description" = "change with PUT request"}

Error handling, analyze the WebRequestException why the entity could not be updated, by using $Error

Connect-Erp -Service "https://services.odata.org/V3/OData/OData.svc"
$entity = Update-ERPObject -EntitySet "Persons" -Keys @{"ID"=1} -Properties @{"Name"="Sepp Meißnor"}

if(-not $entity){
        $Error[0].Exception.StatusCode #403
        $Error[0].Exception.Message #"You are connected to a read-only data session. Update operations are not permitted for your session"
}