Se añade cantidad en articulos a añadir
Co-authored-by: darranz <darranz@users.noreply.github.com>
This commit is contained in:
parent
6503b9da9f
commit
355fc25095
@ -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' />
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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>
|
||||
);
|
||||
};
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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",
|
||||
|
||||
Loading…
Reference in New Issue
Block a user