FrameAppWS

<back to all web services

DefinicionGrupoCuboRQ

Requires Authentication
The following routes are available for this service:
All Verbs/Utilidades/Consultas/Cubos/DefinicionGrupo
<?php namespace dtos;

use DateTime;
use Exception;
use DateInterval;
use JsonSerializable;
use ServiceStack\{IReturn,IReturnVoid,IGet,IPost,IPut,IDelete,IPatch,IMeta,IHasSessionId,IHasBearerToken,IHasVersion};
use ServiceStack\{ICrud,ICreateDb,IUpdateDb,IPatchDb,IDeleteDb,ISaveDb,AuditBase,QueryDb,QueryDb2,QueryData,QueryData2,QueryResponse};
use ServiceStack\{ResponseStatus,ResponseError,EmptyResponse,IdResponse,ArrayList,KeyValuePair2,StringResponse,StringsResponse,Tuple2,Tuple3,ByteArray};
use ServiceStack\{JsonConverters,Returns,TypeContext};


class PivotGridGrupo implements JsonSerializable
{
    public function __construct(
        /** @var float */
        public float $Codigo=0.0,
        /** @var string|null */
        public ?string $Nombre=null,
        /** @var string|null */
        public ?string $Observaciones=null,
        /** @var string|null */
        public ?string $Usuario=null,
        /** @var DateTime */
        public DateTime $FechaCreacion=new DateTime()
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Codigo'])) $this->Codigo = $o['Codigo'];
        if (isset($o['Nombre'])) $this->Nombre = $o['Nombre'];
        if (isset($o['Observaciones'])) $this->Observaciones = $o['Observaciones'];
        if (isset($o['Usuario'])) $this->Usuario = $o['Usuario'];
        if (isset($o['FechaCreacion'])) $this->FechaCreacion = JsonConverters::from('DateTime', $o['FechaCreacion']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Codigo)) $o['Codigo'] = $this->Codigo;
        if (isset($this->Nombre)) $o['Nombre'] = $this->Nombre;
        if (isset($this->Observaciones)) $o['Observaciones'] = $this->Observaciones;
        if (isset($this->Usuario)) $o['Usuario'] = $this->Usuario;
        if (isset($this->FechaCreacion)) $o['FechaCreacion'] = JsonConverters::to('DateTime', $this->FechaCreacion);
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract
class Tabla implements JsonSerializable
{
    public function __construct(
        // @DataMember
        /** @var float */
        public float $Codigo=0.0,

        // @DataMember
        /** @var string|null */
        public ?string $Propietario=null,

        // @DataMember
        /** @var string|null */
        public ?string $Tipo=null,

        // @DataMember
        /** @var string|null */
        public ?string $Nombre=null,

        // @DataMember
        /** @var string|null */
        public ?string $Alias=null,

        // @DataMember
        /** @var string|null */
        public ?string $Descripcion=null,

        // @DataMember
        /** @var string|null */
        public ?string $ParaReportes=null,

        // @DataMember
        /** @var string|null */
        public ?string $CrearAlIniciar=null,

        // @DataMember
        /** @var int */
        public int $CampoEmpresa=0,

        // @DataMember
        /** @var int */
        public int $CampoUnico=0
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Codigo'])) $this->Codigo = $o['Codigo'];
        if (isset($o['Propietario'])) $this->Propietario = $o['Propietario'];
        if (isset($o['Tipo'])) $this->Tipo = $o['Tipo'];
        if (isset($o['Nombre'])) $this->Nombre = $o['Nombre'];
        if (isset($o['Alias'])) $this->Alias = $o['Alias'];
        if (isset($o['Descripcion'])) $this->Descripcion = $o['Descripcion'];
        if (isset($o['ParaReportes'])) $this->ParaReportes = $o['ParaReportes'];
        if (isset($o['CrearAlIniciar'])) $this->CrearAlIniciar = $o['CrearAlIniciar'];
        if (isset($o['CampoEmpresa'])) $this->CampoEmpresa = $o['CampoEmpresa'];
        if (isset($o['CampoUnico'])) $this->CampoUnico = $o['CampoUnico'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Codigo)) $o['Codigo'] = $this->Codigo;
        if (isset($this->Propietario)) $o['Propietario'] = $this->Propietario;
        if (isset($this->Tipo)) $o['Tipo'] = $this->Tipo;
        if (isset($this->Nombre)) $o['Nombre'] = $this->Nombre;
        if (isset($this->Alias)) $o['Alias'] = $this->Alias;
        if (isset($this->Descripcion)) $o['Descripcion'] = $this->Descripcion;
        if (isset($this->ParaReportes)) $o['ParaReportes'] = $this->ParaReportes;
        if (isset($this->CrearAlIniciar)) $o['CrearAlIniciar'] = $this->CrearAlIniciar;
        if (isset($this->CampoEmpresa)) $o['CampoEmpresa'] = $this->CampoEmpresa;
        if (isset($this->CampoUnico)) $o['CampoUnico'] = $this->CampoUnico;
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract
class Columna implements JsonSerializable
{
    public function __construct(
        // @DataMember
        /** @var float */
        public float $CodigoTabla=0.0,

        // @DataMember
        /** @var float */
        public float $Codigo=0.0,

        // @DataMember
        /** @var string|null */
        public ?string $Nombre=null,

        // @DataMember
        /** @var string|null */
        public ?string $Alias=null,

        // @DataMember
        /** @var string|null */
        public ?string $Descripcion=null,

        // @DataMember
        /** @var string|null */
        public ?string $TipoDato=null,

        // @DataMember
        /** @var string|null */
        public ?string $ObligatorioFormas=null,

        // @DataMember
        /** @var string|null */
        public ?string $Hint=null,

        // @DataMember
        /** @var string|null */
        public ?string $Mayuscula=null,

        // @DataMember
        /** @var int */
        public int $Tamano=0,

        // @DataMember
        /** @var int */
        public int $Escala=0,

        // @DataMember
        /** @var string|null */
        public ?string $Tipo=null,

        // @DataMember
        /** @var string|null */
        public ?string $VlrDefecto=null,

        // @DataMember
        /** @var string|null */
        public ?string $PermiteEditar=null,

        // @DataMember
        /** @var int */
        public int $Orden=0,

        // @DataMember
        /** @var string|null */
        public ?string $Dinamico=null,

        // @DataMember
        /** @var string|null */
        public ?string $ClaseControl=null,

        // @DataMember
        /** @var float */
        public float $JoinLookup=0.0,

        // @DataMember
        /** @var string|null */
        public ?string $EsID=null,

        // @DataMember
        /** @var string|null */
        public ?string $Mascara=null,

        // @DataMember
        /** @var string|null */
        public ?string $MostrarEnLista=null,

        // @DataMember
        /** @var string|null */
        public ?string $InfoAdicional=null,

        // @DataMember
        /** @var string|null */
        public ?string $WHEREDefecto=null,

        // @DataMember
        /** @var string|null */
        public ?string $TieneResumen=null,

        // @DataMember
        /** @var string|null */
        public ?string $FormatoResumen=null,

        // @DataMember
        /** @var string|null */
        public ?string $TipoResumen=null,

        // @DataMember
        /** @var string|null */
        public ?string $PosicionResumen=null,

        // @DataMember
        /** @var string|null */
        public ?string $ResumenEnGrupo=null,

        // @DataMember
        /** @var string|null */
        public ?string $ResumenEnTotal=null,

        // @DataMember
        /** @var int */
        public int $IndiceGrupo=0
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['CodigoTabla'])) $this->CodigoTabla = $o['CodigoTabla'];
        if (isset($o['Codigo'])) $this->Codigo = $o['Codigo'];
        if (isset($o['Nombre'])) $this->Nombre = $o['Nombre'];
        if (isset($o['Alias'])) $this->Alias = $o['Alias'];
        if (isset($o['Descripcion'])) $this->Descripcion = $o['Descripcion'];
        if (isset($o['TipoDato'])) $this->TipoDato = $o['TipoDato'];
        if (isset($o['ObligatorioFormas'])) $this->ObligatorioFormas = $o['ObligatorioFormas'];
        if (isset($o['Hint'])) $this->Hint = $o['Hint'];
        if (isset($o['Mayuscula'])) $this->Mayuscula = $o['Mayuscula'];
        if (isset($o['Tamano'])) $this->Tamano = $o['Tamano'];
        if (isset($o['Escala'])) $this->Escala = $o['Escala'];
        if (isset($o['Tipo'])) $this->Tipo = $o['Tipo'];
        if (isset($o['VlrDefecto'])) $this->VlrDefecto = $o['VlrDefecto'];
        if (isset($o['PermiteEditar'])) $this->PermiteEditar = $o['PermiteEditar'];
        if (isset($o['Orden'])) $this->Orden = $o['Orden'];
        if (isset($o['Dinamico'])) $this->Dinamico = $o['Dinamico'];
        if (isset($o['ClaseControl'])) $this->ClaseControl = $o['ClaseControl'];
        if (isset($o['JoinLookup'])) $this->JoinLookup = $o['JoinLookup'];
        if (isset($o['EsID'])) $this->EsID = $o['EsID'];
        if (isset($o['Mascara'])) $this->Mascara = $o['Mascara'];
        if (isset($o['MostrarEnLista'])) $this->MostrarEnLista = $o['MostrarEnLista'];
        if (isset($o['InfoAdicional'])) $this->InfoAdicional = $o['InfoAdicional'];
        if (isset($o['WHEREDefecto'])) $this->WHEREDefecto = $o['WHEREDefecto'];
        if (isset($o['TieneResumen'])) $this->TieneResumen = $o['TieneResumen'];
        if (isset($o['FormatoResumen'])) $this->FormatoResumen = $o['FormatoResumen'];
        if (isset($o['TipoResumen'])) $this->TipoResumen = $o['TipoResumen'];
        if (isset($o['PosicionResumen'])) $this->PosicionResumen = $o['PosicionResumen'];
        if (isset($o['ResumenEnGrupo'])) $this->ResumenEnGrupo = $o['ResumenEnGrupo'];
        if (isset($o['ResumenEnTotal'])) $this->ResumenEnTotal = $o['ResumenEnTotal'];
        if (isset($o['IndiceGrupo'])) $this->IndiceGrupo = $o['IndiceGrupo'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->CodigoTabla)) $o['CodigoTabla'] = $this->CodigoTabla;
        if (isset($this->Codigo)) $o['Codigo'] = $this->Codigo;
        if (isset($this->Nombre)) $o['Nombre'] = $this->Nombre;
        if (isset($this->Alias)) $o['Alias'] = $this->Alias;
        if (isset($this->Descripcion)) $o['Descripcion'] = $this->Descripcion;
        if (isset($this->TipoDato)) $o['TipoDato'] = $this->TipoDato;
        if (isset($this->ObligatorioFormas)) $o['ObligatorioFormas'] = $this->ObligatorioFormas;
        if (isset($this->Hint)) $o['Hint'] = $this->Hint;
        if (isset($this->Mayuscula)) $o['Mayuscula'] = $this->Mayuscula;
        if (isset($this->Tamano)) $o['Tamano'] = $this->Tamano;
        if (isset($this->Escala)) $o['Escala'] = $this->Escala;
        if (isset($this->Tipo)) $o['Tipo'] = $this->Tipo;
        if (isset($this->VlrDefecto)) $o['VlrDefecto'] = $this->VlrDefecto;
        if (isset($this->PermiteEditar)) $o['PermiteEditar'] = $this->PermiteEditar;
        if (isset($this->Orden)) $o['Orden'] = $this->Orden;
        if (isset($this->Dinamico)) $o['Dinamico'] = $this->Dinamico;
        if (isset($this->ClaseControl)) $o['ClaseControl'] = $this->ClaseControl;
        if (isset($this->JoinLookup)) $o['JoinLookup'] = $this->JoinLookup;
        if (isset($this->EsID)) $o['EsID'] = $this->EsID;
        if (isset($this->Mascara)) $o['Mascara'] = $this->Mascara;
        if (isset($this->MostrarEnLista)) $o['MostrarEnLista'] = $this->MostrarEnLista;
        if (isset($this->InfoAdicional)) $o['InfoAdicional'] = $this->InfoAdicional;
        if (isset($this->WHEREDefecto)) $o['WHEREDefecto'] = $this->WHEREDefecto;
        if (isset($this->TieneResumen)) $o['TieneResumen'] = $this->TieneResumen;
        if (isset($this->FormatoResumen)) $o['FormatoResumen'] = $this->FormatoResumen;
        if (isset($this->TipoResumen)) $o['TipoResumen'] = $this->TipoResumen;
        if (isset($this->PosicionResumen)) $o['PosicionResumen'] = $this->PosicionResumen;
        if (isset($this->ResumenEnGrupo)) $o['ResumenEnGrupo'] = $this->ResumenEnGrupo;
        if (isset($this->ResumenEnTotal)) $o['ResumenEnTotal'] = $this->ResumenEnTotal;
        if (isset($this->IndiceGrupo)) $o['IndiceGrupo'] = $this->IndiceGrupo;
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract
class Frame implements JsonSerializable
{
    public function __construct(
        // @DataMember
        /** @var float */
        public float $Codigo=0.0,

        // @DataMember
        /** @var string|null */
        public ?string $SQL=null,

        // @DataMember
        /** @var array<string>|null */
        public ?array $Campos1=null,

        // @DataMember
        /** @var array<string>|null */
        public ?array $Campos2=null,

        // @DataMember
        /** @var DefinicionTabla|null */
        public ?DefinicionTabla $TablaFrame=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Codigo'])) $this->Codigo = $o['Codigo'];
        if (isset($o['SQL'])) $this->SQL = $o['SQL'];
        if (isset($o['Campos1'])) $this->Campos1 = JsonConverters::fromArray('string', $o['Campos1']);
        if (isset($o['Campos2'])) $this->Campos2 = JsonConverters::fromArray('string', $o['Campos2']);
        if (isset($o['TablaFrame'])) $this->TablaFrame = JsonConverters::from('DefinicionTabla', $o['TablaFrame']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Codigo)) $o['Codigo'] = $this->Codigo;
        if (isset($this->SQL)) $o['SQL'] = $this->SQL;
        if (isset($this->Campos1)) $o['Campos1'] = JsonConverters::toArray('string', $this->Campos1);
        if (isset($this->Campos2)) $o['Campos2'] = JsonConverters::toArray('string', $this->Campos2);
        if (isset($this->TablaFrame)) $o['TablaFrame'] = JsonConverters::to('DefinicionTabla', $this->TablaFrame);
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract
class DetalleIndices implements JsonSerializable
{
    public function __construct(
        // @DataMember
        /** @var float */
        public float $CodigoTabla=0.0,

        // @DataMember
        /** @var string|null */
        public ?string $NombreIndice=null,

        // @DataMember
        /** @var float */
        public float $CodigoColumna=0.0,

        // @DataMember
        /** @var string|null */
        public ?string $TipoCalculo=null,

        // @DataMember
        /** @var string|null */
        public ?string $Secuencia=null,

        // @DataMember
        /** @var string|null */
        public ?string $NombreColumna=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['CodigoTabla'])) $this->CodigoTabla = $o['CodigoTabla'];
        if (isset($o['NombreIndice'])) $this->NombreIndice = $o['NombreIndice'];
        if (isset($o['CodigoColumna'])) $this->CodigoColumna = $o['CodigoColumna'];
        if (isset($o['TipoCalculo'])) $this->TipoCalculo = $o['TipoCalculo'];
        if (isset($o['Secuencia'])) $this->Secuencia = $o['Secuencia'];
        if (isset($o['NombreColumna'])) $this->NombreColumna = $o['NombreColumna'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->CodigoTabla)) $o['CodigoTabla'] = $this->CodigoTabla;
        if (isset($this->NombreIndice)) $o['NombreIndice'] = $this->NombreIndice;
        if (isset($this->CodigoColumna)) $o['CodigoColumna'] = $this->CodigoColumna;
        if (isset($this->TipoCalculo)) $o['TipoCalculo'] = $this->TipoCalculo;
        if (isset($this->Secuencia)) $o['Secuencia'] = $this->Secuencia;
        if (isset($this->NombreColumna)) $o['NombreColumna'] = $this->NombreColumna;
        return empty($o) ? new class(){} : $o;
    }
}

