panels-origin/web-panel/components/CostSemaphore.vue
Cursor Agent ab89727522
feat: gastos, almacén central/obra y control presupuestal
Implementa el módulo integral de costos según el plan acordado:

- Esquema Liquibase: expense_entries, almacén (central + obra), IVA,
  tenant_cost_settings, permisos IAM y RLS
- Funciones RPC core: gastos, almacén, control presupuestal, sync nómina,
  cierre de almacén al concluir proyecto
- API HTTP: expenses_http, warehouse_http, cost_control_http, iam_http
- Middleware requirePermission con matriz IAM
- UI web-panel: /gastos, /almacen, /control-presupuesto, /usuarios
- Componentes BudgetItemPicker, CostSemaphore y semáforos CSS
- Smoke tests extendidos para gastos/almacén/control

Co-authored-by: alberto.martinez <alberto.martinez@mrdev.mx>
2026-09-04 04:04:17 +00:00

18 lines
449 B
Vue

<template>
<Chip :class="chipClass" :label="label" />
</template>
<script setup lang="ts">
const props = withDefaults(defineProps<{
pct: number;
compact?: boolean;
}>(), { compact: false });
const label = computed(() => props.compact ? `${props.pct}%` : `${props.pct}% ejecutado`);
const chipClass = computed(() => {
if (props.pct > 100) return "cost-critical";
if (props.pct > 85) return "cost-warn";
return "cost-ok";
});
</script>