# Productos y servicios

Los productos y servicios tiene la misma estructura, pero los productos tienen dos campos adicionales: images y total. Los endpoints son similares para productos o servicios pero remplazando la palabra products por services

# Modelo principal

El siguiente modelo detalla los campos en común que tienen los productos y servicios.

interface Principal {
  /**
   * El código principal del producto.
   */
  code: string;
  /**
   * Código secundario del producto.
   */
  auxiliarCode?: string;
  /**
   * El precio del producto.
   */
  price?: number;
  /**
   * La descripción del producto.
   */
  description: string;
  /**
   * Porcentaje de iva que se va aplicar al producto. Por defecto `4`.
   */
  iva?: string;
  aditionalInformation?: InfoAdicional[];
  /**
   * El estado del producto. Por defecto es `active`.
   */
  status?: "active" | "inactive";
  _movements: Movement[];
}

Consideraciones:

  • Mayor detalle sobre el _movements.
  • El iva tiene diferentes porcentajes de iva.
  • El aditionalInformation tiene el siguiente formato.
  • El precio final se calcula automáticamente.

# Información adicional

Permite agregar mas información sobre el producto, como color, medidas o cualquier tipo de información.

interface InfoAdicional {
  nombre: string;
  valor: string;
}

# Obtener un producto o servicio

GET https://api-test.upconta.com/v3/production/products-services/:id

# Ejemplo de respuesta

{
  "_id": "662253f04939e1ab31a7477e",
  "code": "COMP002",
  "price": 600.5,
  "description": "Computadoras"
}

# Productos

Los productos pueden alimentar el stock, pertenecer a bodegas, tener imágenes.

# Modelo

interface Producto {
  /**
   * Clave de unidad de medida. Por defecto `u`.
   */
  claveUnidad?: string;

  /**
   * El número de productos en stock. Este campo se autoalimenta.
   */
  total?: number;
  /**
   * Las bodegas a las que pertenece el producto. Este campo se autoalimenta con
   * los movimientos de stock.
   */
  bodegas: [];
}
  • El claveUnidad tiene diferentes unidades

# Opciones de productos

GET https://api-test.upconta.com/v3/production/products/get-options

# Ejemplo de respuesta

{
  "PorcentajesDeIVA": [
    {
      "id": "0",
      "description": "0%",
      "value": 0
    },
    {
      "id": "2",
      "description": "12%",
      "value": 0.12
    },
    {
      "id": "4",
      "description": "15%",
      "value": 0.15
    },
    {
      "id": "5",
      "description": "5%",
      "value": 0.05
    },
    {
      "id": "6",
      "description": "No objeto de impuesto",
      "value": 0
    },
    {
      "id": "7",
      "description": "Excento de IVA",
      "value": 0
    },
    {
      "id": "8",
      "description": "8%",
      "value": 0.08
    },
    {
      "id": "10",
      "description": "13%",
      "value": 0.13
    }
  ]
}

# Obtener claves de unidad

GET https://api-test.upconta.com/v3/utils/enums/claves-unidad-ec

# Ejemplo de respuesta
[
  {
    "id": "u",
    "description": "Unidad"
  },
  {
    "id": "kg",
    "description": "Kilogramo"
  },
  {
    "id": "lb",
    "description": "Libra"
  },
  {
    "id": "gr",
    "description": "Gramo"
  },
  {
    "id": "t",
    "description": "Tonelada"
  },
  {
    "id": "oz",
    "description": "Onza"
  },
  {
    "id": "m",
    "description": "Metro"
  },
  {
    "id": "m2",
    "description": "Metro cuadrado"
  },
  {
    "id": "m3",
    "description": "Metro cúbido"
  },
  {
    "id": "litro",
    "description": "Litro"
  },
  {
    "id": "galon",
    "description": "Galón"
  },
  {
    "id": "caneca",
    "description": "Caneca"
  },
  {
    "id": "tanque",
    "description": "Tanque"
  },
  {
    "id": "glb",
    "description": "global"
  }
]

# Obtener productos

GET https://api-test.upconta.com/v3/production/products

# Ejemplo de respuesta

{
  "page": 1,
  "total": 24,
  "data": [
    {
      "_id": "65bacf5f377451eee0f4ac2a",
      "code": "0050",
      "price": 0,
      "description": "EQUIPO DE COMPUTO"
    },
    {
      "_id": "62cede8e35928bf153258073",
      "code": "ENC",
      "price": 10,
      "description": "ENCEBOLLADO MIX"
    }
  ]
}

# Obtener producto

GET https://api-test.upconta.com/v3/production/products/:id

# Ejemplo de respuesta

{
  "_id": "65bacf5f377451eee0f4ac2a",
  "code": "0050",
  "price": 0,
  "description": "EQUIPO DE COMPUTO"
}

# Crear producto

POST https://api-test.upconta.com/v3/production/products

# Ejemplo de petición

{
  "code": "COMP002",
  "auxiliarCode": "DELL_001",
  "price": 600.5,
  "description": "Computadoras",
  "iva": "2",
  "ice": "3620"
}

# Ejemplo de respuesta

{
  "status": "active",
  "code": "COMP002",
  "auxiliarCode": "DELL_001",
  "price": 600.5,
  "description": "Computadoras",
  "descripciones": [],
  "iva": "2",
  "ice": "3620",
  "categorias": [],
  "categoriasRestaurantes": [],
  "claveUnidad": "u",
  "_movements": [
    {
      "type": "created",
      "user": "608adf6a375dfd83381ba163",
      "nota": "Creado por desarrollador",
      "date": "2024-04-18T21:37:47.612Z"
    }
  ],
  "total": 0,
  "tipoProducto": "producto",
  "_id": "662192ab0dbc2d448f6537f7",
  "type": "product",
  "aditionalInformation": [],
  "precios": [],
  "bodegas": [],
  "images": [],
  "relaciones": [],
  "precioFinal": 672.56,
  "__v": 0
}

# Editar producto

PUT https://api-test.upconta.com/v3/production/products/:id

# Ejemplo de petición

{
  "description": "Computadoras de escritorio"
}

# Ejemplo de respuesta

{
  "status": "active",
  "code": "COMP002",
  "auxiliarCode": "DELL_001",
  "price": 600.5,
  "precioFinal": 672.56,
  "description": "Computadoras de escritorio",
  "descripciones": [],
  "iva": "2",
  "ice": "3620",
  "aditionalInformation": [],
  "categorias": [],
  "categoriasRestaurantes": [],
  "claveUnidad": "u",
  "precios": [],
  "_movements": [
    {
      "type": "created",
      "date": "2024-04-18T21:37:47.612Z",
      "user": "608adf6a375dfd83381ba163",
      "nota": "Creado por desarrollador"
    },
    {
      "type": "edit",
      "user": "608adf6a375dfd83381ba163",
      "nota": "Editado por desarrollador",
      "date": "2024-04-18T21:38:17.038Z"
    }
  ],
  "total": 0,
  "bodegas": [],
  "images": [],
  "relaciones": [],
  "tipoProducto": "producto",
  "_id": "662192ab0dbc2d448f6537f7",
  "__v": 1,
  "type": "product"
}

# Eliminar producto

DELETE https://api-test.upconta.com/v3/production/products/:id

# Ejemplo de respuestas

{
  "message": "success"
}

# Servicios

Los campos de los servicios son los detallados en el modelo principal y los endpoints para hacer el CRUD básico son los mismos que en productos, solo se reemplaza products por services