class ColCountByScreen implements JsonSerializable
{
    public function __construct(
        /** @var int */
        public int $lg=0,
        /** @var int */
        public int $md=0,
        /** @var int */
        public int $sm=0,
        /** @var int */
        public int $xs=0
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['lg'])) $this->lg = $o['lg'];
        if (isset($o['md'])) $this->md = $o['md'];
        if (isset($o['sm'])) $this->sm = $o['sm'];
        if (isset($o['xs'])) $this->xs = $o['xs'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->lg)) $o['lg'] = $this->lg;
        if (isset($this->md)) $o['md'] = $this->md;
        if (isset($this->sm)) $o['sm'] = $this->sm;
        if (isset($this->xs)) $o['xs'] = $this->xs;
        return empty($o) ? new class(){} : $o;
    }
}

enum ItemTypeForm : string
{
    case simple = 'simple';
    case group = 'group';
    case tabbed = 'tabbed';
    case empty = 'empty';
}

class EmptyItemForm implements JsonSerializable
{
    public function __construct(
        /** @var ItemTypeForm|null */
        public ?ItemTypeForm $itemType=null,
        /** @var int */
        public int $visibleIndex=0
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['itemType'])) $this->itemType = JsonConverters::from('ItemTypeForm', $o['itemType']);
        if (isset($o['visibleIndex'])) $this->visibleIndex = $o['visibleIndex'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->itemType)) $o['itemType'] = JsonConverters::to('ItemTypeForm', $this->itemType);
        if (isset($this->visibleIndex)) $o['visibleIndex'] = $this->visibleIndex;
        return empty($o) ? new class(){} : $o;
    }
}

class dxForm implements JsonSerializable
{
    public function __construct(
        /** @var ColCountByScreen|null */
        public ?ColCountByScreen $colCountByScreen=null,
        /** @var string|null */
        public ?string $labelLocation=null,
        /** @var bool|null */
        public ?bool $readOnly=null,
        /** @var array<EmptyItemForm>|null */
        public ?array $items=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['colCountByScreen'])) $this->colCountByScreen = JsonConverters::from('ColCountByScreen', $o['colCountByScreen']);
        if (isset($o['labelLocation'])) $this->labelLocation = $o['labelLocation'];
        if (isset($o['readOnly'])) $this->readOnly = $o['readOnly'];
        if (isset($o['items'])) $this->items = JsonConverters::fromArray('EmptyItemForm', $o['items']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->colCountByScreen)) $o['colCountByScreen'] = JsonConverters::to('ColCountByScreen', $this->colCountByScreen);
        if (isset($this->labelLocation)) $o['labelLocation'] = $this->labelLocation;
        if (isset($this->readOnly)) $o['readOnly'] = $this->readOnly;
        if (isset($this->items)) $o['items'] = JsonConverters::toArray('EmptyItemForm', $this->items);
        return empty($o) ? new class(){} : $o;
    }
}

class ValidationRule implements JsonSerializable
{
    public function __construct(
        /** @var string|null */
        public ?string $type=null,
        /** @var string|null */
        public ?string $message=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['type'])) $this->type = $o['type'];
        if (isset($o['message'])) $this->message = $o['message'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->type)) $o['type'] = $this->type;
        if (isset($this->message)) $o['message'] = $this->message;
        return empty($o) ? new class(){} : $o;
    }
}

