Merge pull request #32 from rede5/codex/fix-typeerror-in-login-flow
Fix catalog price formatting
This commit is contained in:
commit
a873d29160
2 changed files with 86 additions and 44 deletions
|
|
@ -31,6 +31,18 @@ const CatalogoProdutosList: React.FC<CatalogoProdutosListProps> = ({
|
|||
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<CatalogoProdutosListProps> = ({
|
|||
{
|
||||
key: "preco-original",
|
||||
header: "Preço Original",
|
||||
render: (produto: Models.Document) => (
|
||||
<div className="text-sm">
|
||||
{(produto as any)["preco-original"] ? (
|
||||
<span className="font-medium text-green-600">
|
||||
R$ {(produto as any)["preco-original"].toFixed(2)}
|
||||
</span>
|
||||
) : (
|
||||
<span className="text-gray-400">N/A</span>
|
||||
)}
|
||||
</div>
|
||||
),
|
||||
render: (produto: Models.Document) => {
|
||||
const valor = formatCurrency((produto as any)["preco-original"]);
|
||||
return (
|
||||
<div className="text-sm">
|
||||
{valor ? (
|
||||
<span className="font-medium text-green-600">R$ {valor}</span>
|
||||
) : (
|
||||
<span className="text-gray-400">N/A</span>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
},
|
||||
width: "w-28",
|
||||
},
|
||||
{
|
||||
key: "preco-atual",
|
||||
header: "Preço Atual",
|
||||
render: (produto: Models.Document) => (
|
||||
<div className="text-sm">
|
||||
{(produto as any)["preco-atual"] ? (
|
||||
<span className="font-medium text-blue-600">
|
||||
R$ {(produto as any)["preco-atual"].toFixed(2)}
|
||||
</span>
|
||||
) : (
|
||||
<span className="text-gray-400">N/A</span>
|
||||
)}
|
||||
</div>
|
||||
),
|
||||
render: (produto: Models.Document) => {
|
||||
const valor = formatCurrency((produto as any)["preco-atual"]);
|
||||
return (
|
||||
<div className="text-sm">
|
||||
{valor ? (
|
||||
<span className="font-medium text-blue-600">R$ {valor}</span>
|
||||
) : (
|
||||
<span className="text-gray-400">N/A</span>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
},
|
||||
width: "w-24",
|
||||
},
|
||||
{
|
||||
|
|
@ -154,12 +168,14 @@ const CatalogoProdutosList: React.FC<CatalogoProdutosListProps> = ({
|
|||
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 (
|
||||
<div className="text-sm">
|
||||
{valor ? (
|
||||
<span className="font-medium text-purple-600">
|
||||
R$ {valor.toFixed(2)}
|
||||
R$ {valor}
|
||||
</span>
|
||||
) : (
|
||||
<span className="text-gray-400">N/A</span>
|
||||
|
|
@ -174,12 +190,12 @@ const CatalogoProdutosList: React.FC<CatalogoProdutosListProps> = ({
|
|||
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 (
|
||||
<div className="text-sm">
|
||||
{preco ? (
|
||||
<span className="font-medium text-indigo-600">
|
||||
R$ {preco.toFixed(2)}
|
||||
R$ {preco}
|
||||
</span>
|
||||
) : (
|
||||
<span className="text-gray-400">N/A</span>
|
||||
|
|
|
|||
|
|
@ -29,6 +29,18 @@ const CatalogoProdutosList: React.FC<CatalogoProdutosListProps> = ({
|
|||
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<CatalogoProdutosListProps> = ({
|
|||
</div>
|
||||
</td>
|
||||
<td className="px-6 py-4 whitespace-nowrap">
|
||||
<div className="text-sm">
|
||||
{(produto as any)["preco-original"] ? (
|
||||
<span className="font-medium text-green-600">
|
||||
R$ {(produto as any)["preco-original"].toFixed(2)}
|
||||
</span>
|
||||
) : (
|
||||
<span className="text-gray-400">N/A</span>
|
||||
)}
|
||||
</div>
|
||||
{(() => {
|
||||
const precoOriginal = formatCurrency(
|
||||
(produto as any)["preco-original"]
|
||||
);
|
||||
return (
|
||||
<div className="text-sm">
|
||||
{precoOriginal ? (
|
||||
<span className="font-medium text-green-600">
|
||||
R$ {precoOriginal}
|
||||
</span>
|
||||
) : (
|
||||
<span className="text-gray-400">N/A</span>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
})()}
|
||||
</td>
|
||||
<td className="px-6 py-4 whitespace-nowrap">
|
||||
<div className="text-sm">
|
||||
{(produto as any)["preco-atual"] ? (
|
||||
<span className="font-medium text-blue-600">
|
||||
R$ {(produto as any)["preco-atual"].toFixed(2)}
|
||||
</span>
|
||||
) : (
|
||||
<span className="text-gray-400">N/A</span>
|
||||
)}
|
||||
</div>
|
||||
{(() => {
|
||||
const precoAtual = formatCurrency(
|
||||
(produto as any)["preco-atual"]
|
||||
);
|
||||
return (
|
||||
<div className="text-sm">
|
||||
{precoAtual ? (
|
||||
<span className="font-medium text-blue-600">
|
||||
R$ {precoAtual}
|
||||
</span>
|
||||
) : (
|
||||
<span className="text-gray-400">N/A</span>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
})()}
|
||||
</td>
|
||||
<td className="px-6 py-4 whitespace-nowrap">
|
||||
<div className="text-sm">
|
||||
|
|
|
|||
Loading…
Reference in a new issue