¿Cómo dar de alta una API por código?

jgonzalez
Thu, 07 Dec 2023 20:09:04 +0000
API

Duración: 2 min

¿Para qué sirve?
Para dar de alta APIs en el diccionario de APIs mediante script sql.

¿Quiénes pueden hacerlo?
Desarrolladores

En este cómo se hace veremos ejemplos de scripts sql para crear los distintos tipos de APIs que existen en el sistema

API de tipo Entidad

Se deben completar todos los campos que se ven en la pantalla de Configuración General de la Api en el sistema y en la solapa “Definición”. Ejemplo: facturaCompra es una api estándar de tipo Entidad que se puede crear mediante el siguiente script:

IF NOT EXISTS(SELECT 1 FROM FAFApiCatalog WHERE Codigo = 'facturaCompra3')
BEGIN
	DECLARE @DiccionarioID int
	SELECT @DiccionarioID = DiccionarioID FROM FAFDiccionario WHERE Codigo = 'OperacionVO'
    DECLARE @NucleoFuncionalID INT
    SELECT @NucleoFuncionalID = NucleoFuncionalID FROM FAFNucleoFuncional WHERE Codigo = 'COMPRAS'


	INSERT INTO FAFApiCatalog(Nombre, Codigo, EsEstandar, EsInterna, Activo, Descripcion, Tipo, SoportaGet, SoportaInsert, SoportaUpdate, SoportaList, DiccionarioID,NucleoFuncionalID, AppItem_ID, DefinitionXml)
	VALUES(
            'facturaCompra3', 'facturaCompra3', 1, 0, 1, '', 0, 1, 1, 1, 1, @DiccionarioID, @NucleoFuncionalID,NULL,
	'<?xml version="1.0" encoding="UTF-8"?><root>
	    <entidad id="main">
            <atributo nombre="IdentificacionExterna" alias="IdentificacionExterna" descripcion="Tipo: String, Obligatorio: No, Descripción: Identificación externa"/>
            <atributo nombre="EmpresaID" alias="EmpresaCodigo" descripcion="Tipo: String, Obligatorio: Si, Consulte la API /Empresa/list,Aca se pone el codigo de la sucursal a usar"/>
            <atributo nombre="Fecha" alias="Fecha" descripcion="Tipo: Date, Obligatorio: Si, Descripción: aaaa-mm-dd"/>
            <atributo nombre="FechaComprobante" alias="FechaComprobante" descripcion="Tipo: Date, Obligatorio: Si, Descripción: aaaa-mm-dd"/>
            <atributo nombre="OrganizacionID" alias="Proveedor" descripcion="Tipo: String, Obligatorio: Si, Consulte la API /Proveedor/list"/>
            <atributo nombre="CondicionPagoID" alias="CondicionPagoCodigo" descripcion="Tipo: String, Obligatorio: Si, Consulte la API /CondicionPago/list"/>
            <atributo nombre="TransaccionTipoID" alias="TransaccionTipoCodigo" descripcion="(String) Obligatorio. Valor a completar: OPER "/>
            <atributo nombre="TransaccionSubtipoID" alias="TransaccionSubtipoCodigo" descripcion="(String) Obligatorio. Consulte la API /TransaccionSubtipo/list"/>
            <atributo nombre="WorkflowID" alias="WorkflowCodigo" descripcion="Tipo: String, Obligatorio: Si, Descripción:CPRA-PROD "/>
            <atributo nombre="Nombre" alias="Nombre" descripcion="Tipo: String. Sólo para GET"/>
            <atributo nombre="Descripcion" alias="Descripcion" descripcion="Tipo: String, Obligatorio: No"/>
            <atributo nombre="NumeroDocumento" alias="NumeroComprobante" descripcion="Tipo: String, Obligatorio: Si, Descripción: Numero de documento"/>
            <atributo nombre="MonedaID" alias="MonedaCodigo" descripcion="Tipo: String, Obligatorio: Si, Consulte la API /Moneda/list"/>
            <atributo nombre="ProvinciaIDOrigen" alias="ProvinciaOrigenCodigo" descripcion="Tipo: String, Obligatorio: No, Consulte la API /Provincia/list"/>
            <atributo nombre="ProvinciaIDDestino" alias="ProvinciaDestinoCodigo" descripcion="Tipo: String, Obligatorio: No, Consulte la API /Provincia/list"/>
            <atributo nombre="ComprobanteTipoImpositivoID" alias="ComprobanteTipoImpositivoCodigo" descripcion="Tipo: String, Obligatorio: Si, Consulte la API /ComprobanteTipoImpositivo/list"/>
            <atributo nombre="CAINumero" alias="CAE" descripcion="Tipo: Int, Obligatorio: Si, Descripción: ##############"/>
            <atributo nombre="CAIFechaVto" alias="CAEFechaVto" descripcion="Tipo: Date, Obligatorio: Si, Descripción: aaaa-mm-dd"/>
            <atributo nombre="OperacionItems" alias="Productos" descripcion=""/>
            <atributo nombre="OperacionConceptos" alias="Conceptos" descripcion=""/>
            <atributo nombre="ItemsRetencion" alias="Retenciones" descripcion=""/>
            <atributo nombre="OperacionCotizaciones" alias="Cotizaciones" descripcion=""/>
            <atributo nombre="ImporteTotalControl" alias="ImporteTotalControl" descripcion="" requerido="false"/>
            <atributo nombre="IdentificacionExternaPadre" alias="IdentificacionExternaPadre" descripcion="Tipo: String, Obligatorio: No, Descripción: Identificación externa Padre"/>
        </entidad>
        <entidad id="OperacionItems">
            <atributo nombre="ProductoID" alias="ProductoCodigo" descripcion="Tipo: String, Obligatorio: Si, Consulte la API /Producto/list"/>
            <atributo nombre="CantidadWorkflow" alias="Cantidad" descripcion="Tipo: Int, Obligatorio: Si, Descripción: ####"/>
            <atributo nombre="Precio" alias="Precio" descripcion="Tipo: Decimal, Obligatorio: Si, Descripción: ##.###"/>
            <atributo nombre="DimensionDistribucion" alias="DimensionDistribucion" descripcion=""/>
            <atributo nombre="ImporteExento" alias="ImporteExento" descripcion="Tipo:Integer, Obligatorio:NO"/>
            <atributo nombre="vinculacionOrigen" alias="vinculacionOrigen" descripcion="(String), No Obligatorio. Identificacion Externa de la transaccion origen a vincular"/>
            <atributo nombre="PrecioTipo" alias="PrecioTipo"/>
            <atributo nombre="PrecioBase" alias="PrecioBase" descripcion="" requerido="false"/>
            <atributo nombre="Descripcion" alias="Descripcion" descripcion="Tipo: String, Obligatorio: No"/>
        </entidad>
        <entidad id="OperacionConceptos">
            <atributo nombre="ConceptoID" alias="ConceptoCodigo" descripcion="(String) Obligatorio. Consulte la API /Concepto/list"/>
            <atributo nombre="Control1" alias="ImporteEditable" descripcion="(Boolean) Indique 1 para que tome en cuenta el ConceptoImporte y el ConceptoImporteGravado. Indique 0 para que se calcule automáticamente según la tasa"/>
            <atributo nombre="Importe" alias="ConceptoImporte" descripcion="(Decimal) Obligatorio si indicó 1 en ImporteEditable. Con formato ##.###"/>
            <atributo nombre="ImporteGravado" alias="ConceptoImporteGravado" descripcion="(Decimal) Obligatorio si indicó 1 en ImporteEditable. Con formato ##.###"/>
        </entidad>
        <entidad id="ItemsRetencion">
            <atributo nombre="TipoRetencion" alias="TipoRetencionCodigo" descripcion=" PADRE Tipo: String, Obligatorio: Si"/>
            <atributo nombre="Retencion" alias="RetencionCodigo" descripcion="Tipo: String, Obligatorio: Si, Consulte la API /Retencion/list"/>
            <atributo nombre="Importe" alias="RetencionImporte" descripcion="Tipo: Decimal, Obligatorio: Si, Descripción: ##.###"/>
            <atributo nombre="Comprobante" alias="Comprobante" descripcion="Tipo: String, Obligatorio: Si"/>
            <atributo nombre="ISAR" alias="ISAR" descripcion="Tipo: Decimal, Obligatorio: No, Descripción: ##.###"/>
        </entidad>
        <entidad id="OperacionCotizaciones">
        <atributo nombre="MonedaID" alias="MonedaCodigo" descripcion="(Tipo) String"/>
        <atributo nombre="Cotizacion" alias="Cotizacion" descripcion="(Tipo) Float" requerido="false"/>
        </entidad>
    </root>
	'
	)