class LookupGrid implements JsonSerializable
{
    public function __construct(
        /** @var bool|null */
        public ?bool $allowClearing=null,
        /** @var string|null */
        public ?string $displayExpr=null,
        /** @var string|null */
        public ?string $valueExpr=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['allowClearing'])) $this->allowClearing = $o['allowClearing'];
        if (isset($o['displayExpr'])) $this->displayExpr = $o['displayExpr'];
        if (isset($o['valueExpr'])) $this->valueExpr = $o['valueExpr'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->allowClearing)) $o['allowClearing'] = $this->allowClearing;
        if (isset($this->displayExpr)) $o['displayExpr'] = $this->displayExpr;
        if (isset($this->valueExpr)) $o['valueExpr'] = $this->valueExpr;
        return empty($o) ? new class(){} : $o;
    }
}

class ColumnGrid implements JsonSerializable
{
    public function __construct(
        /** @var string|null */
        public ?string $caption=null,
        /** @var string|null */
        public ?string $dataField=null,
        /** @var string|null */
        public ?string $dataType=null,
        /** @var int */
        public int $visibleIndex=0,
        /** @var array<ValidationRule>|null */
        public ?array $validationRules=null,
        /** @var LookupGrid|null */
        public ?LookupGrid $lookup=null,
        /** @var bool|null */
        public ?bool $allowEditing=null,
        /** @var bool|null */
        public ?bool $encodeHtml=null,
        /** @var array<string,Object>|null */
        public ?array $editorOptions=null,
        /** @var int|null */
        public ?int $groupIndex=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['caption'])) $this->caption = $o['caption'];
        if (isset($o['dataField'])) $this->dataField = $o['dataField'];
        if (isset($o['dataType'])) $this->dataType = $o['dataType'];
        if (isset($o['visibleIndex'])) $this->visibleIndex = $o['visibleIndex'];
        if (isset($o['validationRules'])) $this->validationRules = JsonConverters::fromArray('ValidationRule', $o['validationRules']);
        if (isset($o['lookup'])) $this->lookup = JsonConverters::from('LookupGrid', $o['lookup']);
        if (isset($o['allowEditing'])) $this->allowEditing = $o['allowEditing'];
        if (isset($o['encodeHtml'])) $this->encodeHtml = $o['encodeHtml'];
        if (isset($o['editorOptions'])) $this->editorOptions = JsonConverters::from(JsonConverters::context('Dictionary',genericArgs:['string','Object']), $o['editorOptions']);
        if (isset($o['groupIndex'])) $this->groupIndex = $o['groupIndex'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->caption)) $o['caption'] = $this->caption;
        if (isset($this->dataField)) $o['dataField'] = $this->dataField;
        if (isset($this->dataType)) $o['dataType'] = $this->dataType;
        if (isset($this->visibleIndex)) $o['visibleIndex'] = $this->visibleIndex;
        if (isset($this->validationRules)) $o['validationRules'] = JsonConverters::toArray('ValidationRule', $this->validationRules);
        if (isset($this->lookup)) $o['lookup'] = JsonConverters::to('LookupGrid', $this->lookup);
        if (isset($this->allowEditing)) $o['allowEditing'] = $this->allowEditing;
        if (isset($this->encodeHtml)) $o['encodeHtml'] = $this->encodeHtml;
        if (isset($this->editorOptions)) $o['editorOptions'] = JsonConverters::to(JsonConverters::context('Dictionary',genericArgs:['string','Object']), $this->editorOptions);
        if (isset($this->groupIndex)) $o['groupIndex'] = $this->groupIndex;
        return empty($o) ? new class(){} : $o;
    }
}

class EditingGrid implements JsonSerializable
{
    public function __construct(
        /** @var bool|null */
        public ?bool $allowAdding=null,
        /** @var bool|null */
        public ?bool $allowDeleting=null,
        /** @var bool|null */
        public ?bool $allowUpdating=null,
        /** @var string|null */
        public ?string $mode=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['allowAdding'])) $this->allowAdding = $o['allowAdding'];
        if (isset($o['allowDeleting'])) $this->allowDeleting = $o['allowDeleting'];
        if (isset($o['allowUpdating'])) $this->allowUpdating = $o['allowUpdating'];
        if (isset($o['mode'])) $this->mode = $o['mode'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->allowAdding)) $o['allowAdding'] = $this->allowAdding;
        if (isset($this->allowDeleting)) $o['allowDeleting'] = $this->allowDeleting;
        if (isset($this->allowUpdating)) $o['allowUpdating'] = $this->allowUpdating;
        if (isset($this->mode)) $o['mode'] = $this->mode;
        return empty($o) ? new class(){} : $o;
    }
}

class gridSummaryGroupItems implements JsonSerializable
{
    public function __construct(
        /** @var string|null */
        public ?string $column=null,
        /** @var string|null */
        public ?string $displayFormat=null,
        /** @var bool|null */
        public ?bool $showInGroupFooter=null,
        /** @var string|null */
        public ?string $summaryType=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['column'])) $this->column = $o['column'];
        if (isset($o['displayFormat'])) $this->displayFormat = $o['displayFormat'];
        if (isset($o['showInGroupFooter'])) $this->showInGroupFooter = $o['showInGroupFooter'];
        if (isset($o['summaryType'])) $this->summaryType = $o['summaryType'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->column)) $o['column'] = $this->column;
        if (isset($this->displayFormat)) $o['displayFormat'] = $this->displayFormat;
        if (isset($this->showInGroupFooter)) $o['showInGroupFooter'] = $this->showInGroupFooter;
        if (isset($this->summaryType)) $o['summaryType'] = $this->summaryType;
        return empty($o) ? new class(){} : $o;
    }
}

class gridSummaryTotalItems implements JsonSerializable
{
    public function __construct(
        /** @var string|null */
        public ?string $column=null,
        /** @var string|null */
        public ?string $displayFormat=null,
        /** @var string|null */
        public ?string $summaryType=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['column'])) $this->column = $o['column'];
        if (isset($o['displayFormat'])) $this->displayFormat = $o['displayFormat'];
        if (isset($o['summaryType'])) $this->summaryType = $o['summaryType'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->column)) $o['column'] = $this->column;
        if (isset($this->displayFormat)) $o['displayFormat'] = $this->displayFormat;
        if (isset($this->summaryType)) $o['summaryType'] = $this->summaryType;
        return empty($o) ? new class(){} : $o;
    }
}

class gridSummary implements JsonSerializable
{
    public function __construct(
        /** @var array<gridSummaryGroupItems>|null */
        public ?array $groupItems=null,
        /** @var array<gridSummaryTotalItems>|null */
        public ?array $totalItems=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['groupItems'])) $this->groupItems = JsonConverters::fromArray('gridSummaryGroupItems', $o['groupItems']);
        if (isset($o['totalItems'])) $this->totalItems = JsonConverters::fromArray('gridSummaryTotalItems', $o['totalItems']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->groupItems)) $o['groupItems'] = JsonConverters::toArray('gridSummaryGroupItems', $this->groupItems);
        if (isset($this->totalItems)) $o['totalItems'] = JsonConverters::toArray('gridSummaryTotalItems', $this->totalItems);
        return empty($o) ? new class(){} : $o;
    }
}

class dxDataGrid implements JsonSerializable
{
    public function __construct(
        /** @var array<ColumnGrid>|null */
        public ?array $columns=null,
        /** @var bool|null */
        public ?bool $showColumnLines=null,
        /** @var bool|null */
        public ?bool $showRowLines=null,
        /** @var bool|null */
        public ?bool $rowAlternationEnabled=null,
        /** @var bool|null */
        public ?bool $showBorders=null,
        /** @var EditingGrid|null */
        public ?EditingGrid $editing=null,
        /** @var gridSummary|null */
        public ?gridSummary $summary=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['columns'])) $this->columns = JsonConverters::fromArray('ColumnGrid', $o['columns']);
        if (isset($o['showColumnLines'])) $this->showColumnLines = $o['showColumnLines'];
        if (isset($o['showRowLines'])) $this->showRowLines = $o['showRowLines'];
        if (isset($o['rowAlternationEnabled'])) $this->rowAlternationEnabled = $o['rowAlternationEnabled'];
        if (isset($o['showBorders'])) $this->showBorders = $o['showBorders'];
        if (isset($o['editing'])) $this->editing = JsonConverters::from('EditingGrid', $o['editing']);
        if (isset($o['summary'])) $this->summary = JsonConverters::from('gridSummary', $o['summary']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->columns)) $o['columns'] = JsonConverters::toArray('ColumnGrid', $this->columns);
        if (isset($this->showColumnLines)) $o['showColumnLines'] = $this->showColumnLines;
        if (isset($this->showRowLines)) $o['showRowLines'] = $this->showRowLines;
        if (isset($this->rowAlternationEnabled)) $o['rowAlternationEnabled'] = $this->rowAlternationEnabled;
        if (isset($this->showBorders)) $o['showBorders'] = $this->showBorders;
        if (isset($this->editing)) $o['editing'] = JsonConverters::to('EditingGrid', $this->editing);
        if (isset($this->summary)) $o['summary'] = JsonConverters::to('gridSummary', $this->summary);
        return empty($o) ? new class(){} : $o;
    }
}

