diff --git a/client/src/app/quotes/components/editors/QuoteDetailsCardEditor.tsx b/client/src/app/quotes/components/editors/QuoteDetailsCardEditor.tsx index 1434d46..ad8fde6 100644 --- a/client/src/app/quotes/components/editors/QuoteDetailsCardEditor.tsx +++ b/client/src/app/quotes/components/editors/QuoteDetailsCardEditor.tsx @@ -41,7 +41,7 @@ export const QuoteDetailsCardEditor = ({ currency }: { currency: CurrencyData }) header: () => (
{t("quotes.form_fields.items.quantity.label")}
), - size: 8, + size: 6, cell: ({ row: { index } }) => { return ( { - return ; + return ( + + ); }, }, { @@ -80,29 +82,30 @@ export const QuoteDetailsCardEditor = ({ currency }: { currency: CurrencyData }) ); }, }, - /*{ + { id: "subtotal_price" as const, accessorKey: "subtotal_price", header: () => (
{t("quotes.form_fields.items.subtotal_price.label")}
), + size: 12, cell: ({ row: { index }, column: { id } }) => { return ( ); }, - },*/ + }, { id: "discount" as const, accessorKey: "discount", - size: 8, + size: 6, header: () => (
{t("quotes.form_fields.items.discount.label")}
), @@ -117,25 +120,26 @@ export const QuoteDetailsCardEditor = ({ currency }: { currency: CurrencyData }) ); }, }, - /*{ + { id: "total_price" as const, accessorKey: "total_price", header: () => (
{t("quotes.form_fields.items.total_price.label")}
), + size: 12, cell: ({ row: { index }, column: { id } }) => { return ( ); }, - },*/ + }, ], { enableDragHandleColumn: true, @@ -191,6 +195,8 @@ export const QuoteDetailsCardEditor = ({ currency }: { currency: CurrencyData }) const defaultLayout = [265, 440, 655]; const navCollapsedSize = 4; + return ; + return ( - {/**/} + diff --git a/client/src/app/quotes/edit.tsx b/client/src/app/quotes/edit.tsx index 759301b..89f04e1 100644 --- a/client/src/app/quotes/edit.tsx +++ b/client/src/app/quotes/edit.tsx @@ -68,11 +68,12 @@ export const QuoteEdit = () => { scale: 2, currency_code: data?.currency_code, }, - /*items: [ + items: [ { + description: "", quantity: { amount: undefined, - scale: 2, + scale: 0, }, subtotal_price: { amount: undefined, @@ -81,7 +82,7 @@ export const QuoteEdit = () => { }, discount: { amount: undefined, - scale: 0, + scale: 2, }, total_price: { amount: undefined, @@ -89,7 +90,7 @@ export const QuoteEdit = () => { currency_code: data?.currency_code, }, }, - ],*/ + ], }, }); @@ -129,6 +130,8 @@ export const QuoteEdit = () => { const { unsubscribe } = watch((_, { name, type }) => { const value = getValues(); + console.log(value); + if (name) { if (name === "currency_code") { setQuoteCurrency( @@ -146,8 +149,6 @@ export const QuoteEdit = () => { items.map((item, index) => { const itemTotals = calculateItemTotals(item); - console.log(itemTotals?.quantity.toObject()); - if (itemTotals === null) { return; } diff --git a/client/src/components/Forms/FormCurrencyField.tsx b/client/src/components/Forms/FormCurrencyField.tsx index 826f237..2aa1299 100644 --- a/client/src/components/Forms/FormCurrencyField.tsx +++ b/client/src/components/Forms/FormCurrencyField.tsx @@ -61,6 +61,8 @@ export const FormCurrencyField = React.forwardRef(""); + const transform = { input: (value: any) => { if (typeof value !== "object") { @@ -73,11 +75,20 @@ export const FormCurrencyField = React.forwardRef { const { value: amount } = values ?? { value: null }; + setOldValue(amount ?? ""); + const moneyOrError = MoneyValue.createFromFormattedValue(amount, currency.code); if (moneyOrError.isFailure) { throw moneyOrError.error; @@ -126,6 +137,7 @@ export const FormCurrencyField = React.forwardRef + {description && {description}} diff --git a/client/src/components/Forms/FormTextField.tsx b/client/src/components/Forms/FormTextField.tsx index 7c4d5c4..fd982e5 100644 --- a/client/src/components/Forms/FormTextField.tsx +++ b/client/src/components/Forms/FormTextField.tsx @@ -1,7 +1,7 @@ import { cn } from "@/lib/utils"; import { FormControl, FormDescription, FormField, FormItem, Input, InputProps } from "@/ui"; -import { cva } from "class-variance-authority"; +import { cva, type VariantProps } from "class-variance-authority"; import * as React from "react"; import { createElement } from "react"; import { FieldPath, FieldValues, UseControllerProps, useFormContext } from "react-hook-form"; @@ -9,7 +9,7 @@ import { FormErrorMessage } from "./FormErrorMessage"; import { FormLabel, FormLabelProps } from "./FormLabel"; import { FormInputProps, FormInputWithIconProps } from "./FormProps"; -const FormTextFieldVariants = cva("", { +const formTextFieldVariants = cva("", { variants: { variant: { default: "", @@ -31,7 +31,8 @@ export type FormTextFieldProps< FormInputProps & Partial & FormInputWithIconProps & - UseControllerProps; + UseControllerProps & + VariantProps; export const FormTextField = React.forwardRef( (props, ref) => { @@ -95,7 +96,7 @@ export const FormTextField = React.forwardRef diff --git a/client/src/lib/calc.ts b/client/src/lib/calc.ts index 494d004..0ce34df 100644 --- a/client/src/lib/calc.ts +++ b/client/src/lib/calc.ts @@ -12,8 +12,14 @@ export const calculateItemTotals = (item: { discount: Percentage; totalPrice: MoneyValue; } | null => { + console.log(item); + const { quantity: quantity_dto, unit_price: unit_price_dto, discount: discount_dto } = item; + if (quantity_dto === "" || unit_price_dto === "") { + return null; + } + const quantityOrError = Quantity.create(quantity_dto); if (quantityOrError.isFailure) { throw quantityOrError.error; diff --git a/shared/lib/contexts/common/domain/entities/MoneyValue.ts b/shared/lib/contexts/common/domain/entities/MoneyValue.ts index 1a378be..008842d 100644 --- a/shared/lib/contexts/common/domain/entities/MoneyValue.ts +++ b/shared/lib/contexts/common/domain/entities/MoneyValue.ts @@ -141,8 +141,6 @@ export class MoneyValue extends ValueObject implements IMoneyValue { scale = defaultMoneyValueProps.scale, } = props || {}; - console.log(props, { amount, currencyCode, scale }); - const validationResult = MoneyValue.validate(amount, options); if (validationResult.isFailure) {