From 4b4599362fd3edc50144c13024676bc12e03ab16 Mon Sep 17 00:00:00 2001 From: Kevin_Ramirez Date: Wed, 21 Jan 2026 15:43:19 -0600 Subject: [PATCH] Se cambio la tabla de unidades de medida generales por unidades de medida --- .../general_catalogs/units_of_measure/dto.py | 25 +--- .../units_of_measure/service.py | 2 +- .../a76/general_catalogs/units-of-measure.ts | 4 +- .../general/data-table-actions.svelte | 2 + .../units_of_measure/main/data-table.svelte | 107 ++++++++++++++++++ .../src/lib/components/sidebar/modules.ts | 34 +++--- 6 files changed, 135 insertions(+), 39 deletions(-) create mode 100644 frontend/src/lib/components/dashboard/general_catalogs/units_of_measure/main/data-table.svelte diff --git a/backend/api/v1/modules/a76/general_catalogs/units_of_measure/dto.py b/backend/api/v1/modules/a76/general_catalogs/units_of_measure/dto.py index 56c9d37f..ef5997fe 100644 --- a/backend/api/v1/modules/a76/general_catalogs/units_of_measure/dto.py +++ b/backend/api/v1/modules/a76/general_catalogs/units_of_measure/dto.py @@ -36,14 +36,8 @@ class UnitOfMeasureBase(BaseModel): oma_code: Optional[str] = Field(None, max_length=20) -class UnitOfMeasureGeneralBase(BaseModel): - code: str = Field(..., max_length=20, description="Unit Code") - description: Optional[str] = Field(None, max_length=100) - conversion_factor: Optional[Decimal] = None - mexico_unit: Optional[str] = Field(None, max_length=20) - american_unit_code: Optional[str] = Field(None, max_length=20) - customs_code: Optional[int] = Field(None) - ace_code: Optional[str] = Field(None, max_length=20) +class UnitOfMeasureGeneralBase(UnitOfMeasureBase): + pass # --- Create DTOs --- @@ -105,14 +99,8 @@ class UnitOfMeasureUpdate(BaseModel): oma_code: Optional[str] = Field(None, max_length=20) -class UnitOfMeasureGeneralUpdate(BaseModel): - code: Optional[str] = Field(None, max_length=20) - description: Optional[str] = Field(None, max_length=100) - conversion_factor: Optional[Decimal] = None - mexico_unit: Optional[str] = Field(None, max_length=20) - american_unit_code: Optional[str] = Field(None, max_length=20) - customs_code: Optional[int] = Field(None) - ace_code: Optional[str] = Field(None, max_length=20) +class UnitOfMeasureGeneralUpdate(UnitOfMeasureUpdate): + pass # --- Response DTOs --- @@ -142,6 +130,5 @@ class UnitOfMeasureResponse(UnitOfMeasureBase): model_config = ConfigDict(from_attributes=True) -class UnitOfMeasureGeneralResponse(UnitOfMeasureGeneralBase): - id: int - model_config = ConfigDict(from_attributes=True) +class UnitOfMeasureGeneralResponse(UnitOfMeasureResponse): + pass diff --git a/backend/api/v1/modules/a76/general_catalogs/units_of_measure/service.py b/backend/api/v1/modules/a76/general_catalogs/units_of_measure/service.py index f032f76e..c514c2ee 100644 --- a/backend/api/v1/modules/a76/general_catalogs/units_of_measure/service.py +++ b/backend/api/v1/modules/a76/general_catalogs/units_of_measure/service.py @@ -154,7 +154,7 @@ class UnitOfMeasureService(BaseService): class UnitOfMeasureGeneralService(BaseService): - model = UnitOfMeasureGeneral + model = UnitOfMeasure def get_all_uom_general(session: Session, skip: int = 0, limit: int = 100) -> Sequence[UnitOfMeasureGeneral]: diff --git a/frontend/src/lib/api/dashboard/a76/general_catalogs/units-of-measure.ts b/frontend/src/lib/api/dashboard/a76/general_catalogs/units-of-measure.ts index f680bae3..b32bedaf 100644 --- a/frontend/src/lib/api/dashboard/a76/general_catalogs/units-of-measure.ts +++ b/frontend/src/lib/api/dashboard/a76/general_catalogs/units-of-measure.ts @@ -183,7 +183,7 @@ export interface UnitOfMeasureGeneralUpdate { } export interface UnitOfMeasureGeneralListResponse { - items: UnitOfMeasureGeneral[]; + items: UnitOfMeasureGeneral[]; total: number; page: number; page_size: number; @@ -214,7 +214,7 @@ export async function updateUnitOfMeasureGeneral(id: number, data: UnitOfMeasure } export async function deleteUnitOfMeasureGeneral(id: number, companyId: number): Promise> { - return await api.delete(`/v1/a76/units-of-measure/general/${id}/?company_id=${companyId}`); + return await api.delete(`/v1/a76/units-of-measure/general/${id}?company_id=${companyId}`); } // --- Customs --- diff --git a/frontend/src/lib/components/dashboard/general_catalogs/units_of_measure/general/data-table-actions.svelte b/frontend/src/lib/components/dashboard/general_catalogs/units_of_measure/general/data-table-actions.svelte index a84164f4..96ce74e0 100644 --- a/frontend/src/lib/components/dashboard/general_catalogs/units_of_measure/general/data-table-actions.svelte +++ b/frontend/src/lib/components/dashboard/general_catalogs/units_of_measure/general/data-table-actions.svelte @@ -2,6 +2,7 @@ import { Button } from '$lib/components/ui/button'; import * as DropdownMenu from '$lib/components/ui/dropdown-menu'; import { MoreHorizontal, Pencil, Trash2 } from 'lucide-svelte'; + import { toast } from 'svelte-sonner'; import CreateEditDialog from './create-edit-dialog.svelte'; import type { UnitOfMeasureGeneral } from '$lib/api/dashboard/a76/general_catalogs/units-of-measure'; import { deleteUnitOfMeasureGeneral } from '$lib/api/dashboard/a76/general_catalogs/units-of-measure'; @@ -25,6 +26,7 @@ const response = await deleteUnitOfMeasureGeneral(unit.id, activeCompanyId); if (response.error) { + toast.error(response.error); } else if (response.status === 204 || response.status === 200) { onSuccess?.(); } diff --git a/frontend/src/lib/components/dashboard/general_catalogs/units_of_measure/main/data-table.svelte b/frontend/src/lib/components/dashboard/general_catalogs/units_of_measure/main/data-table.svelte new file mode 100644 index 00000000..77c412d8 --- /dev/null +++ b/frontend/src/lib/components/dashboard/general_catalogs/units_of_measure/main/data-table.svelte @@ -0,0 +1,107 @@ + + +
+ + + {#each table.getHeaderGroups() as headerGroup (headerGroup.id)} + + {#each headerGroup.headers as header (header.id)} + + {#if !header.isPlaceholder} + + {/if} + + {/each} + + {/each} + + + {#each table.getRowModel().rows as row (row.id)} + + {#each row.getVisibleCells() as cell (cell.id)} + + + + {/each} + + {:else} + + + No hay resultados. + + + {/each} + + +
+ + +
+
+ Total: {totalItems} registros +
+
+ + +
+
diff --git a/frontend/src/lib/components/sidebar/modules.ts b/frontend/src/lib/components/sidebar/modules.ts index e6dbde48..a0dd99a8 100644 --- a/frontend/src/lib/components/sidebar/modules.ts +++ b/frontend/src/lib/components/sidebar/modules.ts @@ -1,18 +1,18 @@ -import { - Archive, - ArrowDownToLine, - ArrowUpFromLine, - BadgeCheck, - ChartPie, - Database, - FileText, - Frame, - GalleryVerticalEnd, - LayoutDashboard, - Package, - Settings2, - Shield, - Users, +import { + Archive, + ArrowDownToLine, + ArrowUpFromLine, + BadgeCheck, + ChartPie, + Database, + FileText, + Frame, + GalleryVerticalEnd, + LayoutDashboard, + Package, + Settings2, + Shield, + Users, } from 'lucide-svelte'; import * as m from "$lib/paraglide/messages.js"; import { Title } from '../ui/alert'; @@ -296,7 +296,7 @@ export function getSidebarData(): SidebarData { { title: m["sidebar.goods.classes"](), url: "/dashboard/goods/fixed-asset-classes", - }, + }, { title: m["sidebar.goods.parts"](), url: "/dashboard/goods/parts", @@ -369,7 +369,7 @@ export function getSidebarData(): SidebarData { { title: m["sidebar.export_invoices.repair"](), url: "/dashboard/invoices?operation_type=exp&invoice_type=REPAR", - }, + }, ], }, {