class DefinicionTabla implements JsonSerializable
{
    public function __construct(
        /** @var Tabla|null */
        public ?Tabla $Tabla=null,
        /** @var array<Columna>|null */
        public ?array $Columnas=null,
        /** @var array<DetalleJoinTabla>|null */
        public ?array $Lookups=null,
        /** @var array<Frame>|null */
        public ?array $Frames=null,
        /** @var array<DetalleIndices>|null */
        public ?array $DetalleLlave=null,
        /** @var dxForm|null */
        public ?dxForm $Form=null,
        /** @var dxDataGrid|null */
        public ?dxDataGrid $DataGrid=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Tabla'])) $this->Tabla = JsonConverters::from('Tabla', $o['Tabla']);
        if (isset($o['Columnas'])) $this->Columnas = JsonConverters::fromArray('Columna', $o['Columnas']);
        if (isset($o['Lookups'])) $this->Lookups = JsonConverters::fromArray('DetalleJoinTabla', $o['Lookups']);
        if (isset($o['Frames'])) $this->Frames = JsonConverters::fromArray('Frame', $o['Frames']);
        if (isset($o['DetalleLlave'])) $this->DetalleLlave = JsonConverters::fromArray('DetalleIndices', $o['DetalleLlave']);
        if (isset($o['Form'])) $this->Form = JsonConverters::from('dxForm', $o['Form']);
        if (isset($o['DataGrid'])) $this->DataGrid = JsonConverters::from('dxDataGrid', $o['DataGrid']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Tabla)) $o['Tabla'] = JsonConverters::to('Tabla', $this->Tabla);
        if (isset($this->Columnas)) $o['Columnas'] = JsonConverters::toArray('Columna', $this->Columnas);
        if (isset($this->Lookups)) $o['Lookups'] = JsonConverters::toArray('DetalleJoinTabla', $this->Lookups);
        if (isset($this->Frames)) $o['Frames'] = JsonConverters::toArray('Frame', $this->Frames);
        if (isset($this->DetalleLlave)) $o['DetalleLlave'] = JsonConverters::toArray('DetalleIndices', $this->DetalleLlave);
        if (isset($this->Form)) $o['Form'] = JsonConverters::to('dxForm', $this->Form);
        if (isset($this->DataGrid)) $o['DataGrid'] = JsonConverters::to('dxDataGrid', $this->DataGrid);
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract
class Vista implements JsonSerializable
{
    public function __construct(
        // @DataMember
        /** @var float */
        public float $Codigo=0.0,

        // @DataMember
        /** @var float */
        public float $CodigoBlob=0.0,

        // @DataMember
        /** @var string|null */
        public ?string $Nombre=null,

        // @DataMember
        /** @var string|null */
        public ?string $Descripcion=null,

        // @DataMember
        /** @var string|null */
        public ?string $SQL=null,

        // @DataMember
        /** @var float */
        public float $CodigoTabla=0.0,

        // @DataMember
        /** @var string|null */
        public ?string $GuardarBinario=null,

        // @DataMember
        /** @var string|null */
        public ?string $TipoConsulta=null,

        // @DataMember
        /** @var string|null */
        public ?string $ExportacionDefault=null,

        // @DataMember
        /** @var string|null */
        public ?string $TipoExportacion=null,

        // @DataMember
        /** @var int */
        public int $ParametrosExportacion=0,

        // @DataMember
        /** @var string|null */
        public ?string $CodigoAyuda=null,

        // @DataMember
        /** @var string|null */
        public ?string $EjecutarEnAdm=null,

        // @DataMember
        /** @var string|null */
        public ?string $InfoAdicional=null,

        // @DataMember
        /** @var string|null */
        public ?string $EjecMultiempresa=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Codigo'])) $this->Codigo = $o['Codigo'];
        if (isset($o['CodigoBlob'])) $this->CodigoBlob = $o['CodigoBlob'];
        if (isset($o['Nombre'])) $this->Nombre = $o['Nombre'];
        if (isset($o['Descripcion'])) $this->Descripcion = $o['Descripcion'];
        if (isset($o['SQL'])) $this->SQL = $o['SQL'];
        if (isset($o['CodigoTabla'])) $this->CodigoTabla = $o['CodigoTabla'];
        if (isset($o['GuardarBinario'])) $this->GuardarBinario = $o['GuardarBinario'];
        if (isset($o['TipoConsulta'])) $this->TipoConsulta = $o['TipoConsulta'];
        if (isset($o['ExportacionDefault'])) $this->ExportacionDefault = $o['ExportacionDefault'];
        if (isset($o['TipoExportacion'])) $this->TipoExportacion = $o['TipoExportacion'];
        if (isset($o['ParametrosExportacion'])) $this->ParametrosExportacion = $o['ParametrosExportacion'];
        if (isset($o['CodigoAyuda'])) $this->CodigoAyuda = $o['CodigoAyuda'];
        if (isset($o['EjecutarEnAdm'])) $this->EjecutarEnAdm = $o['EjecutarEnAdm'];
        if (isset($o['InfoAdicional'])) $this->InfoAdicional = $o['InfoAdicional'];
        if (isset($o['EjecMultiempresa'])) $this->EjecMultiempresa = $o['EjecMultiempresa'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Codigo)) $o['Codigo'] = $this->Codigo;
        if (isset($this->CodigoBlob)) $o['CodigoBlob'] = $this->CodigoBlob;
        if (isset($this->Nombre)) $o['Nombre'] = $this->Nombre;
        if (isset($this->Descripcion)) $o['Descripcion'] = $this->Descripcion;
        if (isset($this->SQL)) $o['SQL'] = $this->SQL;
        if (isset($this->CodigoTabla)) $o['CodigoTabla'] = $this->CodigoTabla;
        if (isset($this->GuardarBinario)) $o['GuardarBinario'] = $this->GuardarBinario;
        if (isset($this->TipoConsulta)) $o['TipoConsulta'] = $this->TipoConsulta;
        if (isset($this->ExportacionDefault)) $o['ExportacionDefault'] = $this->ExportacionDefault;
        if (isset($this->TipoExportacion)) $o['TipoExportacion'] = $this->TipoExportacion;
        if (isset($this->ParametrosExportacion)) $o['ParametrosExportacion'] = $this->ParametrosExportacion;
        if (isset($this->CodigoAyuda)) $o['CodigoAyuda'] = $this->CodigoAyuda;
        if (isset($this->EjecutarEnAdm)) $o['EjecutarEnAdm'] = $this->EjecutarEnAdm;
        if (isset($this->InfoAdicional)) $o['InfoAdicional'] = $this->InfoAdicional;
        if (isset($this->EjecMultiempresa)) $o['EjecMultiempresa'] = $this->EjecMultiempresa;
        return empty($o) ? new class(){} : $o;
    }
}

class DetalleJoinTabla implements JsonSerializable
{
    public function __construct(
        /** @var float */
        public float $Codigo=0.0,
        /** @var string|null */
        public ?string $CampoAMostrar=null,
        /** @var array<string>|null */
        public ?array $Campos1=null,
        /** @var array<string>|null */
        public ?array $Campos2=null,
        /** @var array<string>|null */
        public ?array $Operadores=null,
        /** @var array<array<string,Object>>|null */
        public ?array $Datos=null,
        /** @var float */
        public float $CodigoTabla1=0.0,
        /** @var string|null */
        public ?string $SQL=null,
        /** @var DefinicionTabla|null */
        public ?DefinicionTabla $TablaDetalle=null,
        /** @var Vista|null */
        public ?Vista $Vista=null,
        /** @var string|null */
        public ?string $Version=null,
        /** @var string|null */
        public ?string $Ordenar=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Codigo'])) $this->Codigo = $o['Codigo'];
        if (isset($o['CampoAMostrar'])) $this->CampoAMostrar = $o['CampoAMostrar'];
        if (isset($o['Campos1'])) $this->Campos1 = JsonConverters::fromArray('string', $o['Campos1']);
        if (isset($o['Campos2'])) $this->Campos2 = JsonConverters::fromArray('string', $o['Campos2']);
        if (isset($o['Operadores'])) $this->Operadores = JsonConverters::fromArray('string', $o['Operadores']);
        if (isset($o['Datos'])) $this->Datos = JsonConverters::fromArray('Dictionary<String,Object>', $o['Datos']);
        if (isset($o['CodigoTabla1'])) $this->CodigoTabla1 = $o['CodigoTabla1'];
        if (isset($o['SQL'])) $this->SQL = $o['SQL'];
        if (isset($o['TablaDetalle'])) $this->TablaDetalle = JsonConverters::from('DefinicionTabla', $o['TablaDetalle']);
        if (isset($o['Vista'])) $this->Vista = JsonConverters::from('Vista', $o['Vista']);
        if (isset($o['Version'])) $this->Version = $o['Version'];
        if (isset($o['Ordenar'])) $this->Ordenar = $o['Ordenar'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Codigo)) $o['Codigo'] = $this->Codigo;
        if (isset($this->CampoAMostrar)) $o['CampoAMostrar'] = $this->CampoAMostrar;
        if (isset($this->Campos1)) $o['Campos1'] = JsonConverters::toArray('string', $this->Campos1);
        if (isset($this->Campos2)) $o['Campos2'] = JsonConverters::toArray('string', $this->Campos2);
        if (isset($this->Operadores)) $o['Operadores'] = JsonConverters::toArray('string', $this->Operadores);
        if (isset($this->Datos)) $o['Datos'] = JsonConverters::toArray('Dictionary<String,Object>', $this->Datos);
        if (isset($this->CodigoTabla1)) $o['CodigoTabla1'] = $this->CodigoTabla1;
        if (isset($this->SQL)) $o['SQL'] = $this->SQL;
        if (isset($this->TablaDetalle)) $o['TablaDetalle'] = JsonConverters::to('DefinicionTabla', $this->TablaDetalle);
        if (isset($this->Vista)) $o['Vista'] = JsonConverters::to('Vista', $this->Vista);
        if (isset($this->Version)) $o['Version'] = $this->Version;
        if (isset($this->Ordenar)) $o['Ordenar'] = $this->Ordenar;
        return empty($o) ? new class(){} : $o;
    }
}

