Skip to main content
Answer

How to Auto-Populate Contractor Contact Info on Sales Orders Based on Item

  • November 21, 2025
  • 20 replies
  • 122 views

Forum|alt.badge.img

We’re trying to configure Acumatica so that certain programming information — specifically the contractor’s email and phone number — is stored in the Customer record and then automatically printed on the Sales Order whenever a specific group of items is ordered.

Has anyone implemented something similar? We would prefer to do this without a Customization Project. 

Any guidance would be greatly appreciated.

Best answer by lauraj46

Hi ​@jsudak ,

You should be able to accomplish this by configuring attributes or user defined fields on the customer and stock item screens and adjusting the printed Sales Order form using the report designer. 

  1. On the customer screen add attributes (or user defined fields) for the contractor email and phone number.
  2. On the stock item screen define an attribute to indicate if the information should be printed.  
  3. Use the Report Designer to adjust the Sales Order printed form.  Use a visibility condition to hide or display the customer fields based on the value of the attribute on the stock item.

Hope this helps!

Laura

20 replies

lauraj46
Captain II
Forum|alt.badge.img+8
  • Captain II
  • Answer
  • November 21, 2025

Hi ​@jsudak ,

You should be able to accomplish this by configuring attributes or user defined fields on the customer and stock item screens and adjusting the printed Sales Order form using the report designer. 

  1. On the customer screen add attributes (or user defined fields) for the contractor email and phone number.
  2. On the stock item screen define an attribute to indicate if the information should be printed.  
  3. Use the Report Designer to adjust the Sales Order printed form.  Use a visibility condition to hide or display the customer fields based on the value of the attribute on the stock item.

Hope this helps!

Laura


