\n- Process capabilities most often used in supply chain management
\n- Top supply chain management issues
\n- Investment priorities
\n- Most popular AI applications
Peter Breen is editor-in-chief of the Path to Purchase Institute, where he has managed content since its inception in 2003. Before helping to launch the Institute, he spent four years as editor and managing editor of PROMO Magazine and its ancillary products. His experience covering the consumer goods industry also includes four years as an editor at Simba Information, where he managed publications on book publishing, computer advertising, and internet marketing. He is a graduate of the State University of New York at Buffalo, where he earned a B.A. in English and Linguistics and a special minor in Japanese Studies.
\r\n","title":"Editor-in-Chief","picture":{"id":66,"url":"https://assets1.consumergoods.com/s3fs-public/styles/portrait_gallery_item/s3/2023-08/PBreenSmaller.jpg?h=f2c8faad&itok=oUskF3-C","alt":"Breen","width":374,"height":356},"phone":null,"contactForm":false},"digitalEdition":null,"sponsored":true,"taggedPro":null,"teaserImage":{"id":10481,"url":"https://assets1.consumergoods.com/styles/secondary_articles_short/s3/2018-12/CG1218_SS_Teaser_2.jpg?itok=DUs1V05Y","width":500,"height":400,"alt":""},"topics":[{"name":"Supply Chain","url":"/supply-chain"},{"name":"Fulfillment","url":"/fulfillment"},{"name":"Supply Chain Report","url":"/supply-chain-report"},{"name":"Supply Chain Execution","url":"/supply-chain-execution-0"},{"name":"Artificial Intelligence","url":"/artificial-intelligence"},{"name":"Logistics","url":"/logistics"},{"name":"Demand Planning","url":"/demand-planning"}],"attachedFiles":[{"url":"https://eiqeditor.consumergoods.com/system/files/downloads/2018-12/SupplyChainReport2018_0.pdf","id":14554,"description":"Supply Chain Report 2018"}]}]},"title":"Logistics","contentParagraphs":null,"sections":null}; const country = "US"; const language = null; const SITE_LANGUAGE = "en"; const siteName = "Consumer Goods Technology"; const userRoles = ["anonymous"]; const userUid = 0; const indexName = "CG"; const title = "Logistics | Consumer Goods Technology"; window.dataLayer = window.dataLayer || []; const data = {}; data.entityTaxonomy = {}; const contentTypes = [ "article", "blog", "bulletin", "embed_page", "landing_page", "event", "image", "page", "product", "whitepaper", "video", "tags", "author_profile", "buyers_guide_listing" ]; if ( routeInfo && "bundle" in routeInfo && contentTypes.includes(routeInfo["bundle"]) ) { data.entityBundle = routeInfo.bundle; data.entityTitle = title || `${routeInfo.title} | ${siteName}`; data.entityId = routeInfo.id; data.entityName = routeInfo.author?.uname; data.entityCreated = routeInfo.created; data.sponsored = routeInfo.sponsored; data.sponsor = routeInfo.sponsoringCompany; data.entityType = "node"; data.entityLangcode = SITE_LANGUAGE; data.siteName = siteName; data.drupalLanguage = language; data.drupalCountry = country; data.userRoles = userRoles; data.userUid = userUid; data.entityTaxonomyKeys = {}; data.entityTaxonomyHierarchies = {}; data.parentNaicsCode = {}; data.isPro = false; data.algoliaIndexName = indexName; // Add taxonomy data const taxonomies = { businessTopic: "business_topic", contentType: "content_type", company: "company", marketSegment: "market_segment", }; const getHierarchy = (term, terms = []) => { terms.push({ id: term.id, name: term.name }); if (term.parentTerm != null) { getHierarchy(term.parentTerm, terms); } return terms; }; const getTerms = (term, useApiId = false) => { return { id: useApiId ? term.apiId : term.id, name: term.name }; }; const getKeys = (term) => { return { id: term.id, name: term.apiId }; }; Object.entries(taxonomies).forEach(([key, item]) => { terms = routeInfo[key]; if (terms && terms.length > 0) { data["entityTaxonomy"][item] = terms.map((term) => getTerms(term, key === "company") ); if (key !== "company") { data["entityTaxonomyKeys"][item] = terms.map(getKeys); termGroups = []; terms.forEach((term, termInd) => { termGroups[termInd] = getHierarchy(term); }); data["entityTaxonomyHierarchies"][item] = termGroups; } } }); data["entityTaxonomy"]["tags"] = routeInfo["topics"] || []; // Primary Topic is either the business topic or the top tag. if (routeInfo["businessTopic"]?.length > 0) { data["entityPrimaryTopic"] = routeInfo["businessTopic"][0]["name"]; } else { if (routeInfo["topics"]?.length > 0) { data["entityPrimaryTopic"] = routeInfo["topics"][0]["name"]; } } // Primary and secondary entityNaicsCodes come from the MarketSegment if (routeInfo.marketSegment?.length > 0) { data.entityNaicsCode = {}; data["entityNaicsCode"]["id"] = routeInfo["marketSegment"][0]["id"]; data["entityNaicsCode"]["name"] = routeInfo["marketSegment"][0]["naicsCode"]; if (routeInfo["marketSegment"][0]["parentTerm"] != null) { data["parentNaicsCode"]["id"] = routeInfo["marketSegment"][0]["parentTerm"]["id"]; data["parentNaicsCode"]["name"] = routeInfo["marketSegment"][0]["parentTerm"]["naicsCode"]; } } else { data.entityNaicsCode = []; } if (routeInfo.taggedPro) { data.isPro = routeInfo.taggedPro; } window.dataLayer.push(data); } else if (routeInfo && "vid" in routeInfo) { data.entityBundle = "tags"; data.entityTitle = routeInfo.name; data.entityId = routeInfo.id; data.entityName = routeInfo.author?.uname; data.entityCreated = routeInfo.created; data.entityType = "taxonomy_term"; data.entityLangcode = SITE_LANGUAGE; data.siteName = siteName; data.sponsored = routeInfo.sponsored; data.sponsor = routeInfo.sponsoringCompany; data.drupalLanguage = language; data.drupalCountry = country; data.userRoles = userRoles; data.userUid = userUid; data.algoliaIndexName = indexName; data["entityTaxonomy"]["tags"] = { id: routeInfo["id"], name: routeInfo["name"], }; window.dataLayer.push(data); } })();