function gm_PPAT_on_NewPart_Changed() {
var gmNewPartChange = gmNewPartChange || function () {
WorkOrderPPAT: "gm_Work Order PPPAT",
PPAT: "Pre-Prod Part Action Tab"
var innovator = aras.newIOMInnovator();
var isForm = typeof (relationshipID) === "undefined";
var gmArasContextUtilityNS = top[(isForm ? parent.thisItem.getProperty(CONSTANTS.PropertyNames.SourceId) : parent.thisItem.getID()) + 'gmArasContextUtilityNS'];
var ecrContext = gmArasContextUtilityNS.getParentContext(!isForm, parent);
var updateProperty = function (name, value, isItem) {
var itemId = isForm ? document.thisItem.getID() : relationshipID;
var grid = isForm ? null : gridApplet;
gmArasContextUtilityNS.updateProperty(ecrContext, grid, itemId, name, value, isItem, CONSTANTS.Tabs.PPAT);
var update = function (ppat) {
var gmPartId = ecrContext.gmARASEventUtilitiesNS.getPropertyAfterEvent(workOrderPPAT, CONSTANTS.PropertyNames.NewPart, typeof (event) === "undefined" ? null : event, CONSTANTS.ItemTypeNames.GMPart);
var partItem = innovator.getItemById(CONSTANTS.ItemTypeNames.GMPart, gmPartId);
if (!partItem || partItem.isError()) {
updateProperty(CONSTANTS.PropertyNames.NewPLS, partItem.getProperty(CONSTANTS.PropertyNames.PartPLS, null));
updateProperty(CONSTANTS.PropertyNames.NewDLS, partItem.getProperty(CONSTANTS.PropertyNames.PartDLS, null));
updateProperty(CONSTANTS.PropertyNames.NewPLS, null);
updateProperty(CONSTANTS.PropertyNames.NewDLS, null);
var currentRow = typeof (relationshipID) === "undefined" ? document.thisItem : parent.thisItem.getItemsByXPath("//Item[@id='" + relationshipID + "' and @type='gm_Work Order PPPAT']");
if (currentRow.nodeList && currentRow.nodeList.length > 1) {
currentRow = currentRow.getItemByIndex(0);
gmNewPartChange.update(currentRow);
return top.aras.AlertError(exception);
function gm_VAT_ImportCSV() {
var ecrStatus = parent.thisItem.getLockStatus();
var isNewECR = parent.thisItem.getProperty("item_number");
if (isNewECR !== undefined) {
return top.aras.AlertError("Please Lock ECR to Import VAT File");
var importVATRows = function (file, spinnerVisible) {
aras.browserHelper.toggleSpinner(document, true);
return setTimeout(function () {
importVATRows(file, parent, true);
var regex = /^([a-zA-Z0-9\s_\\.\-:])+(.csv|.txt)$/;
if (!regex.test(file.name.toLowerCase())) {
top.aras.AlertError("Please upload a valid CSV file.");
if (typeof (FileReader) == "undefined") {
top.aras.AlertError("This browser does not support HTML5.");
var vatDelQuery = parent.thisItem.getRelationships("gm_Work Order gm_VAT");
var reader = new FileReader();
reader.onload = function (event) {
var text = event.target.result.replace(/\r/g, "");
var rows = text.split("\n");
var headers = rows[0].split(";");
var relVat = parent.thisItem.getRelationships("gm_Work Order gm_VAT");
for (j = 0; j < relVat.getItemCount() ; j++) {
var relrownum = relVat.getItemByIndex(j);
var rownum = parseInt(relrownum.getProperty("_row_number"));
var rowaction = relrownum.getAction();
if (rownum > maxVal && rowaction !== "delete") {
var VATItemType = parent.thisItem.getInnovator().newItem("itemtype", "get");
VATItemType.setProperty("name", "gm_Work Order gm_VAT");
VATItemType = VATItemType.apply();
var VATId = VATItemType.getProperty("id");
var propItem = parent.thisItem.getInnovator().newItem("Property", "get");
propItem.setProperty("name", "_vds_action");
propItem.setProperty("source_id", VATId);
propItem = propItem.apply();
var VDSAction_Len = propItem.getProperty("stored_length");
propItem = parent.thisItem.getInnovator().newItem("Property", "get");
propItem.setProperty("name", "_overall_vds_notes");
propItem.setProperty("source_id", VATId);
propItem = propItem.apply();
var OverallVDSNote_Len = propItem.getProperty("stored_length");
propItem = parent.thisItem.getInnovator().newItem("Property", "get");
propItem.setProperty("name", "_option_cd");
propItem.setProperty("source_id", VATId);
propItem = propItem.apply();
var OptionCd_Len = propItem.getProperty("stored_length");
propItem = parent.thisItem.getInnovator().newItem("Property", "get");
propItem.setProperty("name", "_option_desc");
propItem.setProperty("source_id", VATId);
propItem = propItem.apply();
var OptionDesc_Len = propItem.getProperty("stored_length");
propItem = parent.thisItem.getInnovator().newItem("Property", "get");
propItem.setProperty("name", "_option_notes");
propItem.setProperty("source_id", VATId);
propItem = propItem.apply();
var OptionNotes_Len = propItem.getProperty("stored_length");
propItem = parent.thisItem.getInnovator().newItem("Property", "get");
propItem.setProperty("name", "_option_set");
propItem.setProperty("source_id", VATId);
propItem = propItem.apply();
var OptionSet_Len = propItem.getProperty("stored_length");
propItem = parent.thisItem.getInnovator().newItem("Property", "get");
propItem.setProperty("name", "_mos_statement_type");
propItem.setProperty("source_id", VATId);
propItem = propItem.apply();
var MOSStateType_Len = propItem.getProperty("stored_length");
propItem = parent.thisItem.getInnovator().newItem("Property", "get");
propItem.setProperty("name", "_mos_statement");
propItem.setProperty("source_id", VATId);
propItem = propItem.apply();
var MOSState_Len = propItem.getProperty("stored_length");
propItem = parent.thisItem.getInnovator().newItem("Property", "get");
propItem.setProperty("name", "_option_set_availability_ind");
propItem.setProperty("source_id", VATId);
propItem = propItem.apply();
var OptionSetAvaiInd_Len = propItem.getProperty("stored_length");
propItem = parent.thisItem.getInnovator().newItem("Property", "get");
propItem.setProperty("name", "_prod_yr");
propItem.setProperty("source_id", VATId);
propItem = propItem.apply();
var ProdYr_Len = propItem.getProperty("stored_length");
propItem = parent.thisItem.getInnovator().newItem("Property", "get");
propItem.setProperty("name", "_prod_line_cde");
propItem.setProperty("source_id", VATId);
propItem = propItem.apply();
var ProdLineCd_Len = propItem.getProperty("stored_length");
for (var i = 1; i < rows.length - 1; i++) {
var columns = rows[i].split(';');
var rel = parent.thisItem.newItem("gm_Work Order gm_VAT", "add");
rel.setProperty("source_id", parent.thisItem.getID());
rel.setProperty("_row_number", rownum);
for (var j = 0; j < columns.length; j++) {
if (headers[j].toLowerCase() === "vds action") {
action = columns[j].trim();
if (action.length > VDSAction_Len) {
return top.aras.AlertError("Could not import CSV file as there is an error in <br><b>Property Value </b> VDS Action.<br><b>Row number : </b>" + i + ".<br>The Maximum length for this property is <b>" + VDSAction_Len + "</b> characters.");
rel.setProperty("_vds_action", action);
else if (headers[j].toLowerCase() === "overall vds notes") {
action = columns[j].trim();
if (action.length > OverallVDSNote_Len) {
return top.aras.AlertError("Could not import CSV file as there is an error in <br><b>Property Value </b> Overall VDS Notes.<br><b>Row number : </b>" + i + ".<br>The Maximum length for this property is <b>" + OverallVDSNote_Len + "</b> characters.");
rel.setProperty("_overall_vds_notes", action);
else if (headers[j].toLowerCase() === "option code") {
action = columns[j].trim();
if (action.length > OptionCd_Len) {
return top.aras.AlertError("Could not import CSV file as there is an error in <br><b>Property Value </b> Option Code.<br><b>Row number : </b>" + i + ".<br>The Maximum length for this property is <b>" + OptionCd_Len + "</b> characters.");
rel.setProperty("_option_cd", action);
else if (headers[j].toLowerCase() === "option description") {
action = columns[j].trim();
if (action.length > OptionDesc_Len) {
return top.aras.AlertError("Could not import CSV file as there is an error in <br><b>Property Value </b> Option Description.<br><b>Row number : </b>" + i + ".<br>The Maximum length for this property is <b>" + OptionDesc_Len + "</b> characters.");
rel.setProperty("_option_desc", action);
else if (headers[j].toLowerCase() === "option notes") {
action = columns[j].trim();
if (action.length > OptionNotes_Len) {
return top.aras.AlertError("Could not import CSV file as there is an error in <br><b>Property Value </b> Option Notes.<br><b>Row number : </b>" + i + ".<br>The Maximum length for this property is <b>" + OptionNotes_Len + "</b> characters.");
rel.setProperty("_option_notes", action);
else if (headers[j].toLowerCase() === "option set") {
action = columns[j].trim();
if (action.length > OptionSet_Len) {
return top.aras.AlertError("Could not import CSV file as there is an error in <br><b>Property Value </b> Option Set.<br><b>Row number : </b>" + i + ".<br>The Maximum length for this property is <b>" + OptionSet_Len + "</b> characters.");
rel.setProperty("_option_set", action);
else if (headers[j].toLowerCase() === "mos statement type") {
action = columns[j].trim();
if (action.length > MOSStateType_Len) {
return top.aras.AlertError("Could not import CSV file as there is an error in <br><b>Property Value </b> MOS Statement Type.<br><b>Row number : </b>" + i + ".<br>The Maximum length for this property is <b>" + MOSStateType_Len + "</b> characters.");
rel.setProperty("_mos_statement_type", action);
else if (headers[j].toLowerCase() === "mos statement") {
action = columns[j].trim();
if (action.length > MOSState_Len) {
return top.aras.AlertError("Could not import CSV file as there is an error in <br><b>Property Value </b> MOS Statement.<br><b>Row number : </b>" + i + ".<br>The Maximum length for this property is <b>" + MOSState_Len + "</b> characters.");
rel.setProperty("_mos_statement", action);
else if (headers[j].toLowerCase() === "option set availability indicator") {
action = columns[j].trim();
if (action.length > OptionSetAvaiInd_Len) {
return top.aras.AlertError("Could not import CSV file as there is an error in <br><b>Property Value </b>: Option Set Availability Indicator.<br><b>Row number : </b>" + i + ".<br>The Maximum length for this property is <b>" + OptionSetAvaiInd_Len + "</b> characters.");
rel.setProperty("_option_set_availability_ind", action);
else if (headers[j].toLowerCase() === "model year") {
action = columns[j].trim();
if (action.length > ProdYr_Len) {
return top.aras.AlertError("Could not import CSV file as there is an error in <br><b>Property Value </b>: Model Year.<br><b>Row number : </b>" + i + ".<br>The Maximum length for this property is <b>" + ProdYr_Len + "</b> characters.");
rel.setProperty("_prod_yr", action);
else if (headers[j].toLowerCase() === "product line code") {
action = columns[j].trim();
if (action.length > ProdLineCd_Len) {
return top.aras.AlertError("Could not import CSV file as there is an error in <br><b>Property Value </b>: Product Line Code.<br><b>Row number : </b>" + i + ".<br>The Maximum length for this property is <b>" + ProdLineCd_Len + "</b> characters.");
rel.setProperty("_prod_line_cde", action);
for (var x = 0; x < RelColl.length; x++) {
parent.thisItem.addRelationship(RelColl[x]);
top.aras.AlertSuccess("VAT CSV data is imported successfully");
top.aras.uiReShowItem(parent.thisItem.getID(), parent.thisItem.getID(), "tab view");
aras.browserHelper.toggleSpinner(document, false);
aras.vault.SelectFile().then(importVATRows);