Add supplier and imporve inventory frontend

This commit is contained in:
Urtzi Alfaro
2025-09-18 23:32:53 +02:00
parent ae77a0e1c5
commit d61056df33
40 changed files with 2022 additions and 629 deletions

View File

@@ -0,0 +1,48 @@
{
"enums": {
"food_safety_standard": {
"haccp": "HACCP",
"fda": "FDA",
"usda": "USDA",
"fsma": "FSMA",
"sqf": "SQF",
"brc": "BRC",
"ifs": "IFS",
"iso22000": "ISO 22000",
"organic": "Orgánico",
"non_gmo": "Sin OGM",
"allergen_free": "Libre de Alérgenos",
"kosher": "Kosher",
"halal": "Halal"
},
"compliance_status": {
"compliant": "Conforme",
"non_compliant": "No Conforme",
"pending_review": "Pendiente de Revisión",
"expired": "Vencido",
"warning": "Advertencia"
},
"food_safety_alert_type": {
"temperature_violation": "Violación de Temperatura",
"expiration_warning": "Advertencia de Vencimiento",
"expired_product": "Producto Vencido",
"contamination_risk": "Riesgo de Contaminación",
"allergen_cross_contamination": "Contaminación Cruzada de Alérgenos",
"storage_violation": "Violación de Almacenamiento",
"quality_degradation": "Degradación de Calidad",
"recall_notice": "Aviso de Retiro",
"certification_expiry": "Vencimiento de Certificación",
"supplier_compliance_issue": "Problema de Cumplimiento del Proveedor"
}
},
"labels": {
"food_safety_standard": "Estándar de Seguridad Alimentaria",
"compliance_status": "Estado de Cumplimiento",
"food_safety_alert_type": "Tipo de Alerta de Seguridad"
},
"descriptions": {
"food_safety_standard": "Estándar de seguridad alimentaria aplicable",
"compliance_status": "Estado actual de cumplimiento normativo",
"food_safety_alert_type": "Tipo de alerta de seguridad alimentaria"
}
}

View File

