{"id":12298,"date":"2026-04-10T18:11:40","date_gmt":"2026-04-11T02:11:40","guid":{"rendered":"https:\/\/botiscorp.com\/?page_id=12298"},"modified":"2026-09-07T04:22:40","modified_gmt":"2026-09-07T12:22:40","slug":"equipment-portal","status":"publish","type":"page","link":"https:\/\/botiscorp.com\/es\/equipment-portal\/","title":{"rendered":"Portal de equipos"},"content":{"rendered":"\n<!-- Equipment Portal Page -->\n<style>\n* { box-sizing: border-box; margin: 0; padding: 0; }\n.eq-wrap {\n  max-width: 520px; margin: 30px auto; padding: 16px;\n  font-family: Arial, sans-serif;\n}\n.eq-header {\n  background: #1A2F5A; color: white; border-radius: 10px 10px 0 0;\n  padding: 20px; text-align: center;\n}\n.eq-header h1 { font-size: 22px; margin-bottom: 4px; }\n.eq-header p  { font-size: 13px; opacity: 0.75; }\n.eq-card {\n  background: white; border-radius: 0 0 10px 10px;\n  padding: 20px; box-shadow: 0 2px 8px rgba(0,0,0,0.08);\n}\n.eq-badge {\n  display: inline-block; padding: 4px 12px; border-radius: 20px;\n  font-size: 12px; font-weight: bold; margin-bottom: 16px;\n}\n.badge-pass    { background: #dcfce7; color: #16a34a; }\n.badge-fail    { background: #fee2e2; color: #dc2626; }\n.badge-pending { background: #fef9c3; color: #ca8a04; }\n.eq-section { margin-bottom: 18px; }\n.eq-section h3 {\n  font-size: 11px; text-transform: uppercase; letter-spacing: 0.05em;\n  color: #9ca3af; margin-bottom: 8px; border-bottom: 1px solid #f3f4f6;\n  padding-bottom: 4px;\n}\n.eq-row {\n  display: flex; justify-content: space-between; align-items: center;\n  padding: 6px 0; border-bottom: 1px solid #f9fafb; font-size: 14px;\n}\n.eq-row span:first-child { color: #6b7280; }\n.eq-row span:last-child  { font-weight: 600; color: #111827; text-align: right; }\n.eq-actions { display: flex; flex-direction: column; gap: 10px; margin-top: 20px; }\n.eq-btn {\n  display: block !important; text-align: center !important; padding: 12px !important;\n  border-radius: 8px !important; font-size: 15px !important; font-weight: 700 !important;\n  text-decoration: none !important; cursor: pointer !important; border: none !important;\n  width: 100% !important; letter-spacing: 0.02em !important; line-height: 1.4 !important;\n  opacity: 1 !important;\n}\n.btn-blue   { background: #1A2F5A !important; color: #ffffff !important; }\n.btn-orange { background: #ea580c !important; color: #ffffff !important; }\n.btn-teal   { background: #0891b2 !important; color: #ffffff !important; }\n.btn-gray   { background: #f3f4f6 !important; color: #111827 !important; border: 1px solid #e5e7eb !important; }\n.btn-green  { background: #16a34a !important; color: #ffffff !important; }\n.eq-loading { text-align: center; padding: 60px 20px; color: #6b7280; }\n.eq-error   { text-align: center; padding: 40px 20px; color: #dc2626; }\n.eq-id-large { font-size: 28px; font-weight: bold; color: #1A2F5A; margin-bottom: 4px; }\n<\/style>\n\n<div class=\"eq-wrap\">\n  <div class=\"eq-header\">\n    <h1>Boti&#8217;s Corporation<\/h1>\n    <p>Equipment Portal<\/p>\n  <\/div>\n  <div class=\"eq-card\" id=\"eq-content\">\n    <div class=\"eq-loading\">Loading equipment data&#8230;<\/div>\n  <\/div>\n<\/div>\n\n<script>\n(function() {\n  const FLEET_URL   = 'https:\/\/script.google.com\/macros\/s\/AKfycbxmhHXBF93hBrhD6E-XhGSKQoXslXV7uIyLCjDGM687TRK5nkJahtMYdItBe7q_Mp8k\/exec?page=fleet';\n  const params      = new URLSearchParams(window.location.search);\n  const id          = (params.get('id') || '').padStart(4, '0');\n  const container   = document.getElementById('eq-content');\n\n  if (!id || id === '0000') {\n    container.innerHTML = '<div class=\"eq-error\"><strong>No equipment ID provided.<\/strong><br>Please scan the QR code on the equipment.<\/div>';\n    return;\n  }\n\n  const HISTORY_URL = 'https:\/\/script.google.com\/macros\/s\/AKfycbxmhHXBF93hBrhD6E-XhGSKQoXslXV7uIyLCjDGM687TRK5nkJahtMYdItBe7q_Mp8k\/exec?page=history&id=' + id;\n\n  fetch(FLEET_URL)\n    .then(function(r) { return r.json(); })\n    .then(function(data) {\n\n      const d = data.find(function(item) { return item.NumericID === id; });\n      if (!d) {\n        container.innerHTML = '<div class=\"eq-error\"><strong>Equipment not found.<\/strong><br>ID: ' + id + '<br>Please contact support.<\/div>';\n        return;\n      }\n\n      const status    = (d['Inspection Status'] || 'Pending').toUpperCase();\n      const badgeClass = status === 'PASS' ? 'badge-pass' : status === 'FAIL' ? 'badge-fail' : 'badge-pending';\n      const numericID = d.NumericID    || id;\n      const equipID   = d.EquipmentID  || 'Pending';\n      const make      = d.Make         || '\u2014';\n      const model     = d.Model        || '\u2014';\n      const serial    = d['Serial Number']        || '\u2014';\n      const lastInsp  = d['Last Inspection Date'] || '\u2014';\n      const nextInsp  = d['Next Inspection Due']  || '\u2014';\n      const lastAct   = d['Last Activity']         || '\u2014';\n      const pdfUrl    = d['Latest PDF URL']        || '';\n      const siteName  = d['Site Name']   || '\u2014';\n      const siteCity  = d.City           || '\u2014';\n      const custName  = d['Company Name'] || '\u2014';\n\n      const serviceUrl = 'https:\/\/botiscorp.com\/qr-service-request\/?' +\n  'equipment_id='   + encodeURIComponent(equipID) +\n  '&make_model='    + encodeURIComponent(make + ' ' + model) +\n  '&serial_number=' + encodeURIComponent(serial) +\n  '&site='          + encodeURIComponent(siteName) +\n  '&company='       + encodeURIComponent(custName);\n\n      const emailUrl = 'mailto:service@botiscorp.com' +\n        '?subject=' + encodeURIComponent('Equipment Issue \u2014 ' + equipID + ' | ' + make + ' ' + model) +\n        '&body='    + encodeURIComponent('Equipment ID: ' + equipID + '\\nMake\/Model: ' + make + ' ' + model + '\\nSerial: ' + serial + '\\nSite: ' + siteName + '\\nCustomer: ' + custName + '\\n\\nIssue description:\\n');\n\n      container.innerHTML =\n        '<div class=\"eq-id-large\">' + equipID + '<\/div>' +\n        '<span class=\"eq-badge ' + badgeClass + '\">' + status + '<\/span>' +\n\n        '<div class=\"eq-section\"><h3>Equipment<\/h3>' +\n          '<div class=\"eq-row\"><span>ID<\/span><span>' + numericID + '<\/span><\/div>' +\n          '<div class=\"eq-row\"><span>Make<\/span><span>' + make + '<\/span><\/div>' +\n          '<div class=\"eq-row\"><span>Model<\/span><span>' + model + '<\/span><\/div>' +\n          '<div class=\"eq-row\"><span>Serial<\/span><span>' + serial + '<\/span><\/div>' +\n        '<\/div>' +\n\n        '<div class=\"eq-section\"><h3>Inspection<\/h3>' +\n          '<div class=\"eq-row\"><span>Last Inspection<\/span><span>' + lastInsp + '<\/span><\/div>' +\n          '<div class=\"eq-row\"><span>Next Due<\/span><span>' + nextInsp + '<\/span><\/div>' +\n          '<div class=\"eq-row\"><span>Last Activity<\/span><span>' + lastAct + '<\/span><\/div>' +\n        '<\/div>' +\n\n        '<div class=\"eq-section\"><h3>Location<\/h3>' +\n          '<div class=\"eq-row\"><span>Site<\/span><span>' + siteName + '<\/span><\/div>' +\n          '<div class=\"eq-row\"><span>City<\/span><span>' + siteCity + '<\/span><\/div>' +\n          '<div class=\"eq-row\"><span>Customer<\/span><span>' + custName + '<\/span><\/div>' +\n        '<\/div>' +\n\n        '<div class=\"eq-actions\">' +\n          '<a href=\"https:\/\/botiscorp.com\/daily-inspection\/?id=' + numericID + '\" class=\"eq-btn btn-blue\">Daily Inspection<\/a>' +\n          '<a href=\"' + serviceUrl + '\" class=\"eq-btn btn-orange\">Service Request<\/a>' +\n          '<a href=\"' + emailUrl + '\" class=\"eq-btn btn-teal\">\u2709 Email Us<\/a>' +\n          '<a href=\"tel:+12093603139\" class=\"eq-btn btn-gray\">\ud83d\udcde Call (209) 360-3139<\/a>' +\n          '<button class=\"eq-btn btn-gray\" onclick=\"window.emailFullRecord &#038;&#038; window.emailFullRecord()\" style=\"margin-top:4px;\">\ud83d\udccb Email Full Record<\/button>' +\n          (pdfUrl ? '<a href=\"' + pdfUrl + '\" target=\"_blank\" class=\"eq-btn btn-green\">View Latest Inspection Report<\/a>' : '') +\n        '<\/div>';\n\n      \/\/ Now load history\n      fetch(HISTORY_URL)\n        .then(function(r) { return r.json(); })\n        .then(function(h) {\n\n          var histHTML = '';\n\n          if (h.inspections && h.inspections.length > 0) {\n            histHTML += '<div class=\"eq-section\" style=\"margin-top:20px;\"><h3>Inspection History<\/h3>';\n            h.inspections.slice().reverse().forEach(function(rec) {\n              var badge = rec.Result === 'PASS'\n                ? 'background:#dcfce7;color:#16a34a;'\n                : rec.Result === 'FAIL'\n                ? 'background:#fee2e2;color:#dc2626;'\n                : 'background:#fef9c3;color:#ca8a04;';\n              histHTML += '<div class=\"eq-row\" style=\"flex-wrap:wrap;gap:4px;\">'\n                + '<span>' + (rec.Timestamp || '\u2014') + ' \u2014 ' + (rec.Type || '') + '<\/span>'\n                + '<span style=\"display:flex;gap:6px;align-items:center;\">'\n                + '<span style=\"padding:2px 8px;border-radius:10px;font-size:11px;font-weight:700;' + badge + '\">' + (rec.Result || 'Pending') + '<\/span>'\n                + (rec['PDF URL'] ? '<a href=\"' + rec['PDF URL'] + '\" target=\"_blank\" style=\"font-size:12px;color:#1A2F5A;font-weight:600;\">View PDF<\/a>' : '')\n                + '<\/span>'\n                + '<\/div>';\n            });\n            histHTML += '<\/div>';\n          }\n\n          if (h.services && h.services.length > 0) {\n            histHTML += '<div class=\"eq-section\" style=\"margin-top:20px;\"><h3>Service History<\/h3>';\n            h.services.slice().reverse().forEach(function(rec) {\n              histHTML += '<div class=\"eq-row\" style=\"flex-wrap:wrap;gap:4px;\">'\n                + '<span>' + (rec.Timestamp || '\u2014') + ' \u2014 ' + (rec.Type || '') + '<\/span>'\n                + '<span style=\"display:flex;gap:6px;align-items:center;\">'\n                + '<span style=\"font-size:12px;color:#374151;\">' + (rec['Work Performed'] || '') + '<\/span>'\n                + (rec['PDF URL'] ? '<a href=\"' + rec['PDF URL'] + '\" target=\"_blank\" style=\"font-size:12px;color:#1A2F5A;font-weight:600;\">View PDF<\/a>' : '')\n                + '<\/span>'\n                + '<\/div>';\n            });\n            histHTML += '<\/div>';\n          }\n\n          if (histHTML) {\n            document.getElementById('eq-content').innerHTML += histHTML;\n          }\n\n          \/\/ Email Full Record function \u2014 built after history loads\n          window.emailFullRecord = function() {\n            var subject = 'Equipment Record \u2014 ' + equipID + ' | ' + make + ' ' + model;\n            var body = 'EQUIPMENT RECORD\\n================\\n';\n            body += 'Equipment ID: ' + equipID + '\\n';\n            body += 'Make \/ Model: ' + make + ' ' + model + '\\n';\n            body += 'Serial Number: ' + serial + '\\n';\n            body += 'Site: ' + siteName + '\\n';\n            body += 'City: ' + siteCity + '\\n';\n            body += 'Customer: ' + custName + '\\n';\n            body += 'Current Status: ' + status + '\\n\\n';\n\n            if (h.inspections && h.inspections.length > 0) {\n              body += 'INSPECTION HISTORY\\n------------------\\n';\n              h.inspections.slice().reverse().forEach(function(rec) {\n                body += (rec.Timestamp || '\u2014') + ' | ' + (rec.Type || '') + ' | ' + (rec.Result || 'Pending');\n                if (rec['Technician \/ Operator']) body += ' | Tech: ' + rec['Technician \/ Operator'];\n                if (rec.Notes) body += '\\nNotes: ' + rec.Notes;\n                if (rec['PDF URL']) body += '\\nReport: ' + rec['PDF URL'];\n                body += '\\n';\n              });\n              body += '\\n';\n            }\n\n            if (h.services && h.services.length > 0) {\n              body += 'SERVICE HISTORY\\n---------------\\n';\n              h.services.slice().reverse().forEach(function(rec) {\n                body += (rec.Timestamp || '\u2014') + ' | ' + (rec.Type || '');\n                if (rec.Technician) body += ' | Tech: ' + rec.Technician;\n                if (rec['Work Performed']) body += '\\nWork: ' + rec['Work Performed'];\n                if (rec.Resolution) body += ' | Resolution: ' + rec.Resolution;\n                if (rec['PDF URL']) body += '\\nDocument: ' + rec['PDF URL'];\n                body += '\\n';\n              });\n              body += '\\n';\n            }\n\n            body += 'Generated from Boti\\'s Corporation Equipment Portal\\n';\n            body += 'botiscorp.com\/equipment-portal\/?id=' + numericID;\n\n            window.location.href = 'mailto:?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body);\n          };\n\n        })\n        .catch(function() {});\n\n    })\n    .catch(function() {\n      container.innerHTML = '<div class=\"eq-error\"><strong>Could not load equipment data.<\/strong><br>Please try again or contact support.<\/div>';\n    });\n\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Boti&#8217;s Corporation Equipment Portal Loading equipment data&#8230;<\/p>","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-12298","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Equipment Portal | BOTIS Corp<\/title>\n<meta name=\"robots\" content=\"noindex, nofollow\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Equipment Portal | BOTIS Corp\" \/>\n<meta property=\"og:description\" content=\"Boti&#8217;s Corporation Equipment Portal Loading equipment data&#8230;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/botiscorp.com\/es\/equipment-portal\/\" \/>\n<meta property=\"og:site_name\" content=\"Boti&#039;s Corp\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-07T12:22:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/botiscorp.com\/wp-content\/uploads\/2025\/01\/Botis_Logo-e1736684009823.png\" \/>\n\t<meta property=\"og:image:width\" content=\"200\" \/>\n\t<meta property=\"og:image:height\" content=\"54\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minuto\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/botiscorp.com\\\/equipment-portal\\\/\",\"url\":\"https:\\\/\\\/botiscorp.com\\\/equipment-portal\\\/\",\"name\":\"Equipment Portal | BOTIS Corp\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/botiscorp.com\\\/#website\"},\"datePublished\":\"2026-04-11T02:11:40+00:00\",\"dateModified\":\"2026-09-07T12:22:40+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/botiscorp.com\\\/equipment-portal\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/botiscorp.com\\\/equipment-portal\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/botiscorp.com\\\/equipment-portal\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/botiscorp.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Equipment Portal\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/botiscorp.com\\\/#website\",\"url\":\"https:\\\/\\\/botiscorp.com\\\/\",\"name\":\"BOTIS Corp\",\"description\":\"Forklifts, Lifts &amp; Trailers for Sale &amp; Rent | BOTIS Corp\",\"publisher\":{\"@id\":\"https:\\\/\\\/botiscorp.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/botiscorp.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/botiscorp.com\\\/#organization\",\"name\":\"BOTIS Corp\",\"url\":\"https:\\\/\\\/botiscorp.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/botiscorp.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/botiscorp.com\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/logoW_botiscorp.png\",\"contentUrl\":\"https:\\\/\\\/botiscorp.com\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/logoW_botiscorp.png\",\"width\":2449,\"height\":758,\"caption\":\"BOTIS Corp\"},\"image\":{\"@id\":\"https:\\\/\\\/botiscorp.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Equipment Portal | BOTIS Corp","robots":{"index":"noindex","follow":"nofollow"},"og_locale":"es_MX","og_type":"article","og_title":"Equipment Portal | BOTIS Corp","og_description":"Boti&#8217;s Corporation Equipment Portal Loading equipment data&#8230;","og_url":"https:\/\/botiscorp.com\/es\/equipment-portal\/","og_site_name":"Boti&#039;s Corp","article_modified_time":"2026-09-07T12:22:40+00:00","og_image":[{"width":200,"height":54,"url":"https:\/\/botiscorp.com\/wp-content\/uploads\/2025\/01\/Botis_Logo-e1736684009823.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Tiempo de lectura":"1 minuto"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/botiscorp.com\/equipment-portal\/","url":"https:\/\/botiscorp.com\/equipment-portal\/","name":"Equipment Portal | BOTIS Corp","isPartOf":{"@id":"https:\/\/botiscorp.com\/#website"},"datePublished":"2026-04-11T02:11:40+00:00","dateModified":"2026-09-07T12:22:40+00:00","breadcrumb":{"@id":"https:\/\/botiscorp.com\/equipment-portal\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/botiscorp.com\/equipment-portal\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/botiscorp.com\/equipment-portal\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/botiscorp.com\/"},{"@type":"ListItem","position":2,"name":"Equipment Portal"}]},{"@type":"WebSite","@id":"https:\/\/botiscorp.com\/#website","url":"https:\/\/botiscorp.com\/","name":"BOTIS Corp","description":"Forklifts, Lifts &amp; Trailers for Sale &amp; Rent | BOTIS Corp","publisher":{"@id":"https:\/\/botiscorp.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/botiscorp.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/botiscorp.com\/#organization","name":"BOTIS Corp","url":"https:\/\/botiscorp.com\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/botiscorp.com\/#\/schema\/logo\/image\/","url":"https:\/\/botiscorp.com\/wp-content\/uploads\/2025\/10\/logoW_botiscorp.png","contentUrl":"https:\/\/botiscorp.com\/wp-content\/uploads\/2025\/10\/logoW_botiscorp.png","width":2449,"height":758,"caption":"BOTIS Corp"},"image":{"@id":"https:\/\/botiscorp.com\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/botiscorp.com\/es\/wp-json\/wp\/v2\/pages\/12298","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/botiscorp.com\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/botiscorp.com\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/botiscorp.com\/es\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/botiscorp.com\/es\/wp-json\/wp\/v2\/comments?post=12298"}],"version-history":[{"count":19,"href":"https:\/\/botiscorp.com\/es\/wp-json\/wp\/v2\/pages\/12298\/revisions"}],"predecessor-version":[{"id":12371,"href":"https:\/\/botiscorp.com\/es\/wp-json\/wp\/v2\/pages\/12298\/revisions\/12371"}],"wp:attachment":[{"href":"https:\/\/botiscorp.com\/es\/wp-json\/wp\/v2\/media?parent=12298"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}