Saltar a contenido

Integración API SAP

Documentación de la API externa SAP HANA utilizada por el Sistema A3 para sincronización de datos.

Información General

Tecnología: ASP.NET Web API 2 (C#) Base URL: http://atercerosb1.ddns.net Autenticación: HTTP Basic Auth Formato: JSON Límite de archivo: 50MB

Categorías de Endpoints


ANEXOS

Sistema de archivos adjuntos en SAP.

Obtener Archivo

GET /api/Anexos/Ver?ItemCode={ItemCode}&folder={folder}&file={file}

Obtiene los archivos en un string de bytes.

Query Params: - ItemCode: Código de la vivienda - folder: Carpeta - file: Archivo

Lista de Archivos

GET /api/Anexos?ItemCode={ItemCode}

Recibe un JSON con todos los archivos encontrados en la carpeta indicada.

Subir Anexo a Apartado

POST /api/Anexos/Subir/Apartados
Content-Type: multipart/form-data

Body (Form Data): - ItemCode: Formato 00-00000. Código de la vivienda - FileExt: Extensión ['jfif', 'pjpeg', 'jpeg', 'pjp', 'jpg', 'png', 'pdf'] - Type: Carpeta - FileName: Nombre del archivo - DocNum: Número de apartado - anexo: Archivo

Subir Anexo a Cliente

POST /api/Anexos/Subir/Cliente
Content-Type: multipart/form-data

Body: - CardCode: Código del cliente - FileExt: Extensión del archivo - Type: Carpeta - FileName: Nombre - anexo: Archivo

Subir Anexo a Provisión

POST /api/Anexos/Subir/Provisiones

Similar a apartados, incluye DocEntry en lugar de DocNum.

Subir Anexo a Vivienda

POST /api/Anexos/Subir/Viviendas

Body: - ItemCode, FileExt, Type, FileName, anexo

Subir a Múltiples Viviendas

POST /api/Anexos/Subir/Multiple

Body: - ItemCodes: "00-00000,00-00000,00-00000" (separados por comas) - Demás campos iguales


APARTADOS

Gestión de ventas en SAP.

Crear Apartado

POST /api/Apartados/Agregar
Content-Type: application/json

Body:

{
  "Plaza": 1,
  "CardCode": "C00001",
  "U_precioventa": 850000.00,
  "SalesPersonCode": 4,
  "Comments": "Comentarios",
  "ItemCode": "01-00123",
  "AccountCode": "CREDITO"
}

Obtener Apartado

GET /api/Apartados/{DocNum}

Obtiene apartado por número.

GET /api/Apartados?ItemCode={ItemCode}

Obtiene apartado por código de vivienda.

Listar Apartados

GET /api/Apartados

Todos los apartados.

GET /api/Apartados?page={page}&rows={rows}

Paginados.

Actualizar Avalúo

POST /api/Apartados/Actualizar/Avaluo

Body:

{
  "DocNum": "12345",
  "U_ORd_c_perito": "Nombre perito",
  "U_solicitudavaluo": "2024-01-15T10:00:00",
  "U_recepcionavaluo": "2024-01-20T10:00:00",
  "U_Obs_Avaluo": "Observaciones"
}

Actualizar Notaría

POST /api/Apartados/Actualizar/Notaria

Campos: Notario, número de notaría, fechas, montos, etc.

Actualizar Equipamiento

POST /api/Apartados/Actualizar/Equipamiento

Campos: Especificaciones de equipamiento (cocina, baños, etc.)

Actualizar Inscripción

POST /api/Apartados/Actualizar/Inscripcion

Registrar Detención

POST /api/Apartados/Actualizar/Detencion

Body:

{
  "DocNum": "12345",
  "U_motivodetencion": "Motivo",
  "U_fechadetencion": "2024-01-15",
  "U_fechaliberacion": "2024-01-20"
}

Cancelar Apartado

POST /api/Apartados/Cancelar

Body:

{
  "DocNum": "12345",
  "U_cancelacion": "Razón",
  "U_extra1": "Comentarios"
}


ASESORES

Información de representantes comerciales.

Buscar por RC

GET /api/AsesoresApartados?RC={RC}

Buscar por Nombre

GET /api/AsesoresApartados?Name={Name}

Listar Todos

GET /api/AsesoresApartados

CLIENTES

Gestión de clientes en SAP.

Crear Cliente

POST /api/Clientes/Crear

Body Persona Física:

{
  "CardType": 0,
  "U_Con_Per": "P. Fisica",
  "Plaza": "MONTERREY",
  "U_Con_NRS": "Juan Pérez García",
  "U_Con_APat": "Pérez",
  "U_Con_AMat": "García",
  "LicTradNum": "PEGJ800101ABC"
}

Body Persona Moral:

{
  "CardType": 0,
  "U_Con_Per": "P. Moral",
  "Plaza": "MONTERREY",
  "U_Con_NRS": "Empresa SA de CV",
  "LicTradNum": "EMP800101ABC"
}

Actualizar Cliente

POST /api/Clientes/Actualizar

Body (más de 70 campos disponibles):

{
  "CardCode": "C00001",
  "Phone1": "8112345678",
  "E_Mail": "cliente@email.com",
  "U_Pros_CasasInteres": "Calle",
  "U_Con_NInt": "123",
  ...
}

Obtener Cliente

GET /api/Clientes/{CardCode}

Listar Clientes

GET /api/Clientes

Todos los clientes.

GET /api/Clientes?page={page}&rows={rows}

Paginados.

GET /api/Clientes?filtro={filtro}

Filtrados por nombre, código o teléfono.

GET /api/Clientes?page={page}&rows={rows}&filtro={filtro}&User={User}

Paginados, filtrados y por usuario.


INVENTARIO FOTOS

Información de fotos de viviendas.

Inventario Completo

GET /api/InventarioFotos

Inventario Paginado

GET /api/InventarioFotos?page={page}&rows={rows}

Por Vivienda

GET /api/InventarioFotos/{ItemCode}

PROVISIONES

Gestión de provisiones.

Listar Todas

GET /api/ProvisionesAnexos

Paginadas y Filtradas

GET /api/ProvisionesAnexos?page={page}&rows={rows}&filtro={filtro}

Por Número

GET /api/ProvisionesAnexos/{DocNum}

Nombres de Anexos

GET /api/Provisiones/FileNames

Todos los anexos.

GET /api/Provisiones/FileNames?DocNum={DocNum}

Por provisión específica.


REPORTES

Generación de reportes.

Excel Inventario Fotos

GET /api/Reportes/InventarioFotos

Descarga Excel actualizado.

Generar Contrato

GET /api/Reportes/Contrato?TipoDeVenta={tipo}&PersonaFoM={persona}&Apartado={apartado}&ItemCode={itemcode}

Params: - TipoDeVenta: "CR" (Crédito) o "CO" (Contado) - PersonaFoM: "F" (Física) o "M" (Moral) - Apartado: Número de apartado - ItemCode: Código de vivienda

Ficha de Autorización

GET /api/Reportes/Ficha?Apartado={apartado}&Apoderado={apoderado}

VIVIENDAS

Catálogo de viviendas.

Listar Todas

GET /api/ViviendasWeb

Filtradas

GET /api/ViviendasWeb?Address={address}&RC={rc}

Por dirección y RC.

Paginadas y Filtradas

GET /api/ViviendasWeb?page={page}&rows={rows}&filtro={filtro}&User={user}

Notas Importantes

  1. Límite de archivo: Máximo 50MB por upload
  2. Formatos permitidos: jfif, pjpeg, jpeg, pjp, jpg, png, pdf
  3. Autenticación: Todas las peticiones requieren Basic Auth
  4. Timeout: 30 segundos recomendado
  5. Retry: Implementar retry logic para errores 5xx

Ejemplo de Uso en Python

import requests
from requests.auth import HTTPBasicAuth

BASE_URL = "http://atercerosb1.ddns.net"
auth = HTTPBasicAuth('username', 'password')

# Crear cliente
response = requests.post(
    f"{BASE_URL}/api/Clientes/Crear",
    json={
        "CardType": 0,
        "U_Con_Per": "P. Fisica",
        "Plaza": "MONTERREY",
        "U_Con_NRS": "Juan Pérez",
        "U_Con_APat": "Pérez",
        "U_Con_AMat": "García",
        "LicTradNum": "PEGJ800101ABC"
    },
    auth=auth
)

print(response.json())

Ver también: - API REST Django - Arquitectura - Integraciones