Se añade cantidad en articulos a añadir

Co-authored-by: darranz <darranz@users.noreply.github.com>
This commit is contained in:
David Arranz 2024-11-12 12:28:22 +01:00
parent 6503b9da9f
commit 355fc25095
6 changed files with 54 additions and 13 deletions

View File

@ -9,13 +9,26 @@ import { IListArticles_Response_DTO, MoneyValue } from "@shared/contexts";
import { ColumnDef, Row } from "@tanstack/react-table";
import { t } from "i18next";
import { PackagePlusIcon } from "lucide-react";
import { useMemo } from "react";
import { useMemo, useState } from "react";
import { useNavigate } from "react-router-dom";
export const CatalogPickerDataTable = ({ onSelect }: { onSelect: (data: unknown) => void }) => {
export const CatalogPickerDataTable = ({
onSelect,
}: {
onSelect: (data: unknown, quantity: number) => void;
}) => {
const navigate = useNavigate();
const { pagination, globalFilter, isFiltered } = useDataTableContext();
const [quantities, setQuantities] = useState<number[]>([]);
const handleQuantity = (index: number, quantity: number) => {
setQuantities((prev) => {
prev[index] = quantity;
return prev;
});
};
const { data, isPending, isError, error } = useCatalogList({
pagination: {
pageIndex: pagination.pageIndex,
@ -48,6 +61,26 @@ export const CatalogPickerDataTable = ({ onSelect }: { onSelect: (data: unknown)
return <div className='text-right'>{price.toFormat()}</div>;
},
},
{
id: "quantity" as const,
accessorKey: "quantity",
header: () => <div className='text-right'>{t("catalog.list.columns.quantity")}</div>,
cell: ({ row: { index } }) => {
return (
<input
type='number'
name='quantity'
defaultValue={1}
min={1}
value={quantities[index]}
onChange={(event) => {
event.preventDefault();
handleQuantity(index, +event.target.value);
}}
/>
);
},
},
{
id: "row-actions",
header: () => null,
@ -58,7 +91,7 @@ export const CatalogPickerDataTable = ({ onSelect }: { onSelect: (data: unknown)
className='h-8 gap-1'
onClick={(event) => {
event.preventDefault();
onSelect && onSelect(row.original);
onSelect && onSelect(row.original, quantities[row.index]);
}}
>
<PackagePlusIcon className='h-3.5 w-3.5' />

View File

@ -214,12 +214,12 @@ export const QuoteDetailsCardEditor = ({
);
const handleAppendCatalogArticle = useCallback(
(article: any) => {
(article: any, quantity: number = 1) => {
console.log(article);
fieldActions.append({
...article,
quantity: {
amount: 100,
amount: 100 * quantity,
scale: Quantity.DEFAULT_SCALE,
},
unit_price: article.retail_price,

View File

@ -318,9 +318,9 @@ export const QuoteEdit = () => {
<div className='flex items-center justify-center gap-2 md:hidden'>
<Button variant='outline' size='sm'>
{t("quotes.create.buttons.discard")}
{t("common.discard")}
</Button>
<Button size='sm'>{t("quotes.create.buttons.save_quote")}</Button>
<Button size='sm'>{t("quotes.edit.buttons.save_quote")}</Button>
</div>
</div>
</form>

View File

@ -9,7 +9,7 @@ export const BackHistoryButton = () => {
return (
<Button variant='outline' size='icon' className='h-7 w-7' onClick={() => navigate(-1)}>
<ChevronLeftIcon className='w-4 h-4' />
<span className='sr-only'>{t("quotes.common.back")}</span>
<span className='sr-only'>{t("common.back")}</span>
</Button>
);
};

View File

@ -119,7 +119,8 @@
"columns": {
"description": "Description",
"points": "Points",
"retail_price": "Retail price"
"retail_price": "Retail price",
"quantity": "quantity"
}
}
},
@ -201,7 +202,10 @@
}
},
"edit": {
"title": "Quote"
"title": "Quote",
"buttons": {
"save_quote": "Save quote"
}
},
"downloading_dialog": {
"title": "Downloading quote",

View File

@ -8,7 +8,7 @@
"save": "Guardar",
"save_close": "Guardar y Cerrar",
"accept": "Aceptar",
"discard": "Decartar",
"discard": "Descartar",
"hide": "Ocultar",
"back": "Volver",
"upload": "Cargar",
@ -119,7 +119,8 @@
"columns": {
"description": "Descripción",
"points": "Puntos",
"retail_price": "PVP"
"retail_price": "PVP",
"quantity": "Cantidad"
}
}
},
@ -201,7 +202,10 @@
}
},
"edit": {
"title": "Cotización"
"title": "Cotización",
"buttons": {
"save_quote": "Guardar cotización"
}
},
"downloading_dialog": {
"title": "Descargando cotización",