@@ -40,6 +40,81 @@
"description": "Descripción",
"notes": "Notas"
},
"enums": {
"product_type": {
"ingredient": "Ingrediente",
"finished_product": "Producto Terminado"
},
"production_stage": {
"raw_ingredient": "Ingrediente Crudo",
"par_baked": "Pre-cocido",
"fully_baked": "Completamente Cocido",
"prepared_dough": "Masa Preparada",
"frozen_product": "Producto Congelado"
},
"unit_of_measure": {
"kg": "Kilogramos",
"g": "Gramos",
"l": "Litros",
"ml": "Mililitros",
"units": "Unidades",
"pcs": "Piezas",
"pkg": "Paquetes",
"bags": "Bolsas",
"boxes": "Cajas"
},
"ingredient_category": {
"flour": "Harinas",
"yeast": "Levaduras",
"dairy": "Lácteos",
"eggs": "Huevos",
"sugar": "Azúcares",
"fats": "Grasas",
"salt": "Sal",
"spices": "Especias",
"additives": "Aditivos",
"packaging": "Embalaje",
"cleaning": "Limpieza",
"other": "Otros"
},
"product_category": {
"bread": "Panes",
"croissants": "Croissants",
"pastries": "Bollería",
"cakes": "Tartas",
"cookies": "Galletas",
"muffins": "Muffins",
"sandwiches": "Sándwiches",
"seasonal": "Temporales",
"beverages": "Bebidas",
"other_products": "Otros Productos"
},
"stock_movement_type": {
"PURCHASE": "Compra",
"PRODUCTION_USE": "Uso en Producción",
"ADJUSTMENT": "Ajuste",
"WASTE": "Desperdicio",
"TRANSFER": "Transferencia",
"RETURN": "Devolución",
"INITIAL_STOCK": "Stock Inicial",
"TRANSFORMATION": "Transformación"
}
},
"labels": {
"product_type": "Tipo de Producto",
"production_stage": "Etapa de Producción",
"unit_of_measure": "Unidad de Medida",
"ingredient_category": "Categoría de Ingrediente",
"product_category": "Categoría de Producto",
"stock_movement_type": "Tipo de Movimiento"
},
"descriptions": {
"product_type": "Selecciona si es un ingrediente básico o un producto terminado",
"production_stage": "Indica la etapa de producción en la que se encuentra el producto",
"unit_of_measure": "Unidad de medida utilizada para este producto",
"ingredient_category": "Categoría que mejor describe este ingrediente",
"stock_movement_type": "Tipo de movimiento de inventario a registrar"
},
"categories": {
"all": "Todas las categorías",
"flour": "Harinas",

View File

@@ -0,0 +1,84 @@
{
"types": {
"ingredients": "Materias Primas",
"packaging": "Embalaje",
"equipment": "Equipamiento",
"services": "Servicios",
"utilities": "Servicios Públicos",
"multi": "Múltiples Categorías"
},
"status": {
"active": "Activo",
"inactive": "Inactivo",
"pending_approval": "Pendiente de Aprobación",
"suspended": "Suspendido",
"blacklisted": "Lista Negra"
},
"payment_terms": {
"cod": "Contra Entrega",
"net_15": "Neto 15 días",
"net_30": "Neto 30 días",
"net_45": "Neto 45 días",
"net_60": "Neto 60 días",
"prepaid": "Prepago",
"credit_terms": "Términos de Crédito"
},
"purchase_order_status": {
"draft": "Borrador",
"pending_approval": "Pendiente de Aprobación",
"approved": "Aprobado",
"sent_to_supplier": "Enviado al Proveedor",
"confirmed": "Confirmado",
"partially_received": "Parcialmente Recibido",
"completed": "Completado",
"cancelled": "Cancelado",
"disputed": "Disputado"
},
"delivery_status": {
"scheduled": "Programado",
"in_transit": "En Tránsito",
"out_for_delivery": "En Reparto",
"delivered": "Entregado",
"partially_delivered": "Parcialmente Entregado",
"failed_delivery": "Entrega Fallida",
"returned": "Devuelto"
},
"quality_rating": {
"5": "Excelente",
"4": "Bueno",
"3": "Promedio",
"2": "Malo",
"1": "Muy Malo"
},
"delivery_rating": {
"5": "Excelente",
"4": "Bueno",
"3": "Promedio",
"2": "Malo",
"1": "Muy Malo"
},
"invoice_status": {
"pending": "Pendiente",
"approved": "Aprobado",
"paid": "Pagado",
"overdue": "Vencido",
"disputed": "Disputado",
"cancelled": "Cancelado"
},
"labels": {
"supplier_type": "Tipo de Proveedor",
"supplier_status": "Estado del Proveedor",
"payment_terms": "Términos de Pago",
"purchase_order_status": "Estado de Orden de Compra",
"delivery_status": "Estado de Entrega",
"quality_rating": "Calificación de Calidad",
"delivery_rating": "Calificación de Entrega",
"invoice_status": "Estado de Factura"
},
"descriptions": {
"supplier_type": "Selecciona el tipo de productos o servicios que ofrece este proveedor",
"payment_terms": "Términos de pago acordados con el proveedor",
"quality_rating": "Calificación de 1 a 5 estrellas basada en la calidad de los productos",
"delivery_rating": "Calificación de 1 a 5 estrellas basada en la puntualidad y estado de las entregas"
}
}

View File

@@ -2,6 +2,8 @@
import commonEs from './es/common.json';
import authEs from './es/auth.json';
import inventoryEs from './es/inventory.json';
import foodSafetyEs from './es/foodSafety.json';
import suppliersEs from './es/suppliers.json';
import errorsEs from './es/errors.json';
// Translation resources by language
@@ -10,6 +12,8 @@ export const resources = {
common: commonEs,
auth: authEs,
inventory: inventoryEs,
foodSafety: foodSafetyEs,
suppliers: suppliersEs,
errors: errorsEs,
},
};
@@ -33,7 +37,7 @@ export const languageConfig = {
};
// Namespaces available in translations
export const namespaces = ['common', 'auth', 'inventory', 'errors'] as const;
export const namespaces = ['common', 'auth', 'inventory', 'foodSafety', 'suppliers', 'errors'] as const;
export type Namespace = typeof namespaces[number];
// Helper function to get language display name
@@ -47,7 +51,7 @@ export const isSupportedLanguage = (language: string): language is SupportedLang
};
// Export individual language modules for direct imports
export { commonEs, authEs, inventoryEs, errorsEs };
export { commonEs, authEs, inventoryEs, foodSafetyEs, suppliersEs, errorsEs };
// Default export with all translations
export default resources;