class PivotGridConf implements JsonSerializable
{
    public function __construct(
        /** @var float */
        public float $Codigo=0.0,
        /** @var string|null */
        public ?string $Nombre=null,
        /** @var string|null */
        public ?string $CrearChart=null,
        /** @var string|null */
        public ?string $Configuration=null,
        /** @var string|null */
        public ?string $Chart=null,
        /** @var string|null */
        public ?string $Observaciones=null,
        /** @var float */
        public float $IDVista=0.0,
        /** @var string|null */
        public ?string $Usuario=null,
        /** @var DateTime */
        public DateTime $FechaCreacion=new DateTime()
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Codigo'])) $this->Codigo = $o['Codigo'];
        if (isset($o['Nombre'])) $this->Nombre = $o['Nombre'];
        if (isset($o['CrearChart'])) $this->CrearChart = $o['CrearChart'];
        if (isset($o['Configuration'])) $this->Configuration = $o['Configuration'];
        if (isset($o['Chart'])) $this->Chart = $o['Chart'];
        if (isset($o['Observaciones'])) $this->Observaciones = $o['Observaciones'];
        if (isset($o['IDVista'])) $this->IDVista = $o['IDVista'];
        if (isset($o['Usuario'])) $this->Usuario = $o['Usuario'];
        if (isset($o['FechaCreacion'])) $this->FechaCreacion = JsonConverters::from('DateTime', $o['FechaCreacion']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Codigo)) $o['Codigo'] = $this->Codigo;
        if (isset($this->Nombre)) $o['Nombre'] = $this->Nombre;
        if (isset($this->CrearChart)) $o['CrearChart'] = $this->CrearChart;
        if (isset($this->Configuration)) $o['Configuration'] = $this->Configuration;
        if (isset($this->Chart)) $o['Chart'] = $this->Chart;
        if (isset($this->Observaciones)) $o['Observaciones'] = $this->Observaciones;
        if (isset($this->IDVista)) $o['IDVista'] = $this->IDVista;
        if (isset($this->Usuario)) $o['Usuario'] = $this->Usuario;
        if (isset($this->FechaCreacion)) $o['FechaCreacion'] = JsonConverters::to('DateTime', $this->FechaCreacion);
        return empty($o) ? new class(){} : $o;
    }
}

class DefinicionCuboRS implements JsonSerializable
{
    public function __construct(
        /** @var Tabla|null */
        public ?Tabla $Tabla=null,
        /** @var string|null */
        public ?string $Descripcion=null,
        /** @var array<Columna>|null */
        public ?array $Filtros=null,
        /** @var array<Columna>|null */
        public ?array $Filas=null,
        /** @var array<Columna>|null */
        public ?array $Columnas=null,
        /** @var array<Columna>|null */
        public ?array $Calculos=null,
        /** @var array<Columna>|null */
        public ?array $Parametros=null,
        /** @var array<DetalleJoinTabla>|null */
        public ?array $Lookups=null,
        /** @var array<string,Object>|null */
        public ?array $dxPivotGrid=null,
        /** @var array<string,Object>|null */
        public ?array $dxChart=null,
        /** @var dxForm|null */
        public ?dxForm $FormaParametros=null,
        /** @var PivotGridConf|null */
        public ?PivotGridConf $PivotGridConf=null,
        /** @var string|null */
        public ?string $Error=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Tabla'])) $this->Tabla = JsonConverters::from('Tabla', $o['Tabla']);
        if (isset($o['Descripcion'])) $this->Descripcion = $o['Descripcion'];
        if (isset($o['Filtros'])) $this->Filtros = JsonConverters::fromArray('Columna', $o['Filtros']);
        if (isset($o['Filas'])) $this->Filas = JsonConverters::fromArray('Columna', $o['Filas']);
        if (isset($o['Columnas'])) $this->Columnas = JsonConverters::fromArray('Columna', $o['Columnas']);
        if (isset($o['Calculos'])) $this->Calculos = JsonConverters::fromArray('Columna', $o['Calculos']);
        if (isset($o['Parametros'])) $this->Parametros = JsonConverters::fromArray('Columna', $o['Parametros']);
        if (isset($o['Lookups'])) $this->Lookups = JsonConverters::fromArray('DetalleJoinTabla', $o['Lookups']);
        if (isset($o['dxPivotGrid'])) $this->dxPivotGrid = JsonConverters::from(JsonConverters::context('Dictionary',genericArgs:['string','Object']), $o['dxPivotGrid']);
        if (isset($o['dxChart'])) $this->dxChart = JsonConverters::from(JsonConverters::context('Dictionary',genericArgs:['string','Object']), $o['dxChart']);
        if (isset($o['FormaParametros'])) $this->FormaParametros = JsonConverters::from('dxForm', $o['FormaParametros']);
        if (isset($o['PivotGridConf'])) $this->PivotGridConf = JsonConverters::from('PivotGridConf', $o['PivotGridConf']);
        if (isset($o['Error'])) $this->Error = $o['Error'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Tabla)) $o['Tabla'] = JsonConverters::to('Tabla', $this->Tabla);
        if (isset($this->Descripcion)) $o['Descripcion'] = $this->Descripcion;
        if (isset($this->Filtros)) $o['Filtros'] = JsonConverters::toArray('Columna', $this->Filtros);
        if (isset($this->Filas)) $o['Filas'] = JsonConverters::toArray('Columna', $this->Filas);
        if (isset($this->Columnas)) $o['Columnas'] = JsonConverters::toArray('Columna', $this->Columnas);
        if (isset($this->Calculos)) $o['Calculos'] = JsonConverters::toArray('Columna', $this->Calculos);
        if (isset($this->Parametros)) $o['Parametros'] = JsonConverters::toArray('Columna', $this->Parametros);
        if (isset($this->Lookups)) $o['Lookups'] = JsonConverters::toArray('DetalleJoinTabla', $this->Lookups);
        if (isset($this->dxPivotGrid)) $o['dxPivotGrid'] = JsonConverters::to(JsonConverters::context('Dictionary',genericArgs:['string','Object']), $this->dxPivotGrid);
        if (isset($this->dxChart)) $o['dxChart'] = JsonConverters::to(JsonConverters::context('Dictionary',genericArgs:['string','Object']), $this->dxChart);
        if (isset($this->FormaParametros)) $o['FormaParametros'] = JsonConverters::to('dxForm', $this->FormaParametros);
        if (isset($this->PivotGridConf)) $o['PivotGridConf'] = JsonConverters::to('PivotGridConf', $this->PivotGridConf);
        if (isset($this->Error)) $o['Error'] = $this->Error;
        return empty($o) ? new class(){} : $o;
    }
}

class DefinicionGrupoCuboRS implements JsonSerializable
{
    public function __construct(
        /** @var PivotGridGrupo|null */
        public ?PivotGridGrupo $GrupoPivotGrid=null,
        /** @var array<DefinicionCuboRS>|null */
        public ?array $Items=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['GrupoPivotGrid'])) $this->GrupoPivotGrid = JsonConverters::from('PivotGridGrupo', $o['GrupoPivotGrid']);
        if (isset($o['Items'])) $this->Items = JsonConverters::fromArray('DefinicionCuboRS', $o['Items']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->GrupoPivotGrid)) $o['GrupoPivotGrid'] = JsonConverters::to('PivotGridGrupo', $this->GrupoPivotGrid);
        if (isset($this->Items)) $o['Items'] = JsonConverters::toArray('DefinicionCuboRS', $this->Items);
        return empty($o) ? new class(){} : $o;
    }
}

enum Lenguajes : string
{
    case ES = 'ES';
    case PT = 'PT';
    case EN = 'EN';
}

class DefinicionGrupoCuboRQ implements JsonSerializable
{
    public function __construct(
        /** @var int */
        public int $IDGrupo=0,
        /** @var Lenguajes|null */
        public ?Lenguajes $Lenguaje=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['IDGrupo'])) $this->IDGrupo = $o['IDGrupo'];
        if (isset($o['Lenguaje'])) $this->Lenguaje = JsonConverters::from('Lenguajes', $o['Lenguaje']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->IDGrupo)) $o['IDGrupo'] = $this->IDGrupo;
        if (isset($this->Lenguaje)) $o['Lenguaje'] = JsonConverters::to('Lenguajes', $this->Lenguaje);
        return empty($o) ? new class(){} : $o;
    }
}

PHP DefinicionGrupoCuboRQ DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv

