Compare commits

..

3 Commits

Author SHA1 Message Date
2a1d49d1c4 Métodos de pago 2026-05-22 10:06:47 +02:00
d2a314edc0 Métodos de pago 2026-05-22 10:06:24 +02:00
77fec8fc77 . 2026-05-22 10:01:15 +02:00
6 changed files with 51 additions and 44 deletions

View File

@ -1,8 +1,11 @@
import type { Name, TextValue, UniqueID } from "@repo/rdx-ddd";
import type { Maybe } from "@repo/rdx-utils";
export type PaymentMethodDetail = {
id: string;
name: string;
type: string;
id: UniqueID;
companyId: UniqueID;
name: Name;
description: Maybe<TextValue>;
is_active: boolean;
created_at: string;
updated_at: string;
is_system: boolean;
};

View File

@ -1,19 +1,23 @@
import type { GetPaymentMethodByIdResponseDTO } from "@erp/catalogs/common";
import type { ISnapshotBuilder } from "@erp/core/api";
import { toNullable } from "@repo/rdx-ddd";
import { maybeToNullable } from "@repo/rdx-ddd";
import type { PaymentMethod } from "../../../../domain";
export type PaymentMethodFullSnapshot = GetPaymentMethodByIdResponseDTO;
export interface IPaymentMethodFullSnapshotBuilder
extends ISnapshotBuilder<PaymentMethod, GetPaymentMethodByIdResponseDTO> {}
extends ISnapshotBuilder<PaymentMethod, PaymentMethodFullSnapshot> {}
export class PaymentMethodFullSnapshotBuilder implements IPaymentMethodFullSnapshotBuilder {
public toOutput(paymentMethod: PaymentMethod): GetPaymentMethodByIdResponseDTO {
public toOutput(paymentMethod: PaymentMethod): PaymentMethodFullSnapshot {
return {
id: paymentMethod.id.toPrimitive(),
company_id: paymentMethod.companyId.toPrimitive(),
name: paymentMethod.name.toPrimitive(),
description: toNullable(paymentMethod.description, (value) => value.toPrimitive()),
description: maybeToNullable(paymentMethod.description, (value) => value.toPrimitive()),
is_active: paymentMethod.isActive,
is_system: paymentMethod.isSystem,
};

View File

@ -11,7 +11,9 @@ export class PaymentMethodSummarySnapshotBuilder implements IPaymentMethodSummar
return {
id: paymentMethod.id.toString(),
company_id: paymentMethod.companyId.toString(),
name: paymentMethod.name.toString(),
is_system: paymentMethod.isSystem,
is_active: paymentMethod.isActive,
};

View File

@ -1,2 +1,3 @@
export * from "./request";
export * from "./response";
export * from "./shared";

View File

@ -1,4 +1,3 @@
import { SpainTaxCatalogProvider } from "@erp/core";
import { ErrorAlert, NotFoundCard, PageHeader } from "@erp/core/components";
import {
FormCommitButtonGroup,
@ -7,7 +6,6 @@ import {
} from "@erp/core/hooks";
import { SelectCustomerDialog } from "@erp/customers";
import { AppContent, AppHeader, BackHistoryButton } from "@repo/rdx-ui/components";
import { useMemo } from "react";
import { FormProvider } from "react-hook-form";
import { useTranslation } from "../../../../i18n";
@ -17,7 +15,6 @@ import { ProformaUpdateEditorForm } from "../editors";
export const ProformaUpdatePage = () => {
const { t } = useTranslation();
const taxCatalog = useMemo(() => SpainTaxCatalogProvider(), []);
const { updateCtrl, selectCustomerCtrl, returnTo } = useUpdateProformaPageController();

View File

@ -16,44 +16,44 @@ export const CustomerCreatePage = () => {
const { form, formId, onSubmit, resetForm, isCreating, isCreateError, createError } = createCtrl;
return (
<UnsavedChangesProvider isDirty={form.formState.isDirty}>
<AppHeader>
<PageHeader
description={t("pages.create.description")}
onBackClick={() => navigate("/customers/list")}
rightSlot={
<FormCommitButtonGroup
cancel={{
to: "/customers/list",
}}
disabled={createCtrl.isCreating}
isLoading={createCtrl.isCreating}
onReset={createCtrl.form.formState.isDirty ? createCtrl.resetForm : undefined}
submit={{
formId: createCtrl.formId,
}}
/>
}
title={t("pages.create.title")}
/>
</AppHeader>
<AppContent>
{isCreateError && (
<ErrorAlert
message={(createError as Error)?.message ?? t("pages.create.errorMsg")}
title={t("pages.create.errorTitle")}
<FormProvider {...form}>
<UnsavedChangesProvider isDirty={form.formState.isDirty}>
<AppHeader className="mx-auto max-w-7xl space-y-4">
<PageHeader
description={t("pages.create.description")}
onBackClick={() => navigate("/customers/list")}
rightSlot={
<FormCommitButtonGroup
cancel={{
to: "/customers/list",
}}
disabled={createCtrl.isCreating}
isLoading={createCtrl.isCreating}
onReset={createCtrl.form.formState.isDirty ? createCtrl.resetForm : undefined}
submit={{
formId: createCtrl.formId,
}}
/>
}
title={t("pages.create.title")}
/>
)}
</AppHeader>
<AppContent className="mx-auto max-w-7xl space-y-4">
{isCreateError && (
<ErrorAlert
message={(createError as Error)?.message ?? t("pages.create.errorMsg")}
title={t("pages.create.errorTitle")}
/>
)}
<FormProvider {...form}>
<CustomerCreateEditorForm
className="bg-white rounded-xl border shadow-xl max-w-7xl mx-auto mt-6"
formId={formId}
onSubmit={onSubmit}
/>
</FormProvider>
</AppContent>
</UnsavedChangesProvider>
</AppContent>
</UnsavedChangesProvider>
</FormProvider>
);
};