Facturas de cliente

This commit is contained in:
David Arranz 2025-10-06 19:50:59 +02:00
parent ec86f74830
commit d4a4ab7a31
3 changed files with 19 additions and 2 deletions

View File

@ -7,7 +7,7 @@ import { useTranslation } from "../../../i18n";
import { CustomerInvoiceFormData } from "../../../schemas"; import { CustomerInvoiceFormData } from "../../../schemas";
import { CustomItemViewProps } from "./types"; import { CustomItemViewProps } from "./types";
export interface BlocksViewProps extends CustomItemViewProps {} export interface BlocksViewProps extends CustomItemViewProps { }
const formatCurrency = (amount: number) => { const formatCurrency = (amount: number) => {
return new Intl.NumberFormat("es-ES", { return new Intl.NumberFormat("es-ES", {

View File

@ -16,9 +16,12 @@ import {
import { ChevronDownIcon, ChevronUpIcon, CopyIcon, Plus, TrashIcon } from "lucide-react"; import { ChevronDownIcon, ChevronUpIcon, CopyIcon, Plus, TrashIcon } from "lucide-react";
import { TaxesMultiSelectField } from '@erp/core/components';
import { useMoney } from '@erp/core/hooks'; import { useMoney } from '@erp/core/hooks';
import { useEffect, useState } from 'react'; import { useEffect, useState } from 'react';
import { useFormContext } from 'react-hook-form';
import { useCalculateItemAmounts } from '../../../hooks'; import { useCalculateItemAmounts } from '../../../hooks';
import { useTranslation } from '../../../i18n';
import { CustomerInvoiceItemFormData } from '../../../schemas'; import { CustomerInvoiceItemFormData } from '../../../schemas';
import { HoverCardTotalsSummary } from './hover-card-total-summary'; import { HoverCardTotalsSummary } from './hover-card-total-summary';
import { CustomItemViewProps } from "./types"; import { CustomItemViewProps } from "./types";
@ -26,6 +29,8 @@ import { CustomItemViewProps } from "./types";
export interface TableViewProps extends CustomItemViewProps { } export interface TableViewProps extends CustomItemViewProps { }
export const TableView = ({ items, actions }: TableViewProps) => { export const TableView = ({ items, actions }: TableViewProps) => {
const { t } = useTranslation();
const { control } = useFormContext<CustomerInvoiceItemFormData>();
const { format } = useMoney(); const { format } = useMoney();
const calculateItemAmounts = useCalculateItemAmounts(); const calculateItemAmounts = useCalculateItemAmounts();
const [lines, setLines] = useState<CustomerInvoiceItemFormData[]>(items); const [lines, setLines] = useState<CustomerInvoiceItemFormData[]>(items);
@ -202,6 +207,18 @@ export const TableView = ({ items, actions }: TableViewProps) => {
/> />
</TableCell> </TableCell>
<TableCell className="text-right">
<TaxesMultiSelectField
control={control}
name={`item.${i}.tax_codes`}
required
label={t("form_fields.item.tax_codes.label")}
placeholder={t("form_fields.item.tax_codes.placeholder")}
description={t("form_fields.item.tax_codes.description")}
/>
</TableCell>
{/* TOTAL */} {/* TOTAL */}
<TableCell className="text-right font-mono"> <TableCell className="text-right font-mono">
<HoverCardTotalsSummary item={item}> <HoverCardTotalsSummary item={item}>

View File

@ -132,7 +132,7 @@ export const CustomerInvoiceUpdatePage = () => {
return ( return (
<UnsavedChangesProvider isDirty={form.formState.isDirty}> <UnsavedChangesProvider isDirty={form.formState.isDirty}>
<AppHeader className="sticky"> <AppHeader>
<AppBreadcrumb /> <AppBreadcrumb />
<PageHeader <PageHeader
status={invoiceData.status} status={invoiceData.status}