END
GO

API de tipo Viewer

Este tipo de apis utiliza una view que debe estar creada para su funcionamiento y se deben completar todos los campos que se ven en la pantalla de Configuración General de la Api en el sistema. Ejemplo: AgroDepositos es una api de tipo Viewer que se puede crear mediante el siguiente script:

IF NOT EXISTS(SELECT 1 FROM FAFApiCatalog WHERE Codigo = 'AgroDepositos')
BEGIN
	DECLARE @AppItemID int
	SELECT @AppItemID = AppItem_ID FROM FAFAppItem WHERE Codigo = 'AGRODEPOSITO'
    DECLARE @NucleoFuncionalID INT
    SELECT @NucleoFuncionalID = NucleoFuncionalID FROM FAFNucleoFuncional WHERE Codigo = 'AGRO_BASE'


	INSERT INTO FAFApiCatalog(Nombre, Codigo, EsEstandar, EsInterna, Activo, Descripcion, Tipo, SoportaGet, SoportaInsert, SoportaUpdate, SoportaList, DiccionarioID,NucleoFuncionalID, AppItem_ID, DefinitionXml)
	VALUES(
            'AgroDepositos', 'AgroDepositos', 0, 0, 1, 'Api para vista AgroDepositos', 1, 0, 0, 0, 0, NULL, @NucleoFuncionalID, @AppItemID,''
	)
