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!
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 :-
2) Open the form “IDOs” form and check there is no extended IDO in place already. then click the “New IDO” button
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 :-
4) On the IDOs form – filter for your new IDO and click “New Property”
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)”
7) Next go into the IDO Property and set things up like the label string, the justification, its read-only status etc etc
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.
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 :-
Dim CoTerms As LoadCollectionResponseData
CoTerms = Me.IDOClient.LoadCollection( _
“CoNum, TermsCode, CreditHold”, _
“CoNum = ‘” & ThisForm.Variables(“CoNumVar”).Value & “‘”, _
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
ThisForm.Components(“PBTI_BUT_CreditHold”).Visible = True
: ThisForm.Components(“PBTI_BUT_CreditRelease”).Visible = False
ThisForm.Components(“PBTI_EDIT_TermsCode”).Value = termscode
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.
This then shows the following (depending on whether the order is on credit hold or not)
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.