🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
13 KiB
API Endpoints para Nuevas Tablas - FASE 8
Fecha: 2026-01-04 Version: 1.0 Cobertura: 61 nuevas tablas, 25 funciones
1. Resumen de Endpoints Requeridos
| Modulo | Tablas | Endpoints Estimados | Prioridad |
|---|---|---|---|
| Financial | 5 | 17 | Alta |
| Inventory | 5 | 15 | Alta |
| Purchase | 1 | 4 | Alta |
| Sales | 0 (solo campos) | 2 (funciones) | Media |
| CRM | 3 | 10 | Alta |
| Projects | 3 | 9 | Media |
| HR | 11 | 30 | Alta |
| Total | 28 core | 87 |
2. Financial Module
2.1 PaymentTermLines
Tabla: financial.payment_term_lines
GET /api/v1/financial/payment-terms/:termId/lines
POST /api/v1/financial/payment-terms/:termId/lines
GET /api/v1/financial/payment-terms/:termId/lines/:id
PATCH /api/v1/financial/payment-terms/:termId/lines/:id
DELETE /api/v1/financial/payment-terms/:termId/lines/:id
Campos clave:
sequence- Orden de aplicacionvalue- Tipo: percent, fixed, balancevalue_amount- Porcentaje o montodays- Dias para vencimientoend_month- Si vence fin de mes
2.2 Incoterms
Tabla: financial.incoterms
GET /api/v1/financial/incoterms
GET /api/v1/financial/incoterms/:id
Nota: Solo lectura, datos pre-cargados (11 incoterms estandar)
2.3 PaymentMethods
Tabla: financial.payment_methods
GET /api/v1/financial/payment-methods
POST /api/v1/financial/payment-methods
GET /api/v1/financial/payment-methods/:id
PATCH /api/v1/financial/payment-methods/:id
DELETE /api/v1/financial/payment-methods/:id
Campos clave:
payment_type- ENUM: inbound, outboundcode- Codigo unico por tenant
2.4 ReconcileModels
Tabla: financial.reconcile_models
GET /api/v1/financial/reconcile-models
POST /api/v1/financial/reconcile-models
GET /api/v1/financial/reconcile-models/:id
PATCH /api/v1/financial/reconcile-models/:id
DELETE /api/v1/financial/reconcile-models/:id
Campos clave:
rule_type- ENUM: writeoff_button, writeoff_suggestion, invoice_matchingauto_reconcile- Automatizar conciliacionmatch_amount- percentage, fixed, any
2.5 ReconcileModelLines
Tabla: financial.reconcile_model_lines
GET /api/v1/financial/reconcile-models/:modelId/lines
POST /api/v1/financial/reconcile-models/:modelId/lines
GET /api/v1/financial/reconcile-models/:modelId/lines/:id
PATCH /api/v1/financial/reconcile-models/:modelId/lines/:id
DELETE /api/v1/financial/reconcile-models/:modelId/lines/:id
Campos clave:
account_id- Cuenta contable destino (requerido)amount_type- percentage, fixed, regexamount_value- Valor/porcentaje a aplicar
3. Inventory Module
3.1 PackageTypes
Tabla: inventory.package_types
GET /api/v1/inventory/package-types
POST /api/v1/inventory/package-types
GET /api/v1/inventory/package-types/:id
PATCH /api/v1/inventory/package-types/:id
DELETE /api/v1/inventory/package-types/:id
Campos clave:
- Dimensiones: height, width, length
- Pesos: base_weight, max_weight
3.2 Packages
Tabla: inventory.packages
GET /api/v1/inventory/packages
POST /api/v1/inventory/packages
GET /api/v1/inventory/packages/:id
PATCH /api/v1/inventory/packages/:id
DELETE /api/v1/inventory/packages/:id
GET /api/v1/inventory/locations/:locationId/packages
3.3 PutawayRules
Tabla: inventory.putaway_rules
GET /api/v1/inventory/putaway-rules
POST /api/v1/inventory/putaway-rules
GET /api/v1/inventory/putaway-rules/:id
PATCH /api/v1/inventory/putaway-rules/:id
DELETE /api/v1/inventory/putaway-rules/:id
Logica:
- Ordenar por sequence
- Buscar por producto o categoria
- Aplicar location_out como destino
3.4 StorageCategories
Tabla: inventory.storage_categories
GET /api/v1/inventory/storage-categories
POST /api/v1/inventory/storage-categories
GET /api/v1/inventory/storage-categories/:id
PATCH /api/v1/inventory/storage-categories/:id
DELETE /api/v1/inventory/storage-categories/:id
3.5 RemovalStrategies
Tabla: inventory.removal_strategies
GET /api/v1/inventory/removal-strategies
Nota: Solo lectura, datos pre-cargados (FIFO, LIFO, FEFO, Closest)
4. Purchase Module
4.1 ProductSupplierinfo
Tabla: purchase.product_supplierinfo
GET /api/v1/purchase/suppliers/:partnerId/products
POST /api/v1/purchase/suppliers/:partnerId/products
GET /api/v1/purchase/suppliers/:partnerId/products/:id
PATCH /api/v1/purchase/suppliers/:partnerId/products/:id
DELETE /api/v1/purchase/suppliers/:partnerId/products/:id
# Alternativa por producto
GET /api/v1/inventory/products/:productId/suppliers
Campos clave:
min_qty- Cantidad minimaprice- Precio del proveedordelay- Lead time en diasdate_start/date_end- Vigencia
4.2 Funciones
POST /api/v1/purchase/orders/:id/create-stock-moves
Funcion: purchase.action_create_stock_moves(order_id)
- Crea picking de recepcion
- Genera stock_moves por cada linea
5. Sales Module
5.1 Funciones
POST /api/v1/sales/orders/:id/confirm
Funcion: sales.action_confirm(order_id)
- Cambia status a 'sale'
- Genera nombre de secuencia
- Actualiza qty_to_deliver, qty_to_invoice
GET /api/v1/sales/pricelists/:id/price
Query params:
product_id- UUID del productoquantity- Cantidad (default 1)date- Fecha (default hoy)
Funcion: sales.get_pricelist_price(pricelist_id, product_id, quantity, date)
6. CRM Module
6.1 Tags
Tabla: crm.tags
GET /api/v1/crm/tags
POST /api/v1/crm/tags
GET /api/v1/crm/tags/:id
PATCH /api/v1/crm/tags/:id
DELETE /api/v1/crm/tags/:id
6.2 Lead-Tag Relations
POST /api/v1/crm/leads/:id/tags
DELETE /api/v1/crm/leads/:id/tags/:tagId
GET /api/v1/crm/leads/:id/tags
6.3 Opportunity-Tag Relations
POST /api/v1/crm/opportunities/:id/tags
DELETE /api/v1/crm/opportunities/:id/tags/:tagId
GET /api/v1/crm/opportunities/:id/tags
6.4 Funciones CRM
POST /api/v1/crm/leads/:id/convert-to-opportunity
Body:
{
"partner_id": "uuid (opcional)",
"create_partner": true
}
Funcion: crm.convert_lead_to_opportunity(lead_id, partner_id, create_partner)
POST /api/v1/crm/leads/:id/set-lost
POST /api/v1/crm/opportunities/:id/set-lost
Body:
{
"lost_reason_id": "uuid",
"lost_notes": "string (opcional)"
}
POST /api/v1/crm/opportunities/:id/set-won
7. Projects Module
7.1 Collaborators
Tabla: projects.collaborators
GET /api/v1/projects/:projectId/collaborators
POST /api/v1/projects/:projectId/collaborators
GET /api/v1/projects/:projectId/collaborators/:id
PATCH /api/v1/projects/:projectId/collaborators/:id
DELETE /api/v1/projects/:projectId/collaborators/:id
Constraint: Debe tener partner_id OR user_id (no ambos)
7.2 Ratings
Tabla: projects.ratings
GET /api/v1/projects/:projectId/ratings
POST /api/v1/projects/:projectId/ratings
GET /api/v1/projects/tasks/:taskId/ratings
POST /api/v1/projects/tasks/:taskId/ratings
7.3 Burndown Chart
Tabla: projects.burndown_chart_data
GET /api/v1/projects/:projectId/burndown
POST /api/v1/projects/:projectId/burndown/snapshot
Funcion: projects.generate_burndown_snapshot(project_id)
Response GET:
{
"data": [
{
"date": "2026-01-04",
"total_tasks": 50,
"completed_tasks": 20,
"remaining_tasks": 30,
"total_hours": 400,
"completed_hours": 150,
"remaining_hours": 250
}
]
}
8. HR Module
8.1 Work Locations
Tabla: hr.work_locations
GET /api/v1/hr/work-locations
POST /api/v1/hr/work-locations
GET /api/v1/hr/work-locations/:id
PATCH /api/v1/hr/work-locations/:id
DELETE /api/v1/hr/work-locations/:id
8.2 Skills System
Tablas: hr.skill_types, hr.skills, hr.skill_levels, hr.employee_skills
# Skill Types
GET /api/v1/hr/skill-types
POST /api/v1/hr/skill-types
GET /api/v1/hr/skill-types/:id
PATCH /api/v1/hr/skill-types/:id
DELETE /api/v1/hr/skill-types/:id
# Skills (por tipo)
GET /api/v1/hr/skill-types/:typeId/skills
POST /api/v1/hr/skill-types/:typeId/skills
# Skill Levels (por tipo)
GET /api/v1/hr/skill-types/:typeId/levels
POST /api/v1/hr/skill-types/:typeId/levels
# Employee Skills
GET /api/v1/hr/employees/:employeeId/skills
POST /api/v1/hr/employees/:employeeId/skills
DELETE /api/v1/hr/employees/:employeeId/skills/:skillId
8.3 Expenses
Tablas: hr.expense_sheets, hr.expenses
# Expense Sheets
GET /api/v1/hr/expense-sheets
POST /api/v1/hr/expense-sheets
GET /api/v1/hr/expense-sheets/:id
PATCH /api/v1/hr/expense-sheets/:id
DELETE /api/v1/hr/expense-sheets/:id
POST /api/v1/hr/expense-sheets/:id/submit
POST /api/v1/hr/expense-sheets/:id/approve
POST /api/v1/hr/expense-sheets/:id/reject
# Expenses (lineas)
GET /api/v1/hr/expense-sheets/:sheetId/expenses
POST /api/v1/hr/expense-sheets/:sheetId/expenses
GET /api/v1/hr/expenses/:id
PATCH /api/v1/hr/expenses/:id
DELETE /api/v1/hr/expenses/:id
# Expenses sin sheet (draft individuales)
GET /api/v1/hr/employees/:employeeId/expenses
POST /api/v1/hr/employees/:employeeId/expenses
8.4 Resume Lines
Tabla: hr.employee_resume_lines
GET /api/v1/hr/employees/:employeeId/resume
POST /api/v1/hr/employees/:employeeId/resume
GET /api/v1/hr/employees/:employeeId/resume/:id
PATCH /api/v1/hr/employees/:employeeId/resume/:id
DELETE /api/v1/hr/employees/:employeeId/resume/:id
Tipos: experience, education, certification, internal
8.5 Payslips
Tablas: hr.payslip_structures, hr.payslips, hr.payslip_lines
# Structures
GET /api/v1/hr/payslip-structures
POST /api/v1/hr/payslip-structures
GET /api/v1/hr/payslip-structures/:id
PATCH /api/v1/hr/payslip-structures/:id
DELETE /api/v1/hr/payslip-structures/:id
# Payslips
GET /api/v1/hr/payslips
POST /api/v1/hr/payslips
GET /api/v1/hr/payslips/:id
PATCH /api/v1/hr/payslips/:id
DELETE /api/v1/hr/payslips/:id
POST /api/v1/hr/payslips/:id/verify
POST /api/v1/hr/payslips/:id/done
POST /api/v1/hr/payslips/:id/cancel
# Payslip Lines
GET /api/v1/hr/payslips/:payslipId/lines
9. Campos Adicionales (Existentes)
Las siguientes tablas existentes tienen nuevos campos que requieren actualizar los DTOs:
9.1 financial.journal_entries
Nuevos campos:
payment_stateamount_residualinvoice_date_duefiscal_position_idincoterm_idauto_post
9.2 financial.payments
Nuevos campos:
is_matchedpartner_bank_iddestination_journal_id
9.3 inventory.products
Nuevos campos:
tracking(none, serial, lot)sale_delaypurchase_oksale_okinvoice_policyvolume,weighths_codeorigin_country_id
9.4 inventory.stock_pickings
Nuevos campos:
scheduled_datedate_deadlineweightshipping_weight
9.5 purchase.orders
Nuevos campos:
incoterm_idfiscal_position_idoriginreceipt_status
9.6 sales.orders
Nuevos campos:
incoterm_idcampaign_idrequire_signaturesigned_by
9.7 crm.leads / crm.opportunities
Nuevos campos:
colorreferredday_open,day_closeis_won(opportunities)date_action,title_action
9.8 projects.projects / projects.tasks
Nuevos campos:
sequenceis_favoritetask_count,open_task_count,closed_task_countkanban_state(tasks)color(tasks)
9.9 hr.employees
30+ nuevos campos:
- Datos privados: private_street, private_city, etc.
- Documentos: visa_no, work_permit_no, etc.
- Personal: children, vehicle, etc.
- Identificacion: badge_id, pin, barcode
10. Notas de Implementacion
10.1 RLS (Row Level Security)
Todas las nuevas tablas tienen RLS habilitado. Los endpoints deben:
- Establecer
app.current_tenant_idantes de queries - Verificar permisos de company cuando aplique
10.2 Transacciones
Las funciones que modifican multiples tablas (ej. convert_lead_to_opportunity) ya manejan transacciones internamente.
10.3 Triggers
projects.tasks- Trigger automatico para actualizar conteos en proyecto- No requiere accion del API, los conteos se actualizan solos
10.4 ENUMs
Nuevos ENUMs a mapear en DTOs:
financial.payment_method_type: inbound, outboundfinancial.reconcile_model_type: writeoff_button, writeoff_suggestion, invoice_matchinghr.expense_status: draft, submitted, approved, posted, paid, rejectedhr.resume_line_type: experience, education, certification, internalhr.payslip_status: draft, verify, done, cancel
Generado: 2026-01-04 Para: Equipo Backend Referencia: FASE-8 Cobertura Maxima