Untitled

 avatar
unknown
plain_text
24 days ago
7.6 kB
5
Indexable
<fieldset checkout-container="" class="w-commerce-commercecheckoutblockcontent"><div class="w-commerce-commercecheckoutsummarylineitem"><div>Subtotal</div><div data-wf-bindings="%5B%7B%22innerHTML%22%3A%7B%22type%22%3A%22CommercePrice%22%2C%22filter%22%3A%7B%22type%22%3A%22price%22%2C%22params%22%3A%5B%5D%7D%2C%22dataPath%22%3A%22database.commerceOrder.subtotal%22%7D%7D%5D" class="ecommerce---2">$&nbsp;78.00&nbsp;USD</div></div><script type="text/x-wf-template" id="wf-template-675768009877110edda7c0890000000000a0">%3Cdiv%20class%3D%22w-commerce-commercecheckoutordersummaryextraitemslistitem%22%3E%3Cdiv%20data-wf-bindings%3D%22%255B%257B%2522innerHTML%2522%253A%257B%2522type%2522%253A%2522PlainText%2522%252C%2522filter%2522%253A%257B%2522type%2522%253A%2522identity%2522%252C%2522params%2522%253A%255B%255D%257D%252C%2522dataPath%2522%253A%2522database.commerceOrder.extraItems%255B%255D.name%2522%257D%257D%255D%22%20class%3D%22w-dyn-bind-empty%22%3E%3C%2Fdiv%3E%3Cdiv%20data-wf-bindings%3D%22%255B%257B%2522innerHTML%2522%253A%257B%2522type%2522%253A%2522CommercePrice%2522%252C%2522filter%2522%253A%257B%2522type%2522%253A%2522price%2522%252C%2522params%2522%253A%255B%255D%257D%252C%2522dataPath%2522%253A%2522database.commerceOrder.extraItems%255B%255D.price%2522%257D%257D%255D%22%20class%3D%22ecommerce---2%22%3E%24%C2%A00.00%C2%A0USD%3C%2Fdiv%3E%3C%2Fdiv%3E</script><div class="w-commerce-commercecheckoutordersummaryextraitemslist" data-wf-collection="database.commerceOrder.extraItems" data-wf-template-id="wf-template-675768009877110edda7c0890000000000a0"><div class="w-commerce-commercecheckoutordersummaryextraitemslistitem"><div data-wf-bindings="%5B%7B%22innerHTML%22%3A%7B%22type%22%3A%22PlainText%22%2C%22filter%22%3A%7B%22type%22%3A%22identity%22%2C%22params%22%3A%5B%5D%7D%2C%22dataPath%22%3A%22database.commerceOrder.extraItems.0.name%22%7D%7D%5D">State Taxes</div><div data-wf-bindings="%5B%7B%22innerHTML%22%3A%7B%22type%22%3A%22CommercePrice%22%2C%22filter%22%3A%7B%22type%22%3A%22price%22%2C%22params%22%3A%5B%5D%7D%2C%22dataPath%22%3A%22database.commerceOrder.extraItems.0.price%22%7D%7D%5D" class="ecommerce---2">$&nbsp;4.88&nbsp;USD</div></div><div class="w-commerce-commercecheckoutordersummaryextraitemslistitem"><div data-wf-bindings="%5B%7B%22innerHTML%22%3A%7B%22type%22%3A%22PlainText%22%2C%22filter%22%3A%7B%22type%22%3A%22identity%22%2C%22params%22%3A%5B%5D%7D%2C%22dataPath%22%3A%22database.commerceOrder.extraItems.1.name%22%7D%7D%5D">County Taxes</div><div data-wf-bindings="%5B%7B%22innerHTML%22%3A%7B%22type%22%3A%22CommercePrice%22%2C%22filter%22%3A%7B%22type%22%3A%22price%22%2C%22params%22%3A%5B%5D%7D%2C%22dataPath%22%3A%22database.commerceOrder.extraItems.1.price%22%7D%7D%5D" class="ecommerce---2">$&nbsp;0.78&nbsp;USD</div></div><div class="w-commerce-commercecheckoutordersummaryextraitemslistitem"><div data-wf-bindings="%5B%7B%22innerHTML%22%3A%7B%22type%22%3A%22PlainText%22%2C%22filter%22%3A%7B%22type%22%3A%22identity%22%2C%22params%22%3A%5B%5D%7D%2C%22dataPath%22%3A%22database.commerceOrder.extraItems.2.name%22%7D%7D%5D">Special District Taxes</div><div data-wf-bindings="%5B%7B%22innerHTML%22%3A%7B%22type%22%3A%22CommercePrice%22%2C%22filter%22%3A%7B%22type%22%3A%22price%22%2C%22params%22%3A%5B%5D%7D%2C%22dataPath%22%3A%22database.commerceOrder.extraItems.2.price%22%7D%7D%5D" class="ecommerce---2">$&nbsp;1.76&nbsp;USD</div></div><div class="w-commerce-commercecheckoutordersummaryextraitemslistitem"><div data-wf-bindings="%5B%7B%22innerHTML%22%3A%7B%22type%22%3A%22PlainText%22%2C%22filter%22%3A%7B%22type%22%3A%22identity%22%2C%22params%22%3A%5B%5D%7D%2C%22dataPath%22%3A%22database.commerceOrder.extraItems.3.name%22%7D%7D%5D">Free Shipping Over $50</div><div data-wf-bindings="%5B%7B%22innerHTML%22%3A%7B%22type%22%3A%22CommercePrice%22%2C%22filter%22%3A%7B%22type%22%3A%22price%22%2C%22params%22%3A%5B%5D%7D%2C%22dataPath%22%3A%22database.commerceOrder.extraItems.3.price%22%7D%7D%5D" class="ecommerce---2">$&nbsp;0.00&nbsp;USD</div></div></div><div class="w-commerce-commercecheckoutsummarylineitem"><div>Taxes</div><div class="ecommerce---2">$ 0.00 USD</div></div><div class="w-commerce-commercecheckoutsummarylineitem"><div>Total</div><div data-wf-bindings="%5B%7B%22innerHTML%22%3A%7B%22type%22%3A%22CommercePrice%22%2C%22filter%22%3A%7B%22type%22%3A%22price%22%2C%22params%22%3A%5B%5D%7D%2C%22dataPath%22%3A%22database.commerceOrder.total%22%7D%7D%5D" class="w-commerce-commercecheckoutsummarytotal ecommerce---2">$&nbsp;85.42&nbsp;USD</div><div class="hide w-embed w-script"><script>
  document.addEventListener("DOMContentLoaded", function () {
    // Seleccionamos el contenedor principal
    const checkoutContainer = document.querySelector("[checkout-container]");
    if (!checkoutContainer) return;

    // Inicializamos la suma de todos los taxes
    let totalTaxes = 0;

    // Obtenemos todos los divs que contengan la palabra "Taxes", excluyendo "Total"
    const taxRows = Array.from(checkoutContainer.querySelectorAll("div")).filter(
      (div) =>
        div.textContent.includes("Taxes") &&
        !div.textContent.includes("Total") // Nos aseguramos de no afectar "Total"
    );

    // Iteramos sobre cada fila para sumar los valores y ocultarlas
    taxRows.forEach((taxRow) => {
      // Buscamos el sibling siguiente para obtener el monto
      const sibling = taxRow.nextElementSibling;
      if (sibling) {
        const match = sibling.textContent.match(/\$\s?([\d,]+\.\d{2})\sUSD/);
        if (match) {
          // Convertimos el monto a número y lo sumamos
          totalTaxes += parseFloat(match[1].replace(/,/g, ""));
        }
      }

      // Ocultamos la fila completa (el div padre), no la eliminamos
      const parentRow = taxRow.closest(".w-commerce-commercecheckoutsummarylineitem");
      if (parentRow) parentRow.style.display = "none";
    });

    // Crear una nueva fila para mostrar los Taxes consolidados
    const newTaxRow = document.createElement("div");
    newTaxRow.className = "w-commerce-commercecheckoutsummarylineitem";

    // Primer div (Título)
    const titleDiv = document.createElement("div");
    titleDiv.textContent = "Taxes";

    // Segundo div (Monto formateado)
    const amountDiv = document.createElement("div");
    amountDiv.className = "ecommerce---2";
    amountDiv.textContent = `$ ${totalTaxes.toFixed(2)} USD`;

    // Añadimos los divs a la nueva fila
    newTaxRow.appendChild(titleDiv);
    newTaxRow.appendChild(amountDiv);

    // Encontramos el row con el Total y aseguramos insertar antes de él
    const totalRow = Array.from(checkoutContainer.children).find((child) =>
      child.textContent.includes("Total")
    );
    if (totalRow) {
      checkoutContainer.insertBefore(newTaxRow, totalRow);
    }

    // Observar cambios en el contenedor por si los taxes se actualizan
    const observer = new MutationObserver(() => {
      let updatedTaxes = 0;

      // Recalcular los taxes sumando los valores visibles
      taxRows.forEach((taxRow) => {
        const sibling = taxRow.nextElementSibling;
        if (sibling) {
          const match = sibling.textContent.match(/\$\s?([\d,]+\.\d{2})\sUSD/);
          if (match) {
            updatedTaxes += parseFloat(match[1].replace(/,/g, ""));
          }
        }
      });

      // Actualizamos el total de taxes en la nueva fila
      amountDiv.textContent = `$ ${updatedTaxes.toFixed(2)} USD`;
    });

    // Configuración del observer para monitorear cambios en los taxes
    observer.observe(checkoutContainer, { childList: true, subtree: true });
  });
</script></div></div></fieldset>
Leave a Comment