Hello and welcome to Ask the Professor, here at erpprofessor.com. Today’s question comes from Reddit, from a user by the name of the chig, and it relates to parent-child relationships for vendors. The question is: “Does anyone know if there’s a way to have children of vendors, like we can with clients, either currently or through scripting. The reason I ask is because we use many reps for each vendor, so we currently use the address field, but I would like each rep to be their own vendor that rolls up to a parent vendor, this way I can use email functionality, see spend by rep, etc. I investigated using other relationships on the vendor record, but there’s only one you can use not multiple. Any help is appreciated.”
So this question does already have a couple of answers on Reddit. But the reason were addressing this question is because it’s one I’ve heard before, and I want to provide some detail around the answers that were provided already, and more importantly how to implement them, if someone else has the same question, or if this user is still looking for the answer this question. So basically the question relates to parent-child relationships, and we can see an example of these if we go to Lists, Relationships, and Customers, and if I scroll down and pick any one of these customers, choose edit, and I’ll choose AB&I Holdings. We could set it so that AB&I Holdings was really a child company of another company. So maybe AB&I Holdings actually belongs to 3M, we could set this and then in reports we would see everything roll up to 3M.
Now, if you go to vendors, this doesn’t exist. So for example, if I go to Lists, Relationships, Vendors, and I’ll open this in a new tab, and I’ll go ahead and pull up a vendor here. You’ll see that whereas if I go to the customer, I have a parent company, on the vendor there is no parent company, and we could actually expand this and do a search but there is no parent company here. Now one way that you could track these relationships is by using contacts, and you could do that by going to relationships here, and you could setup a new contact for the vendor. I’m going to go ahead and leave this page, because I’m not going to setup a contact. You can also choose an existing one, that you already have in the system, and if you were going to use this you’d actually want to verify that you’re not creating duplicate contacts, because you can have a contact assigned to multiple other entities. So one contact might be assigned as a customer and a vendor, and this isn’t incredibly unlikely, if you have a situation where you’re selling to a company, but also buying something from them as well.
But in our case, if I go ahead and go back to my list of vendors, and I’m going to leave this, I’m not going to save and changes. It may be that I want The Best Internet Service to be a sub-vendor of Bravo TV. Now the easiest way to do this, and the correct way to do this, is to create a custom field that we would apply to vendors were we can setup a sub-vendor. We can do this by going to Customization, Lists Records & Fields, Entity Fields, and choosing New. I’m going to go ahead and close this customer tab, to get it out of the way, and I’ll choose leave to the pop-up comes up. And because we want this to appear on the child vendor, we’re going to call this parent vendor. And it’s important that we structure it this way, because it we called it child, we’d end up with a situation where we could only have one child for every parent. Go ahead and give it an ID of _parent_vendor. And if you’re wondering why I start with the underscore, it’s because this is going to be called custfield, custentity, something along those lines. And what I don’t want is for that to run together with parent. This will just make it more readable at a later date. Go ahead and provide a description here. And I do recommend providing a description, just because it makes it easier to later come back and understand why this field was created. The type is going to be a list/record, and the list/record is going to be an entity. The rest of these defaults should be fine. We’re going to choose that this applies only to the vendor.
We’ll go ahead and look at the display. In the display, we can choose where we would like this to show up. Now we can also choose this by modifying the form, but I’m not going to get that detailed in this tutorial. What I will do, is I’ll open a vendor back up, by going to my recent records up here, choosing The Best Internet Service, and I’ll open this in a new tab, and we can take a look at where we might want this to go. So if we didn’t choose a subtab, it would go under this custom tab, that makes it difficult to find. So for the sub tab, I’m going to choose main, and main really just means this header information up here. Insert before is if we want to insert it before any other custom fields that we have. Now in this case it’s probably not going to really matter, I don’t believe we have any custom fields showing on the header section, and the truth is that it’s probably better to control that with the forms themselves. The other thing to note, is that whereas I am using the standard form, we can’t see that here, but if I was in edit mode you’d actually see the standard form. Whereas I’m using the standard form, chances are good you will be using a custom form. So you can edit that, whereas you can’t edit the standard form. Display type normal is fine. I typically copy the description into the help, and this just provides information if you hover over or click on the field itself, as to what it’s there for.
We can go into Validation & Defaulting, and choose if we want this to be mandatory. In this case we really don’t, because not every vendor is going to have a parent vendor. There’s also got to be some top-level parent vendor, and you would be making that mandatory for them as well.
So you can choose Sourcing & Filtering. We can click on this filter using. We’ll go ahead and click on this, and choose type, and we’ll set the value to vendor, and we’ll add this to our filter list. The way that this will work is that it will only allow you to set the vendor to have another vendor as its parent. This will both shorten list when you’re looking through, and help to prevent errors where a vendor may be linked to a customer as a parent.
We’ll take a look at Access and Translation, just to be thorough here. You should look through all the subtabs when you’re setting up something like this. In this case, the default access level is edit, the default level for searching and reporting is edit. This one’s probably fine. Default access level, sometimes you may want to change this to be view, and then provide only certain roles with access to it, in my case, I’m going to leave this alone. And translation, if we were using other languages, like French, we could setup a translation for this as well, so that there’s a different label for this, as well as a different help text. So I think that I’m all good with this, I don’t think there’s anything else that I need to change. I’ll go ahead and choose save, and now I see my parent vendor listed up here, which is what I just created.
I’m going to go back to my vendor itself, and refresh this. I’m going to go into edit mode, and you’ll see now under classification, I have parent vendor. Now if I wanted this to be somewhere besides classification, I could actually go into my form customization which is found under Customization, Forms, and in this case it’d be an Entry Form, and I could make the modifications to the form itself. Now I can’t customize the standard vendor form, but I could customize this GB Vendor Form as an example, and like I said earlier, the chances are good that you’re going to be using a custom form that was setup when your NetSuite instance was provisioned and first setup or sometime after that. So for this Best Internet Service, I can go ahead and choose a parent vendor and get my list here, and we’ll say maybe American Computers is the parent of The Best Internet Service, and we’ll save this. So now we have The Best Internet Service setup as a child of American Computers, and we could create saved searches and reports that reflect this.
However there’s one more change that we really should make to make this complete, and that’s back at the custom entity fields. So I’m going to go back to our custom entity fields tab and I’m going to open up this parent vendor field again. Now if you’re really astute, you may have noticed before that this, Record is Parent, at one point wasn’t present, and at a little bit later point was present but was greyed out, similar to how the global search is greyed out here. So now that we have this all setup, and I could’ve done this before I actually added this to the vendor, but now that we have this all setup, what we want to do is check this record is parent, and then we’re going to choose save What this does, is actually marks this as a parent-child relationship. So now what we can do is, we can come back over here to American Computers, and this is what the parent-child relationship allows us to do, if we come over to custom, we can also see that this is listed as The Best Internet Service as a child of American Computers. Now you could move this, if you want to customize the form, so that it shows up under relationships, and you want to have a secondary set of subtabs, maybe one that shows child vendors or something like that. You could move that from custom, the only reason that it’s there is we haven’t moved that yet, but I think you get the idea of how to do this, and the power that it has. And you can actually use this for rollup reporting, as well as saved searches to list vendors with their children, or find children and their parents.
So I hope this provides some color around the answers that were provided, and how to actually implement those answers. I want to thank you for watching this installment of Ask The Professor, and let you know that if you have questions, you can certainly send them to ask at erpprofessor.com, and we’ll do our best to get them answered, and get them on the air here. Think you very much for watching, and have a great week.