Syteline 8 – Adding a derived field to an IDO & IDO lookups using VB.NET


Introduction

I have been asked by our despatch team to display the customer terms code onto the “Order Shipping” form within Infor Syteline 8, so thought I would pop a quick how-to post here as I am doing it!

Time to implement

I often get asked at the SIGs “how long does this take?” so I thought I would start adding this to these posts ….. this whole process should take no longer than 1 hour when you are use to doing it, but it can take 2-3 if you have complications! I did on this one as I had missed the fact that there was a custom load method which means the whole of the below is ok to follow for most forms, but the example itself on this form does not work!

The Process

1) Acquire the IDO the form is using – in this case “SLCoitemShps” – Drop the form into design mode, and under the “Form” properties, click on the collection tab as shown here :-

syteline_8_GetIDOName

2) Open the form “IDOs” form and check there is no extended IDO in place already. then click the “New IDO” button

syteline_8_NewIDO

3) Within the “NEW IDO wizard” ensure you select “Extend and Replace” ….. I ALWAYS use the same IDO name as it originated from but prefixed with the company name as shown here :-

syteline_8_NewIDOWizard

4) On the IDOs form – filter for your new IDO and click “New Property”

syteline_8_IDOsNewProperty

5) Select “Derived”, and click next.

6) When setting up the Property :-

  •  Give the property a meaningful name like “DerTermsCodeCust”
  • Choose the correct property class – this helps a lot
  • Put your query into parenthesis
  • Alias your table and ensure you reference the alias in the expression
  • The expression is your sql string, using case sensive ido properties within the where clause and ensure you only ever return 1 result. For my example the expression I am using is “(select top 1 c.terms_code from customer as c where c.cust_num = CoCustNum and c.cust_seq = 0)”

 

syteline_8_IDOsNewPropertyform

7) Next go into the IDO Property and set things up like the label string, the justification, its read-only status etc etc

syteline_8_IDOsPropertiesjpg

 

8) Check in the IDO form the IDOs form  ignore the comments unless you are using source safe.

9) Sign out of Syteline, discard the IDO cache using “Configuration Manager”  on your application server, and sign back in to Syteline for the new IDO to be available.

10) Open the form on which you wish the new property to appear, drop it into design mode, locate the new property and drag and drop it on to the form.

Syteline_8_orderShipping_TermsCode

 

11) Once you are happy the information is displaying correctly and is having no adverse effect, sync the ido to your production environment using the export and import forms and sync the form using FormSync on you application server

The final solution

As mentioned at the top of this article, in this particular example I overlooked the fact that the form uses a “Custom Load Method” to retrieve the information, and as such it would not populate the newly added ido field, which was a shame. I have now added a form script to do this as follows :-

Sub PBTI_GetTermsCode()

Dim CoTerms As LoadCollectionResponseData

CoTerms = Me.IDOClient.LoadCollection( _

“SLCos”, _

“CoNum, TermsCode, CreditHold”, _

“CoNum = ‘” & ThisForm.Variables(“CoNumVar”).Value & “‘”, _

“”, -1)

Dim credithold As String = CoTerms.Item(0, “CreditHold”).Value

Dim termscode As String = CoTerms.Item(0, “TermsCode”).Value

If credithold = “0” Then

ThisForm.Components(“PBTI_BUT_CreditHold”).Visible = False

: ThisForm.Components(“PBTI_BUT_CreditRelease”).Visible = True

Else

ThisForm.Components(“PBTI_BUT_CreditHold”).Visible = True

: ThisForm.Components(“PBTI_BUT_CreditRelease”).Visible = False

End If

ThisForm.Components(“PBTI_EDIT_TermsCode”).Value = termscode

End Sub

This form script method is then added to the “On Change” event of the order number field. which as standard calls a Syteline standard event.

Syteline8_OrderShipping_EventHandler

This then shows the following (depending on whether the order is on credit hold or not)

Syteline8_OrderShipping_CreditRelease

 

 

Syteline8_OrderShipping_CreditHold

 

Its probably worth mentioning, we have tried to toggle a bitmap within a component without any success on our current version of Syteline, hense we have 2 components overlapping each other and making them visible or not in code.

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.