END
GO

API de tipo Java Class

Este tipo de apis utiliza un diccionario de datos para su funcionamiento y se deben completar todos los campos que se ven en la pantalla de Configuración General de la Api en el sistema. Ejemplo: Actividad es una api de tipo Java Class que se puede crear mediante el siguiente script:

IF NOT EXISTS(SELECT 1 FROM FAFApiCatalog WHERE Codigo = 'Actividad')
BEGIN
	DECLARE @DiccionarioID int
	SELECT @DiccionarioID = AppItem_ID FROM FAFAppItem WHERE Codigo = 'ACTIVIDAD'

	INSERT INTO FAFApiCatalog(Nombre, Codigo, EsEstandar, EsInterna, Activo, Descripcion, Tipo, SoportaGet, SoportaInsert, SoportaUpdate, SoportaList, DiccionarioID,NucleoFuncionalID, AppItem_ID, DefinitionXml)
	VALUES(
            'Actividad', 'Actividad', 0, 0, 1, 'API de Actividades', 2, 0, 0, 0, 1, @DiccionarioID, NULL, NULL,'
            <?xml version="1.0" encoding="UTF-8"?>
                <root>
                    <entidad id="main">
                        <atributo nombre="Nombre" alias="Nombre" descripcion="" requerido="true"/>
                        <atributo nombre="Codigo" alias="Codigo" descripcion="" requerido="true"/>
                        <atributo nombre="EspecieID" alias="EspecieID" descripcion="" requerido="false"/>
                        <atributo nombre="Descripcion" alias="Descripcion" descripcion="" requerido="false"/>
                        <atributo nombre="ControlHasAsignacion" alias="ControlHasAsignacion" descripcion="" requerido="false"/>
                        <atributo nombre="ActividadTipoID" alias="ActividadTipoID" descripcion="" requerido="true"/>
                        <atributo nombre="CicloIDForestal" alias="CicloIDForestal" descripcion="" requerido="false"/>
                        <atributo nombre="Activo" alias="Activo" descripcion="" requerido="false"/>
                    </entidad>
                </root>'
	)
END
GO

**