HTTP + JSV

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /Utilidades/Consultas/Cubos/DefinicionGrupo HTTP/1.1 
Host: soluser-recaudo.sgsas.co 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	IDGrupo: 0,
	Lenguaje: ES
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	GrupoPivotGrid: 
	{
		Codigo: 0,
		Nombre: String,
		Observaciones: String,
		Usuario: String
	},
	Items: 
	[
		{
			Tabla: 
			{
				Codigo: 0,
				Propietario: String,
				Tipo: String,
				Nombre: String,
				Alias: String,
				Descripcion: String,
				ParaReportes: String,
				CrearAlIniciar: String,
				CampoEmpresa: 0,
				CampoUnico: 0
			},
			Descripcion: String,
			Filtros: 
			[
				{
					CodigoTabla: 0,
					Codigo: 0,
					Nombre: String,
					Alias: String,
					Descripcion: String,
					TipoDato: String,
					ObligatorioFormas: String,
					Hint: String,
					Mayuscula: String,
					Tamano: 0,
					Escala: 0,
					Tipo: String,
					VlrDefecto: String,
					PermiteEditar: String,
					Orden: 0,
					Dinamico: String,
					ClaseControl: String,
					JoinLookup: 0,
					EsID: String,
					Mascara: String,
					MostrarEnLista: String,
					InfoAdicional: String,
					WHEREDefecto: String,
					TieneResumen: String,
					FormatoResumen: String,
					TipoResumen: String,
					PosicionResumen: String,
					ResumenEnGrupo: String,
					ResumenEnTotal: String,
					IndiceGrupo: 0
				}
			],
			Filas: 
			[
				{
					CodigoTabla: 0,
					Codigo: 0,
					Nombre: String,
					Alias: String,
					Descripcion: String,
					TipoDato: String,
					ObligatorioFormas: String,
					Hint: String,
					Mayuscula: String,
					Tamano: 0,
					Escala: 0,
					Tipo: String,
					VlrDefecto: String,
					PermiteEditar: String,
					Orden: 0,
					Dinamico: String,
					ClaseControl: String,
					JoinLookup: 0,
					EsID: String,
					Mascara: String,
					MostrarEnLista: String,
					InfoAdicional: String,
					WHEREDefecto: String,
					TieneResumen: String,
					FormatoResumen: String,
					TipoResumen: String,
					PosicionResumen: String,
					ResumenEnGrupo: String,
					ResumenEnTotal: String,
					IndiceGrupo: 0
				}
			],
			Columnas: 
			[
				{
					CodigoTabla: 0,
					Codigo: 0,
					Nombre: String,
					Alias: String,
					Descripcion: String,
					TipoDato: String,
					ObligatorioFormas: String,
					Hint: String,
					Mayuscula: String,
					Tamano: 0,
					Escala: 0,
					Tipo: String,
					VlrDefecto: String,
					PermiteEditar: String,
					Orden: 0,
					Dinamico: String,
					ClaseControl: String,
					JoinLookup: 0,
					EsID: String,
					Mascara: String,
					MostrarEnLista: String,
					InfoAdicional: String,
					WHEREDefecto: String,
					TieneResumen: String,
					FormatoResumen: String,
					TipoResumen: String,
					PosicionResumen: String,
					ResumenEnGrupo: String,
					ResumenEnTotal: String,
					IndiceGrupo: 0
				}
			],
			Calculos: 
			[
				{
					CodigoTabla: 0,
					Codigo: 0,
					Nombre: String,
					Alias: String,
					Descripcion: String,
					TipoDato: String,
					ObligatorioFormas: String,
					Hint: String,
					Mayuscula: String,
					Tamano: 0,
					Escala: 0,
					Tipo: String,
					VlrDefecto: String,
					PermiteEditar: String,
					Orden: 0,
					Dinamico: String,
					ClaseControl: String,
					JoinLookup: 0,
					EsID: String,
					Mascara: String,
					MostrarEnLista: String,
					InfoAdicional: String,
					WHEREDefecto: String,
					TieneResumen: String,
					FormatoResumen: String,
					TipoResumen: String,
					PosicionResumen: String,
					ResumenEnGrupo: String,
					ResumenEnTotal: String,
					IndiceGrupo: 0
				}
			],
			Parametros: 
			[
				{
					CodigoTabla: 0,
					Codigo: 0,
					Nombre: String,
					Alias: String,
					Descripcion: String,
					TipoDato: String,
					ObligatorioFormas: String,
					Hint: String,
					Mayuscula: String,
					Tamano: 0,
					Escala: 0,
					Tipo: String,
					VlrDefecto: String,
					PermiteEditar: String,
					Orden: 0,
					Dinamico: String,
					ClaseControl: String,
					JoinLookup: 0,
					EsID: String,
					Mascara: String,
					MostrarEnLista: String,
					InfoAdicional: String,
					WHEREDefecto: String,
					TieneResumen: String,
					FormatoResumen: String,
					TipoResumen: String,
					PosicionResumen: String,
					ResumenEnGrupo: String,
					ResumenEnTotal: String,
					IndiceGrupo: 0
				}
			],
			Lookups: 
			[
				{
					Codigo: 0,
					CampoAMostrar: String,
					Campos1: 
					[
						String
					],
					Campos2: 
					[
						String
					],
					Operadores: 
					[
						String
					],
					Datos: 
					[
						{
							String: {}
						}
					],
					CodigoTabla1: 0,
					SQL: String,
					TablaDetalle: 
					{
						Tabla: 
						{
							Codigo: 0,
							Propietario: String,
							Tipo: String,
							Nombre: String,
							Alias: String,
							Descripcion: String,
							ParaReportes: String,
							CrearAlIniciar: String,
							CampoEmpresa: 0,
							CampoUnico: 0
						},
						Columnas: 
						[
							{
								CodigoTabla: 0,
								Codigo: 0,
								Nombre: String,
								Alias: String,
								Descripcion: String,
								TipoDato: String,
								ObligatorioFormas: String,
								Hint: String,
								Mayuscula: String,
								Tamano: 0,
								Escala: 0,
								Tipo: String,
								VlrDefecto: String,
								PermiteEditar: String,
								Orden: 0,
								Dinamico: String,
								ClaseControl: String,
								JoinLookup: 0,
								EsID: String,
								Mascara: String,
								MostrarEnLista: String,
								InfoAdicional: String,
								WHEREDefecto: String,
								TieneResumen: String,
								FormatoResumen: String,
								TipoResumen: String,
								PosicionResumen: String,
								ResumenEnGrupo: String,
								ResumenEnTotal: String,
								IndiceGrupo: 0
							}
						],
						Lookups: 
						[
							{
								Codigo: 0,
								CampoAMostrar: String,
								Campos1: 
								[
									String
								],
								Campos2: 
								[
									String
								],
								Operadores: 
								[
									String
								],
								Datos: 
								[
									{
										String: {}
									}
								],
								CodigoTabla1: 0,
								SQL: String,
								TablaDetalle: 
								{
									Tabla: 
									{
										Codigo: 0,
										Propietario: String,
										Tipo: String,
										Nombre: String,
										Alias: String,
										Descripcion: String,
										ParaReportes: String,
										CrearAlIniciar: String,
										CampoEmpresa: 0,
										CampoUnico: 0
									},
									Columnas: 
									[
										{
											CodigoTabla: 0,
											Codigo: 0,
											Nombre: String,
											Alias: String,
											Descripcion: String,
											TipoDato: String,
											ObligatorioFormas: String,
											Hint: String,
											Mayuscula: String,
											Tamano: 0,
											Escala: 0,
											Tipo: String,
											VlrDefecto: String,
											PermiteEditar: String,
											Orden: 0,
											Dinamico: String,
											ClaseControl: String,
											JoinLookup: 0,
											EsID: String,
											Mascara: String,
											MostrarEnLista: String,
											InfoAdicional: String,
											WHEREDefecto: String,
											TieneResumen: String,
											FormatoResumen: String,
											TipoResumen: String,
											PosicionResumen: String,
											ResumenEnGrupo: String,
											ResumenEnTotal: String,
											IndiceGrupo: 0
										}
									],
									Lookups: 
									[
										{
											Codigo: 0,
											CampoAMostrar: String,
											Campos1: 
											[
												String
											],
											Campos2: 
											[
												String
											],
											Operadores: 
											[
												String
											],
											Datos: 
											[
												{
													String: {}
												}
											],
											CodigoTabla1: 0,
											SQL: String,
											TablaDetalle: 
											{
												Tabla: 
												{
													Codigo: 0,
													Propietario: String,
													Tipo: String,
													Nombre: String,
													Alias: String,
													Descripcion: String,
													ParaReportes: String,
													CrearAlIniciar: String,
													CampoEmpresa: 0,
													CampoUnico: 0
												},
												Columnas: 
												[
													{
														CodigoTabla: 0,
														Codigo: 0,
														Nombre: String,
														Alias: String,
														Descripcion: String,
														TipoDato: String,
														ObligatorioFormas: String,
														Hint: String,
														Mayuscula: String,
														Tamano: 0,
														Escala: 0,
														Tipo: String,
														VlrDefecto: String,
														PermiteEditar: String,
														Orden: 0,
														Dinamico: String,
														ClaseControl: String,
														JoinLookup: 0,
														EsID: String,
														Mascara: String,
														MostrarEnLista: String,
														InfoAdicional: String,
														WHEREDefecto: String,
														TieneResumen: String,
														FormatoResumen: String,
														TipoResumen: String,
														PosicionResumen: String,
														ResumenEnGrupo: String,
														ResumenEnTotal: String,
														IndiceGrupo: 0
													}
												],
												Frames: 
												[
													{
														Codigo: 0,
														SQL: String,
														Campos1: 
														[
															String
														],
														Campos2: 
														[
															String
														]
													}
												],
												DetalleLlave: 
												[
													{
														CodigoTabla: 0,
														NombreIndice: String,
														CodigoColumna: 0,
														TipoCalculo: String,
														Secuencia: String,
														NombreColumna: String
													}
												],
												Form: 
												{
													colCountByScreen: 
													{
														lg: 0,
														md: 0,
														sm: 0,
														xs: 0
													},
													labelLocation: String,
													readOnly: False,
													items: 
													[
														{
															itemType: simple,
															visibleIndex: 0
														}
													]
												},
												DataGrid: 
												{
													"columns": 
													[
														{
															"caption": "String",
															"dataField": "String",
															"dataType": "String",
															"visibleIndex": 0,
															"validationRules": 
															[
																{
																	"type": "String",
																	"message": "String"
																}
															],
															"lookup": 
															{
																"allowClearing": false,
																"displayExpr": "String",
																"valueExpr": "String"
															},
															"allowEditing": false,
															"encodeHtml": false,
															"editorOptions": 
															{
																"String": {}
															},
															"groupIndex": 0
														}
													],
													"showColumnLines": false,
													"showRowLines": false,
													"rowAlternationEnabled": false,
													"showBorders": false,
													"editing": 
													{
														"allowAdding": false,
														"allowDeleting": false,
														"allowUpdating": false,
														"mode": "String"
													},
													"summary": 
													{
														"groupItems": 
														[
															{
																"column": "String",
																"displayFormat": "String",
																"showInGroupFooter": false,
																"summaryType": "String"
															}
														],
														"totalItems": 
														[
															{
																"column": "String",
																"displayFormat": "String",
																"summaryType": "String"
															}
														]
													}
												}
											},
											Vista: 
											{
												Codigo: 0,
												CodigoBlob: 0,
												Nombre: String,
												Descripcion: String,
												SQL: String,
												CodigoTabla: 0,
												GuardarBinario: String,
												TipoConsulta: String,
												ExportacionDefault: String,
												TipoExportacion: String,
												ParametrosExportacion: 0,
												CodigoAyuda: String,
												EjecutarEnAdm: String,
												InfoAdicional: String,
												EjecMultiempresa: String
											},
											Version: String,
											Ordenar: String
										}
									],
									Frames: 
									[
										{
											Codigo: 0,
											SQL: String,
											Campos1: 
											[
												String
											],
											Campos2: 
											[
												String
											],
											TablaFrame: 
											{
												Tabla: 
												{
													Codigo: 0,
													Propietario: String,
													Tipo: String,
													Nombre: String,
													Alias: String,
													Descripcion: String,
													ParaReportes: String,
													CrearAlIniciar: String,
													CampoEmpresa: 0,
													CampoUnico: 0
												},
												Columnas: 
												[
													{
														CodigoTabla: 0,
														Codigo: 0,
														Nombre: String,
														Alias: String,
														Descripcion: String,
														TipoDato: String,
														ObligatorioFormas: String,
														Hint: String,
														Mayuscula: String,
														Tamano: 0,
														Escala: 0,
														Tipo: String,
														VlrDefecto: String,
														PermiteEditar: String,
														Orden: 0,
														Dinamico: String,
														ClaseControl: String,
														JoinLookup: 0,
														EsID: String,
														Mascara: String,
														MostrarEnLista: String,
														InfoAdicional: String,
														WHEREDefecto: String,
														TieneResumen: String,
														FormatoResumen: String,
														TipoResumen: String,
														PosicionResumen: String,
														ResumenEnGrupo: String,
														ResumenEnTotal: String,
														IndiceGrupo: 0
													}
												],
												Lookups: 
												[
													{
														Codigo: 0,
														CampoAMostrar: String,
														Campos1: 
														[
															String
														],
														Campos2: 
														[
															String
														],
														Operadores: 
														[
															String
														],
														Datos: 
														[
															{
																String: {}
															}
														],
														CodigoTabla1: 0,
														SQL: String,
														Vista: 
														{
															Codigo: 0,
															CodigoBlob: 0,
															Nombre: String,
															Descripcion: String,
															SQL: String,
															CodigoTabla: 0,
															GuardarBinario: String,
															TipoConsulta: String,
															ExportacionDefault: String,
															TipoExportacion: String,
															ParametrosExportacion: 0,
															CodigoAyuda: String,
															EjecutarEnAdm: String,
															InfoAdicional: String,
															EjecMultiempresa: String
														},
														Version: String,
														Ordenar: String
													}
												],
												Frames: 
												[
													{
														Codigo: 0,
														SQL: String,
														Campos1: 
														[
															String
														],
														Campos2: 
														[
															String
														]
													}
												],
												DetalleLlave: 
												[
													{
														CodigoTabla: 0,
														NombreIndice: String,
														CodigoColumna: 0,
														TipoCalculo: String,
														Secuencia: String,
														NombreColumna: String
													}
												],
												Form: 
												{
													colCountByScreen: 
													{
														lg: 0,
														md: 0,
														sm: 0,
														xs: 0
													},
													labelLocation: String,
													readOnly: False,
													items: 
													[
														{
															itemType: simple,
															visibleIndex: 0
														}
													]
												},
												DataGrid: 
												{
													"columns": 
													[
														{
															"caption": "String",
															"dataField": "String",
															"dataType": "String",
															"visibleIndex": 0,
															"validationRules": 
															[
																{
																	"type": "String",
																	"message": "String"
																}
															],
															"lookup": 
															{
																"allowClearing": false,
																"displayExpr": "String",
																"valueExpr": "String"
															},
															"allowEditing": false,
															"encodeHtml": false,
															"editorOptions": 
															{
																"String": {}
															},
															"groupIndex": 0
														}
													],
													"showColumnLines": false,
													"showRowLines": false,
													"rowAlternationEnabled": false,
													"showBorders": false,
													"editing": 
													{
														"allowAdding": false,
														"allowDeleting": false,
														"allowUpdating": false,
														"mode": "String"
													},
													"summary": 
													{
														"groupItems": 
														[
															{
																"column": "String",
																"displayFormat": "String",
																"showInGroupFooter": false,
																"summaryType": "String"
															}
														],
														"totalItems": 
														[
															{
																"column": "String",
																"displayFormat": "String",
																"summaryType": "String"
															}
														]
													}
												}
											}
										}
									],
									DetalleLlave: 
									[
										{
											CodigoTabla: 0,
											NombreIndice: String,
											CodigoColumna: 0,
											TipoCalculo: String,
											Secuencia: String,
											NombreColumna: String
										}
									],
									Form: 
									{
										colCountByScreen: 
										{
											lg: 0,
											md: 0,
											sm: 0,
											xs: 0
										},
										labelLocation: String,
										readOnly: False,
										items: 
										[
											{
												itemType: simple,
												visibleIndex: 0
											}
										]
									},
									DataGrid: 
									{
										"columns": 
										[
											{
												"caption": "String",
												"dataField": "String",
												"dataType": "String",
												"visibleIndex": 0,
												"validationRules": 
												[
													{
														"type": "String",
														"message": "String"
													}
												],
												"lookup": 
												{
													"allowClearing": false,
													"displayExpr": "String",
													"valueExpr": "String"
												},
												"allowEditing": false,
												"encodeHtml": false,
												"editorOptions": 
												{
													"String": {}
												},
												"groupIndex": 0
											}
										],
										"showColumnLines": false,
										"showRowLines": false,
										"rowAlternationEnabled": false,
										"showBorders": false,
										"editing": 
										{
											"allowAdding": false,
											"allowDeleting": false,
											"allowUpdating": false,
											"mode": "String"
										},
										"summary": 
										{
											"groupItems": 
											[
												{
													"column": "String",
													"displayFormat": "String",
													"showInGroupFooter": false,
													"summaryType": "String"
												}
											],
											"totalItems": 
											[
												{
													"column": "String",
													"displayFormat": "String",
													"summaryType": "String"
												}
											]
										}
									}
								},
								Vista: 
								{
									Codigo: 0,
									CodigoBlob: 0,
									Nombre: String,
									Descripcion: String,
									SQL: String,
									CodigoTabla: 0,
									GuardarBinario: String,
									TipoConsulta: String,
									ExportacionDefault: String,
									TipoExportacion: String,
									ParametrosExportacion: 0,
									CodigoAyuda: String,
									EjecutarEnAdm: String,
									InfoAdicional: String,
									EjecMultiempresa: String
								},
								Version: String,
								Ordenar: String
							}
						],
						Frames: 
						[
							{
								Codigo: 0,
								SQL: String,
								Campos1: 
								[
									String
								],
								Campos2: 
								[
									String
								],
								TablaFrame: 
								{
									Tabla: 
									{
										Codigo: 0,
										Propietario: String,
										Tipo: String,
										Nombre: String,
										Alias: String,
										Descripcion: String,
										ParaReportes: String,
										CrearAlIniciar: String,
										CampoEmpresa: 0,
										CampoUnico: 0
									},
									Columnas: 
									[
										{
											CodigoTabla: 0,
											Codigo: 0,
											Nombre: String,
											Alias: String,
											Descripcion: String,
											TipoDato: String,
											ObligatorioFormas: String,
											Hint: String,
											Mayuscula: String,
											Tamano: 0,
											Escala: 0,
											Tipo: String,
											VlrDefecto: String,
											PermiteEditar: String,
											Orden: 0,
											Dinamico: String,
											ClaseControl: String,
											JoinLookup: 0,
											EsID: String,
											Mascara: String,
											MostrarEnLista: String,
											InfoAdicional: String,
											WHEREDefecto: String,
											TieneResumen: String,
											FormatoResumen: String,
											TipoResumen: String,
											PosicionResumen: String,
											ResumenEnGrupo: String,
											ResumenEnTotal: String,
											IndiceGrupo: 0
										}
									],
									Lookups: 
									[
										{
											Codigo: 0,
											CampoAMostrar: String,
											Campos1: 
											[
												String
											],
											Campos2: 
											[
												String
											],
											Operadores: 
											[
												String
											],
											Datos: 
											[
												{
													String: {}
												}
											],
											CodigoTabla1: 0,
											SQL: String,
											TablaDetalle: 
											{
												Tabla: 
												{
													Codigo: 0,
													Propietario: String,
													Tipo: String,
													Nombre: String,
													Alias: String,
													Descripcion: String,
													ParaReportes: String,
													CrearAlIniciar: String,
													CampoEmpresa: 0,
													CampoUnico: 0
												},
												Columnas: 
												[
													{
														CodigoTabla: 0,
														Codigo: 0,
														Nombre: String,
														Alias: String,
														Descripcion: String,
														TipoDato: String,
														ObligatorioFormas: String,
														Hint: String,
														Mayuscula: String,
														Tamano: 0,
														Escala: 0,
														Tipo: String,
														VlrDefecto: String,
														PermiteEditar: String,
														Orden: 0,
														Dinamico: String,
														ClaseControl: String,
														JoinLookup: 0,
														EsID: String,
														Mascara: String,
														MostrarEnLista: String,
														InfoAdicional: String,
														WHEREDefecto: String,
														TieneResumen: String,
														FormatoResumen: String,
														TipoResumen: String,
														PosicionResumen: String,
														ResumenEnGrupo: String,
														ResumenEnTotal: String,
														IndiceGrupo: 0
													}
												],
												Lookups: 
												[
													{
														Codigo: 0,
														CampoAMostrar: String,
														Campos1: 
														[
															String
														],
														Campos2: 
														[
															String
														],
														Operadores: 
														[
															String
														],
														Datos: 
														[
															{
																String: {}
															}
														],
														CodigoTabla1: 0,
														SQL: String,
														Vista: 
														{
															Codigo: 0,
															CodigoBlob: 0,
															Nombre: String,
															Descripcion: String,
															SQL: String,
															CodigoTabla: 0,
															GuardarBinario: String,
															TipoConsulta: String,
															ExportacionDefault: String,
															TipoExportacion: String,
															ParametrosExportacion: 0,
															CodigoAyuda: String,
															EjecutarEnAdm: String,
															InfoAdicional: String,
															EjecMultiempresa: String
														},
														Version: String,
														Ordenar: String
													}
												],
												Frames: 
												[
													{
														Codigo: 0,
														SQL: String,
														Campos1: 
														[
															String
														],
														Campos2: 
														[
															String
														]
													}
												],
												DetalleLlave: 
												[
													{
														CodigoTabla: 0,
														NombreIndice: String,
														CodigoColumna: 0,
														TipoCalculo: String,
														Secuencia: String,
														NombreColumna: String
													}
												],
												Form: 
												{
													colCountByScreen: 
													{
														lg: 0,
														md: 0,
														sm: 0,
														xs: 0
													},
													labelLocation: String,
													readOnly: False,
													items: 
													[
														{
															itemType: simple,
															visibleIndex: 0
														}
													]
												},
												DataGrid: 
												{
													"columns": 
													[
														{
															"caption": "String",
															"dataField": "String",
															"dataType": "String",
															"visibleIndex": 0,
															"validationRules": 
															[
																{
																	"type": "String",
																	"message": "String"
																}
															],
															"lookup": 
															{
																"allowClearing": false,
																"displayExpr": "String",
																"valueExpr": "String"
															},
															"allowEditing": false,
															"encodeHtml": false,
															"editorOptions": 
															{
																"String": {}
															},
															"groupIndex": 0
														}
													],
													"showColumnLines": false,
													"showRowLines": false,
													"rowAlternationEnabled": false,
													"showBorders": false,
													"editing": 
													{
														"allowAdding": false,
														"allowDeleting": false,
														"allowUpdating": false,
														"mode": "String"
													},
													"summary": 
													{
														"groupItems": 
														[
															{
																"column": "String",
																"displayFormat": "String",
																"showInGroupFooter": false,
																"summaryType": "String"
															}
														],
														"totalItems": 
														[
															{
																"column": "String",
																"displayFormat": "String",
																"summaryType": "String"
															}
														]
													}
												}
											},
											Vista: 
											{
												Codigo: 0,
												CodigoBlob: 0,
												Nombre: String,
												Descripcion: String,
												SQL: String,
												CodigoTabla: 0,
												GuardarBinario: String,
												TipoConsulta: String,
												ExportacionDefault: String,
												TipoExportacion: String,
												ParametrosExportacion: 0,
												CodigoAyuda: String,
												EjecutarEnAdm: String,
												InfoAdicional: String,
												EjecMultiempresa: String
											},
											Version: String,
											Ordenar: String
										}
									],
									Frames: 
									[
										{
											Codigo: 0,
											SQL: String,
											Campos1: 
											[
												String
											],
											Campos2: 
											[
												String
											],
											TablaFrame: 
											{
												Tabla: 
												{
													Codigo: 0,
													Propietario: String,
													Tipo: String,
													Nombre: String,
													Alias: String,
													Descripcion: String,
													ParaReportes: String,
													CrearAlIniciar: String,
													CampoEmpresa: 0,
													CampoUnico: 0
												},
												Columnas: 
												[
													{
														CodigoTabla: 0,
														Codigo: 0,
														Nombre: String,
														Alias: String,
														Descripcion: String,
														TipoDato: String,
														ObligatorioFormas: String,
														Hint: String,
														Mayuscula: String,
														Tamano: 0,
														Escala: 0,
														Tipo: String,
														VlrDefecto: String,
														PermiteEditar: String,
														Orden: 0,
														Dinamico: String,
														ClaseControl: String,
														JoinLookup: 0,
														EsID: String,
														Mascara: String,
														MostrarEnLista: String,
														InfoAdicional: String,
														WHEREDefecto: String,
														TieneResumen: String,
														FormatoResumen: String,
														TipoResumen: String,
														PosicionResumen: String,
														ResumenEnGrupo: String,
														ResumenEnTotal: String,
														IndiceGrupo: 0
													}
												],
												Lookups: 
												[
													{
														Codigo: 0,
														CampoAMostrar: String,
														Campos1: 
														[
															String
														],
														Campos2: 
														[
															String
														],
														Operadores: 
														[
															String
														],
														Datos: 
														[
															{
																String: {}
															}
														],
														CodigoTabla1: 0,
														SQL: String,
														Vista: 
														{
															Codigo: 0,
															CodigoBlob: 0,
															Nombre: String,
															Descripcion: String,
															SQL: String,
															CodigoTabla: 0,
															GuardarBinario: String,
															TipoConsulta: String,
															ExportacionDefault: String,
															TipoExportacion: String,
															ParametrosExportacion: 0,
															CodigoAyuda: String,
															EjecutarEnAdm: String,
															InfoAdicional: String,
															EjecMultiempresa: String
														},
														Version: String,
														Ordenar: String
													}
												],
												Frames: 
												[
													{
														Codigo: 0,
														SQL: String,
														Campos1: 
														[
															String
														],
														Campos2: 
														[
															String
														]
													}
												],
												DetalleLlave: 
												[
													{
														CodigoTabla: 0,
														NombreIndice: String,
														CodigoColumna: 0,
														TipoCalculo: String,
														Secuencia: String,
														NombreColumna: String
													}
												],
												Form: 
												{
													colCountByScreen: 
													{
														lg: 0,
														md: 0,
														sm: 0,
														xs: 0
													},
													labelLocation: String,
													readOnly: False,
													items: 
													[
														{
															itemType: simple,
															visibleIndex: 0
														}
													]
												},
												DataGrid: 
												{
													"columns": 
													[
														{
															"caption": "String",
															"dataField": "String",
															"dataType": "String",
															"visibleIndex": 0,
															"validationRules": 
															[
																{
																	"type": "String",
																	"message": "String"
																}
															],
															"lookup": 
															{
																"allowClearing": false,
																"displayExpr": "String",
																"valueExpr": "String"
															},
															"allowEditing": false,
															"encodeHtml": false,
															"editorOptions": 
															{
																"String": {}
															},
															"groupIndex": 0
														}
													],
													"showColumnLines": false,
													"showRowLines": false,
													"rowAlternationEnabled": false,
													"showBorders": false,
													"editing": 
													{
														"allowAdding": false,
														"allowDeleting": false,
														"allowUpdating": false,
														"mode": "String"
													},
													"summary": 
													{
														"groupItems": 
														[
															{
																"column": "String",
																"displayFormat": "String",
																"showInGroupFooter": false,
																"summaryType": "String"
															}
														],
														"totalItems": 
														[
															{
																"column": "String",
																"displayFormat": "String",
																"summaryType": "String"
															}
														]
													}
												}
											}
										}
									],
									DetalleLlave: 
									[
										{
											CodigoTabla: 0,
											NombreIndice: String,
											CodigoColumna: 0,
											TipoCalculo: String,
											Secuencia: String,
											NombreColumna: String
										}
									],
									Form: 
									{
										colCountByScreen: 
										{
											lg: 0,
											md: 0,
											sm: 0,
											xs: 0
										},
										labelLocation: String,
										readOnly: False,
										items: 
										[
											{
												itemType: simple,
												visibleIndex: 0
											}
										]
									},
									DataGrid: 
									{
										"columns": 
										[
											{
												"caption": "String",
												"dataField": "String",
												"dataType": "String",
												"visibleIndex": 0,
												"validationRules": 
												[
													{
														"type": "String",
														"message": "String"
													}
												],
												"lookup": 
												{
													"allowClearing": false,
													"displayExpr": "String",
													"valueExpr": "String"
												},
												"allowEditing": false,
												"encodeHtml": false,
												"editorOptions": 
												{
													"String": {}
												},
												"groupIndex": 0
											}
										],
										"showColumnLines": false,
										"showRowLines": false,
										"rowAlternationEnabled": false,
										"showBorders": false,
										"editing": 
										{
											"allowAdding": false,
											"allowDeleting": false,
											"allowUpdating": false,
											"mode": "String"
										},
										"summary": 
										{
											"groupItems": 
											[
												{
													"column": "String",
													"displayFormat": "String",
													"showInGroupFooter": false,
													"summaryType": "String"
												}
											],
											"totalItems": 
											[
												{
													"column": "String",
													"displayFormat": "String",
													"summaryType": "String"
												}
											]
										}
									}
								}
							}
						],
						DetalleLlave: 
						[
							{
								CodigoTabla: 0,
								NombreIndice: String,
								CodigoColumna: 0,
								TipoCalculo: String,
								Secuencia: String,
								NombreColumna: String
							}
						],
						Form: 
						{
							colCountByScreen: 
							{
								lg: 0,
								md: 0,
								sm: 0,
								xs: 0
							},
							labelLocation: String,
							readOnly: False,
							items: 
							[
								{
									itemType: simple,
									visibleIndex: 0
								}
							]
						},
						DataGrid: 
						{
							"columns": 
							[
								{
									"caption": "String",
									"dataField": "String",
									"dataType": "String",
									"visibleIndex": 0,
									"validationRules": 
									[
										{
											"type": "String",
											"message": "String"
										}
									],
									"lookup": 
									{
										"allowClearing": false,
										"displayExpr": "String",
										"valueExpr": "String"
									},
									"allowEditing": false,
									"encodeHtml": false,
									"editorOptions": 
									{
										"String": {}
									},
									"groupIndex": 0
								}
							],
							"showColumnLines": false,
							"showRowLines": false,
							"rowAlternationEnabled": false,
							"showBorders": false,
							"editing": 
							{
								"allowAdding": false,
								"allowDeleting": false,
								"allowUpdating": false,
								"mode": "String"
							},
							"summary": 
							{
								"groupItems": 
								[
									{
										"column": "String",
										"displayFormat": "String",
										"showInGroupFooter": false,
										"summaryType": "String"
									}
								],
								"totalItems": 
								[
									{
										"column": "String",
										"displayFormat": "String",
										"summaryType": "String"
									}
								]
							}
						}
					},
					Vista: 
					{
						Codigo: 0,
						CodigoBlob: 0,
						Nombre: String,
						Descripcion: String,
						SQL: String,
						CodigoTabla: 0,
						GuardarBinario: String,
						TipoConsulta: String,
						ExportacionDefault: String,
						TipoExportacion: String,
						ParametrosExportacion: 0,
						CodigoAyuda: String,
						EjecutarEnAdm: String,
						InfoAdicional: String,
						EjecMultiempresa: String
					},
					Version: String,
					Ordenar: String
				}
			],
			dxPivotGrid: 
			{
				String: {}
			},
			dxChart: 
			{
				String: {}
			},
			FormaParametros: 
			{
				colCountByScreen: 
				{
					lg: 0,
					md: 0,
					sm: 0,
					xs: 0
				},
				labelLocation: String,
				readOnly: False,
				items: 
				[
					{
						itemType: simple,
						visibleIndex: 0
					}
				]
			},
			PivotGridConf: 
			{
				Codigo: 0,
				Nombre: String,
				CrearChart: String,
				Configuration: String,
				Chart: String,
				Observaciones: String,
				IDVista: 0,
				Usuario: String
			},
			Error: String
		}
	]
}