Hi DAllen100
We'll keep it reasonably straightforward then. I'll go with the assumption that you've taken a copy of the Sales Order screen and added it as a tab link to the Contacts Portal. If not and you're stuck just let me know.
Prepopulating the Customer name
One thing you might notice about the Sales Order screen is the ellipses button (three small circles) next to the Customer:Job dropdown. You don't want this to show on your portal page because it allows anyone who signs in to see all of your customer information. I removed the Customer:Job object from the screen then added a readonly textbox because I only want to show the current Customer's name.
Step 1 - Remove Customer:Job dropdown box from the screen
Step 2 - Add a textbox object in its place. Edit the textbox and give it the Caption 'Customer' and caption location of 'Top'. Click the 'Advanced Options (click to show)' link and check the box next to 'Read Only'. Click 'Finish'.
Step 3 - Click the 'Advanced...' button the top left section and click 'Next'. When the screen loads we want to populate the Customer text field with the Customer name of the logged in Contact. Choose 'OnScreenLoad' for the Event and 'Retrieve Value From Table' for the action. Click 'Add Action'
Step 4 - Set the values to what you see below. We want to grab the Customer's FullName and we find that by looking up the Customer table and finding the FullName based on the Customer Record ID. We can grab this from a session value called 'Portal - Entity Record ID' which is the Record ID for the Customer the logged in Contact belongs to. When we have the name we want to put it into the Customer field on the screen. Click 'Save & Close'
Step 5 - Before we close out of the Advanced Screen Properties there is a left over action from the dropdown that causes an error. For me it was the 6th Action 'Enter Value Into Field on Screen - _Put resultTransactionEntity into the Customer dro...' You can either reassign this to the Customer text field or just delete it.
Step 6 - To autopopulate the other fields such as billing and shipping addresses you can copy the action from step 4 and replacing the 'From Field' and the 'Place value in' values
Step 7 - Before we finish off you should also add a filter(s) to the SalesOrderList grid in the 'Existing Sales Orders' section to only show Sales Orders relating to the relevant Customer. Have a go at doing this yourself and get back to me if you need a hand. Tip: You could also delete each of the existing ones so they can't be used by the logged in Contact.
Disclaimer: This won't be a perfect solution as it doesn't take into account a few features you may in the future want to include. There may be other ways more suited to doing this but hopefully the above will give you a good place to start. I'd also recommend thoroughly testing every aspect of the screen before letting your contacts use it.
I hope this helps. Let me know if you have any further questions.
Jeff