bwhite49
Captain II
Forum|alt.badge.img+10
  • Captain II
  • November 21, 2025
  1. Add the contractor to the customer record as a contact.
  2. Add an attribute to the contact to identify the contact as a contractor. This could be a checkbox or combo type attribute. This is to separate this contact info from the other contacts associated with the customer. So, if you had 4 contacts on the customer, you don’t want to print all 4 contacts on the report, you just want to print the one assigned in the attribute. That’s what this attribute if for.
  3. In Acumatica report designer make sure you have a join from the SOLine table to the InventoryItem table through the inventoryID field. Also make sure you have a join from the customer table to the contact table through the customer/baccount field and where that attribute you added to the contact = True (if checkbox) or whatever value is defined in your attribute.
  4. In Acumatica report designer, you will need to add join the Address table to your contacts table where the defaddressID field = addressID field. 
  5. Also in report designer, copy the “ship to” text box with your customers shipping info and place where you want the contractor’s info to show. Add a visibility condition to it such as…  =IIF(COUNT([InventoryItem.InventryCD=’PartNbr1’ OR  [InventoryItem.InventryCD=’PartNbr2’) > 0, TRUE, FALSE) . Replace PartNbr1 and 2 with your actual Inventory IDs. Add additional items if relevant. 
  6. Replace all the info in the ship to text box with the contact info in the contact and address tables. 

bwhite49
Captain II
Forum|alt.badge.img+10
  • Captain II
  • November 21, 2025

Laura’s approach is a little easier.


Forum|alt.badge.img
  • Author
  • Varsity I
  • November 21, 2025

Thank you both. I will try Laura’s method. 


lauraj46
Captain II
Forum|alt.badge.img+8
  • Captain II
  • November 21, 2025

Several ways to get to the result without a customization :)  Let us know how it goes!


Forum|alt.badge.img
  • Author
  • Varsity I
  • November 24, 2025

I have created the Attributes and will assign these to all Customer Classes.

 

However, I am lost on step 2. 

  1. On the stock item screen define an attribute to indicate if the information should be printed.  

I don’t see where on the stock item screen we define an attribute to indicate if the information should be printed.


bwhite49
Captain II
Forum|alt.badge.img+10
  • Captain II
  • November 24, 2025
  1. Go to a screen called Attributes (CS205000)
  2. Create a new attribute (probably a checkbox). 
  3. Go to the item class screen and add the attribute to each item class on the attributes tab.
  4. Once added to the item class, you will be able to find the checkbox on the stock/non-stock items. 
  5. Check the checkbox for the relevant items

 

 


Forum|alt.badge.img
  • Author
  • Varsity I
  • November 24, 2025

Ok. After reading all your suggestions, I have switched gears. I now have a checkbox Attribute for Print POM Programming Info. 

I created 2 UDF’s in the Customer Record.

I added the Attribute Print POM Programming Info to my first Stock Item that needs this info and selected the Value checkbox.
 

I am now in Report Designer, but do not know what to do.

In detailSection1 we have this expression:

=IIf([SOLine.InventoryID]<> null, [SOLine.InventoryID] + '{br}','')

How do I set up Report Designer to determine when the POM Programming Info should print and to ensure it selects the 2 UDF’s? How do I have the 2 UDF’s print in the body below the item description?

https://docs.google.com/document/d/18ZS2e3R76h5AKsPODvDtrNvcZHwJOJrUUhMUYhiMYVQ/edit?usp=sharing

 


bwhite49
Captain II
Forum|alt.badge.img+10
  • Captain II
  • November 24, 2025

Above I used this formula which required manually defining each item. This need to be added to your visibility rules.

IIF(SUM(COUNT([InventoryItem.InventryCD=’PartNbr1’ OR  [InventoryItem.InventryCD=’PartNbr2’)) > 0, TRUE, FALSE)

You can do something similar with your attribute. When checked on, your attribute will have a value of 1, and 0 when false. 

IIF(SUM(ISNULL([InventoryItem.YourAttribute],0)) > 0, TRUE, FALSE)

Basically, this formula will count every time an item exists. If over 0, you should print the attributes from the customer.

 


Forum|alt.badge.img
  • Author
  • Varsity I
  • November 24, 2025

Thanks for trying. I struck out… once again. :(

Looks like Report Designer just isn’t for me. 


lauraj46
Captain II
Forum|alt.badge.img+8
  • Captain II
  • November 24, 2025

Hi ​@jsudak ,

Don’t give up, you are close now 😁. Did you receive an error message?  If you share more details, we may be able to help.

Laura


bwhite49
Captain II
Forum|alt.badge.img+10
  • Captain II
  • November 24, 2025

Thanks for trying. I struck out… once again. :(

Looks like Report Designer just isn’t for me. 

Report designer isn’t for most people. It’s not intuitive and tough to learn - I really struggled with it at first.

You should have your partner give you a training session. They can support you on the missing pieces.


Forum|alt.badge.img
  • Author
  • Varsity I
  • November 24, 2025

 


bwhite49
Captain II
Forum|alt.badge.img+10
  • Captain II
  • November 24, 2025

Sorry, try this one 

IIF(SUM(ISNULL([InventoryItem.YourAttribute],0)) > 0, TRUE, FALSE)

Replace the red part with your attribute from the stock item.


lauraj46
Captain II
Forum|alt.badge.img+8
  • Captain II
  • November 24, 2025

Hi ​@jsudak ,

The error message indicates a syntax error in the visibility expression, looks like a couple of missing square brackets.  Also, you will want to swap out the specific part numbers in the example expression that ​@bwhite49 shared and replace that logic with the attribute.  If your attribute is named TEST, then the expression would be something like this:

IIF(SUM(COUNT([InventoryItem.AttributeTEST]=’true’)) > 0, TRUE, FALSE)  or depending on how you are grouping it could be simplified to this:

IIF([InventoryItem.AttributeTEST]=’true’, TRUE, FALSE)

If you don’t see the attribute in the Schema Builder, click on the InventoryItem table name in the schema and choose Refresh.

Agree with ​@bwhite49 that there is a bit of a learning curve to get up to speed with Report Designer.  One of the best ways to learn is to examine the many existing reports that are built into Acumatica.  The Acumatica Open University Course (S130) is also helpful.

https://openuni.acumatica.com/courses/reporting/s130-inquiries-reports-and-dashboards/

Finally, you might check out this community webinar that I presented on the Report Designer in August.

Hope this helps!

Laura

 


Forum|alt.badge.img
  • Author
  • Varsity I
  • November 24, 2025

I can get this to validate: 

=(IIF([SOLine.InventoryID] = 'JMI-POM' Or [SOLine.InventoryID] = 'JMI-POM-VMAC', 1, 0)) > 0 

 

 


bwhite49
Captain II
Forum|alt.badge.img+10
  • Captain II
  • November 24, 2025

What did you call the attribute?

You have encountered another complexity where InventoryID and InventoryCD are not the same, so your formula will not work. InventoryCD is your front-end identified for the part (ex. JMI-POM) whereas InventoryID is the back-end (ex. 12345)

Have you joined InventoryItem to SOLine in your schema builder? You either need to swap [SOLine.InventryID] with [InventoryItem.InventoryCD] or use the attribute as Laura mentioned. 


Forum|alt.badge.img
  • Author
  • Varsity I
  • November 25, 2025

=(IIF([SOLine.InventoryCD] = 'JMI-POM' Or [SOLine.InventoryCD] = 'JMI-POM-VMAC', 1, 0)) > 0 

This string does not validate. 

In my tables, I have the SOLine available, not Inventory CD. The inventory table does not appear in this so641010a report. 

I am trying to connect the SOLine when it is one of the POM items to then print the Attribute that I am trying to tie to the 2 UDF’s. 

I tried to Build Schema and add Inventory Item, but can’t find this to select it when I go to Visible Expression. 

 


bwhite49
Captain II
Forum|alt.badge.img+10
  • Captain II
  • November 25, 2025

Hi ​@jsudak,

You need to add this on the relations tab before InventoryItem can be used….

 

Do watch ​@lauraj46’s video she shared above before starting your next report designer project. You should learn the basics.


Forum|alt.badge.img
  • Author
  • Varsity I
  • November 25, 2025

Thank you.