Skip to main content

Información General

Los endpoints de empresas permiten gestionar la información de las empresas registradas en el sistema, incluyendo la carga de logos y el cambio de empresa activa para usuarios administradores. Todas las operaciones requieren autenticación mediante token Bearer.

Listar Empresas

Obtiene la lista completa de empresas registradas en el sistema, ordenadas por ID descendente.

Respuesta

{
  "success": true,
  "data": [
    {
      "id_empresa": 1,
      "ruc": "20612706702",
      "razon_social": "COMERCIAL & INDUSTRIAL J.V.C. S.A.C.",
      "comercial": "J.V.C. SAC",
      "direccion": "Av. Los Industriales 123",
      "email": "[email protected]",
      "telefono": "01-3554701",
      "telefono2": null,
      "telefono3": null,
      "ubigeo": "150101",
      "distrito": "Lima",
      "provincia": "Lima",
      "departamento": "Lima",
      "user_sol": "MODDATOS",
      "clave_sol": "moddatos",
      "logo": "empresasLogos/logo_20612706702_1234567890.png",
      "igv": "0.18",
      "modo": "production",
      "estado": "1",
      "created_at": "2024-01-15T10:30:00.000000Z",
      "updated_at": "2024-03-01T14:20:00.000000Z"
    }
  ]
}

Obtener Empresa

Obtiene los detalles de una empresa específica.

Parámetros de Ruta

Respuesta

{
  "success": true,
  "data": {
    "id_empresa": 1,
    "ruc": "20612706702",
    "razon_social": "COMERCIAL & INDUSTRIAL J.V.C. S.A.C.",
    "comercial": "J.V.C. SAC",
    "direccion": "Av. Los Industriales 123",
    "email": "[email protected]",
    "telefono": "01-3554701",
    "logo": "empresasLogos/logo_20612706702_1234567890.png",
    "igv": "0.18",
    "modo": "production"
  }
}

Errores

Actualizar Empresa

Actualiza los datos de una empresa, incluyendo la posibilidad de subir un nuevo logo.

Parámetros de Ruta

Parámetros del Body (FormData)

Ejemplo de Solicitud

const formData = new FormData();
formData.append('ruc', '20612706702');
formData.append('razon_social', 'COMERCIAL & INDUSTRIAL J.V.C. S.A.C.');
formData.append('comercial', 'J.V.C. SAC');
formData.append('direccion', 'Av. Los Industriales 123');
formData.append('email', '[email protected]');
formData.append('telefono', '01-3554701');
formData.append('igv', '0.18');
formData.append('modo', 'production');
formData.append('logo', logoFile); // File object

const response = await fetch('/api/empresas/1', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${token}`
  },
  body: formData
});

Respuesta Exitosa

{
  "success": true,
  "message": "Empresa actualizada exitosamente",
  "data": {
    "id_empresa": 1,
    "ruc": "20612706702",
    "razon_social": "COMERCIAL & INDUSTRIAL J.V.C. S.A.C.",
    "comercial": "J.V.C. SAC",
    "logo": "empresasLogos/logo_20612706702_1709304821.png",
    "updated_at": "2024-03-01T14:20:21.000000Z"
  }
}

Validación

Elimina el logo de una empresa del sistema de archivos y de la base de datos.

Parámetros de Ruta

Respuesta

{
  "success": true,
  "message": "Logo eliminado exitosamente"
}

Cambiar Empresa Activa

Cambia el contexto de empresa activa para el usuario autenticado. Todas las consultas posteriores se realizarán en el contexto de la nueva empresa.

Parámetros del Body

Ejemplo de Solicitud

{
  "id_empresa": 2
}

Respuesta Exitosa

{
  "success": true,
  "message": "Empresa cambiada exitosamente",
  "id_empresa": 2
}

Errores

Consultas con Scope de Empresa

Ejemplo de Query Scope

// En un controlador Laravel
$ventas = Venta::where('id_empresa', $user->id_empresa)->get();

// O usando scope local
$productos = Producto::porEmpresa($empresaId)->get();

Modelo de Datos

Tabla: empresas

CampoTipoDescripción
id_empresaINTPrimary key
rucVARCHAR(11)RUC único de la empresa
razon_socialVARCHAR(245)Razón social
comercialVARCHAR(245)Nombre comercial
direccionVARCHAR(245)Dirección fiscal
emailVARCHAR(145)Email de contacto
telefonoVARCHAR(30)Teléfono principal
telefono2VARCHAR(30)Teléfono secundario
telefono3VARCHAR(30)Teléfono terciario
ubigeoVARCHAR(6)Código de ubigeo SUNAT
distritoVARCHAR(45)Distrito
provinciaVARCHAR(45)Provincia
departamentoVARCHAR(45)Departamento
user_solVARCHAR(45)Usuario SOL SUNAT
clave_solVARCHAR(45)Clave SOL SUNAT
logoVARCHAR(255)Ruta del archivo de logo
igvDECIMAL(3,2)Tasa de IGV (0.18)
modoENUMproduction, test
estadoCHAR(1)1=Activo, 0=Inactivo
created_atTIMESTAMPFecha de creación
updated_atTIMESTAMPFecha de actualización

Configuración SUNAT

Ambiente de Pruebas (Beta)

Para pruebas, SUNAT proporciona credenciales genéricas:
  • RUC: 20000000001
  • Usuario SOL: MODDATOS
  • Clave SOL: moddatos

Ambiente de Producción

En producción, usa las credenciales SOL reales proporcionadas por SUNAT para tu empresa.

Build docs developers (and LLMs) love