From adaf2fb49ca58d5ed9919c85a6f4628555cb4a81 Mon Sep 17 00:00:00 2001 From: Tiago Yamamoto Date: Mon, 22 Dec 2025 16:00:52 -0300 Subject: [PATCH] Fix catalog price formatting --- .../src/components/CatalogoProdutosList.tsx | 68 ++++++++++++------- .../components/CatalogoProdutosList_new.tsx | 62 ++++++++++++----- 2 files changed, 86 insertions(+), 44 deletions(-) diff --git a/saveinmed-frontend/src/components/CatalogoProdutosList.tsx b/saveinmed-frontend/src/components/CatalogoProdutosList.tsx index 018a96d..71ef583 100644 --- a/saveinmed-frontend/src/components/CatalogoProdutosList.tsx +++ b/saveinmed-frontend/src/components/CatalogoProdutosList.tsx @@ -31,6 +31,18 @@ const CatalogoProdutosList: React.FC = ({ onNextPage, onRowClick, }) => { + const formatCurrency = (value: unknown) => { + if (value === null || value === undefined || value === "") { + return null; + } + const numericValue = + typeof value === "number" ? value : Number(String(value)); + if (Number.isNaN(numericValue)) { + return null; + } + return numericValue.toFixed(2); + }; + const totalPages = Math.ceil(totalProdutos / pageSize); const startItem = (currentPage - 1) * pageSize + 1; const endItem = Math.min(currentPage * pageSize, totalProdutos); @@ -104,33 +116,35 @@ const CatalogoProdutosList: React.FC = ({ { key: "preco-original", header: "Preço Original", - render: (produto: Models.Document) => ( -
- {(produto as any)["preco-original"] ? ( - - R$ {(produto as any)["preco-original"].toFixed(2)} - - ) : ( - N/A - )} -
- ), + render: (produto: Models.Document) => { + const valor = formatCurrency((produto as any)["preco-original"]); + return ( +
+ {valor ? ( + R$ {valor} + ) : ( + N/A + )} +
+ ); + }, width: "w-28", }, { key: "preco-atual", header: "Preço Atual", - render: (produto: Models.Document) => ( -
- {(produto as any)["preco-atual"] ? ( - - R$ {(produto as any)["preco-atual"].toFixed(2)} - - ) : ( - N/A - )} -
- ), + render: (produto: Models.Document) => { + const valor = formatCurrency((produto as any)["preco-atual"]); + return ( +
+ {valor ? ( + R$ {valor} + ) : ( + N/A + )} +
+ ); + }, width: "w-24", }, { @@ -154,12 +168,14 @@ const CatalogoProdutosList: React.FC = ({ header: "Subst. Tributária", render: (produto: Models.Document) => { const produtoData = produto as any; - const valor = produtoData["valor-substituicao-tributaria"]; + const valor = formatCurrency( + produtoData["valor-substituicao-tributaria"] + ); return (
{valor ? ( - R$ {valor.toFixed(2)} + R$ {valor} ) : ( N/A @@ -174,12 +190,12 @@ const CatalogoProdutosList: React.FC = ({ header: "Preço NF", render: (produto: Models.Document) => { const produtoData = produto as any; - const preco = produtoData["preco-nf"]; + const preco = formatCurrency(produtoData["preco-nf"]); return (
{preco ? ( - R$ {preco.toFixed(2)} + R$ {preco} ) : ( N/A diff --git a/saveinmed-frontend/src/components/CatalogoProdutosList_new.tsx b/saveinmed-frontend/src/components/CatalogoProdutosList_new.tsx index b3f20c9..659dcd4 100644 --- a/saveinmed-frontend/src/components/CatalogoProdutosList_new.tsx +++ b/saveinmed-frontend/src/components/CatalogoProdutosList_new.tsx @@ -29,6 +29,18 @@ const CatalogoProdutosList: React.FC = ({ onNextPage, onRowClick, }) => { + const formatCurrency = (value: unknown) => { + if (value === null || value === undefined || value === "") { + return null; + } + const numericValue = + typeof value === "number" ? value : Number(String(value)); + if (Number.isNaN(numericValue)) { + return null; + } + return numericValue.toFixed(2); + }; + const totalPages = Math.ceil(totalProdutos / pageSize); const startItem = (currentPage - 1) * pageSize + 1; const endItem = Math.min(currentPage * pageSize, totalProdutos); @@ -123,26 +135,40 @@ const CatalogoProdutosList: React.FC = ({
-
- {(produto as any)["preco-original"] ? ( - - R$ {(produto as any)["preco-original"].toFixed(2)} - - ) : ( - N/A - )} -
+ {(() => { + const precoOriginal = formatCurrency( + (produto as any)["preco-original"] + ); + return ( +
+ {precoOriginal ? ( + + R$ {precoOriginal} + + ) : ( + N/A + )} +
+ ); + })()} -
- {(produto as any)["preco-atual"] ? ( - - R$ {(produto as any)["preco-atual"].toFixed(2)} - - ) : ( - N/A - )} -
+ {(() => { + const precoAtual = formatCurrency( + (produto as any)["preco-atual"] + ); + return ( +
+ {precoAtual ? ( + + R$ {precoAtual} + + ) : ( + N/A + )} +
+ ); + })()}