I've defined a Place Order Action Rule for my product. I want it o set order status and all sales order detail statuses for following values:
<xsl:transform version="2.0" xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<out>
<setData>
<salesOrder>
<status>4</status>
<salesPaymentStatus>2</salesPaymentStatus>
<shippingStatus>3</shippingStatus>
</salesOrder>
</setData>
<xsl:for-each select="/in/salesOrder/salesOrderDetails/salesOrderDetail">
<setData>
<salesOrderDetail>
<status>4</status>
<shippingStatus>3</shippingStatus>
</salesOrderDetail>
</setData>
</xsl:for-each>
</out>
</xsl:template>
</xsl:transform>
Setting SalesOrder values works. But for SalesOrderDetails I got following error:
Message:Object reference not set to an instance of an object.
StackTrace:
at Revindex.Business.Revindex.Revindex.Storefront.ProductVariantController.<>c__DisplayClass68_0.<PlaceOrderAction>b__0(SalesOrderDetail sod) at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext() at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source) at Revindex.Business.Revindex.Revindex.Storefront.ProductVariantController.PlaceOrderAction(SalesOrderDetail effectiveSalesOrderDetail, SalesOrder salesOrder, List`1 salesPayments, ProductVariant variant, UserInfo user, String userHostAddress, Int32 portalID)
Also I wanted to achieve a situation where after invoking Place Order Action Rule and changing SalesOrderStatus to Paid the Issue Rights mechanism will work - but it doesn't.