package AsposeCellsCloud::Object::PivotTable;

require 5.6.0;
use strict;
use warnings;
use utf8;
use JSON qw(decode_json);
use Data::Dumper;
use Module::Runtime qw(use_module);
use Log::Any qw($log);
use Date::Parse;
use DateTime;

use base "AsposeCellsCloud::Object::BaseObject";

#
#
#
#NOTE: This class is auto generated by the swagger code generator program. Do not edit the class manually.
#

my $swagger_types = {
    'AltTextDescription' => 'string',
    'AltTextTitle' => 'string',
    'AutoFormatType' => 'string',
    'BaseFields' => 'ARRAY[PivotField]',
    'ColumnFields' => 'ARRAY[PivotField]',
    'ColumnGrand' => 'boolean',
    'ColumnHeaderCaption' => 'string',
    'ColumnRange' => 'CellArea',
    'CustomListSort' => 'boolean',
    'DataBodyRange' => 'CellArea',
    'DataField' => 'PivotField',
    'DataFields' => 'ARRAY[PivotField]',
    'DataSource' => 'ARRAY[string]',
    'DisplayErrorString' => 'boolean',
    'DisplayImmediateItems' => 'boolean',
    'DisplayNullString' => 'boolean',
    'EnableDataValueEditing' => 'boolean',
    'EnableDrilldown' => 'boolean',
    'EnableFieldDialog' => 'boolean',
    'EnableFieldList' => 'boolean',
    'EnableWizard' => 'boolean',
    'ErrorString' => 'string',
    'FieldListSortAscending' => 'boolean',
    'GrandTotalName' => 'string',
    'HasBlankRows' => 'boolean',
    'Indent' => 'int',
    'IsAutoFormat' => 'boolean',
    'IsGridDropZones' => 'boolean',
    'IsMultipleFieldFilters' => 'boolean',
    'IsSelected' => 'boolean',
    'ItemPrintTitles' => 'boolean',
    'ManualUpdate' => 'boolean',
    'MergeLabels' => 'boolean',
    'MissingItemsLimit' => 'string',
    'Name' => 'string',
    'NullString' => 'string',
    'PageFieldOrder' => 'string',
    'PageFields' => 'ARRAY[PivotField]',
    'PageFieldWrapCount' => 'int',
    'PivotFilters' => 'ARRAY[PivotFilter]',
    'PivotTableStyleName' => 'string',
    'PivotTableStyleType' => 'string',
    'PreserveFormatting' => 'boolean',
    'PrintDrill' => 'boolean',
    'PrintTitles' => 'boolean',
    'RefreshDataFlag' => 'boolean',
    'RefreshDataOnOpeningFile' => 'boolean',
    'RowFields' => 'ARRAY[PivotField]',
    'RowGrand' => 'boolean',
    'RowHeaderCaption' => 'string',
    'RowRange' => 'CellArea',
    'SaveData' => 'boolean',
    'ShowDataTips' => 'boolean',
    'ShowDrill' => 'boolean',
    'ShowEmptyCol' => 'boolean',
    'ShowEmptyRow' => 'boolean',
    'ShowMemberPropertyTips' => 'boolean',
    'ShowPivotStyleColumnHeader' => 'boolean',
    'ShowPivotStyleColumnStripes' => 'boolean',
    'ShowPivotStyleLastColumn' => 'boolean',
    'ShowPivotStyleRowHeader' => 'boolean',
    'ShowPivotStyleRowStripes' => 'boolean',
    'ShowRowHeaderCaption' => 'boolean',
    'ShowValuesRow' => 'boolean',
    'SubtotalHiddenPageItems' => 'boolean',
    'TableRange1' => 'CellArea',
    'TableRange2' => 'CellArea',
    'Tag' => 'string',
    'link' => 'Link'
};

my $attribute_map = {
    'AltTextDescription' => 'AltTextDescription',
    'AltTextTitle' => 'AltTextTitle',
    'AutoFormatType' => 'AutoFormatType',
    'BaseFields' => 'BaseFields',
    'ColumnFields' => 'ColumnFields',
    'ColumnGrand' => 'ColumnGrand',
    'ColumnHeaderCaption' => 'ColumnHeaderCaption',
    'ColumnRange' => 'ColumnRange',
    'CustomListSort' => 'CustomListSort',
    'DataBodyRange' => 'DataBodyRange',
    'DataField' => 'DataField',
    'DataFields' => 'DataFields',
    'DataSource' => 'DataSource',
    'DisplayErrorString' => 'DisplayErrorString',
    'DisplayImmediateItems' => 'DisplayImmediateItems',
    'DisplayNullString' => 'DisplayNullString',
    'EnableDataValueEditing' => 'EnableDataValueEditing',
    'EnableDrilldown' => 'EnableDrilldown',
    'EnableFieldDialog' => 'EnableFieldDialog',
    'EnableFieldList' => 'EnableFieldList',
    'EnableWizard' => 'EnableWizard',
    'ErrorString' => 'ErrorString',
    'FieldListSortAscending' => 'FieldListSortAscending',
    'GrandTotalName' => 'GrandTotalName',
    'HasBlankRows' => 'HasBlankRows',
    'Indent' => 'Indent',
    'IsAutoFormat' => 'IsAutoFormat',
    'IsGridDropZones' => 'IsGridDropZones',
    'IsMultipleFieldFilters' => 'IsMultipleFieldFilters',
    'IsSelected' => 'IsSelected',
    'ItemPrintTitles' => 'ItemPrintTitles',
    'ManualUpdate' => 'ManualUpdate',
    'MergeLabels' => 'MergeLabels',
    'MissingItemsLimit' => 'MissingItemsLimit',
    'Name' => 'Name',
    'NullString' => 'NullString',
    'PageFieldOrder' => 'PageFieldOrder',
    'PageFields' => 'PageFields',
    'PageFieldWrapCount' => 'PageFieldWrapCount',
    'PivotFilters' => 'PivotFilters',
    'PivotTableStyleName' => 'PivotTableStyleName',
    'PivotTableStyleType' => 'PivotTableStyleType',
    'PreserveFormatting' => 'PreserveFormatting',
    'PrintDrill' => 'PrintDrill',
    'PrintTitles' => 'PrintTitles',
    'RefreshDataFlag' => 'RefreshDataFlag',
    'RefreshDataOnOpeningFile' => 'RefreshDataOnOpeningFile',
    'RowFields' => 'RowFields',
    'RowGrand' => 'RowGrand',
    'RowHeaderCaption' => 'RowHeaderCaption',
    'RowRange' => 'RowRange',
    'SaveData' => 'SaveData',
    'ShowDataTips' => 'ShowDataTips',
    'ShowDrill' => 'ShowDrill',
    'ShowEmptyCol' => 'ShowEmptyCol',
    'ShowEmptyRow' => 'ShowEmptyRow',
    'ShowMemberPropertyTips' => 'ShowMemberPropertyTips',
    'ShowPivotStyleColumnHeader' => 'ShowPivotStyleColumnHeader',
    'ShowPivotStyleColumnStripes' => 'ShowPivotStyleColumnStripes',
    'ShowPivotStyleLastColumn' => 'ShowPivotStyleLastColumn',
    'ShowPivotStyleRowHeader' => 'ShowPivotStyleRowHeader',
    'ShowPivotStyleRowStripes' => 'ShowPivotStyleRowStripes',
    'ShowRowHeaderCaption' => 'ShowRowHeaderCaption',
    'ShowValuesRow' => 'ShowValuesRow',
    'SubtotalHiddenPageItems' => 'SubtotalHiddenPageItems',
    'TableRange1' => 'TableRange1',
    'TableRange2' => 'TableRange2',
    'Tag' => 'Tag',
    'link' => 'link'
};

# new object
sub new { 
    my ($class, %args) = @_; 
    my $self = { 
        #
        'AltTextDescription' => $args{'AltTextDescription'}, 
        #
        'AltTextTitle' => $args{'AltTextTitle'}, 
        #
        'AutoFormatType' => $args{'AutoFormatType'}, 
        #
        'BaseFields' => $args{'BaseFields'}, 
        #
        'ColumnFields' => $args{'ColumnFields'}, 
        #
        'ColumnGrand' => $args{'ColumnGrand'}, 
        #
        'ColumnHeaderCaption' => $args{'ColumnHeaderCaption'}, 
        #
        'ColumnRange' => $args{'ColumnRange'}, 
        #
        'CustomListSort' => $args{'CustomListSort'}, 
        #
        'DataBodyRange' => $args{'DataBodyRange'}, 
        #
        'DataField' => $args{'DataField'}, 
        #
        'DataFields' => $args{'DataFields'}, 
        #
        'DataSource' => $args{'DataSource'}, 
        #
        'DisplayErrorString' => $args{'DisplayErrorString'}, 
        #
        'DisplayImmediateItems' => $args{'DisplayImmediateItems'}, 
        #
        'DisplayNullString' => $args{'DisplayNullString'}, 
        #
        'EnableDataValueEditing' => $args{'EnableDataValueEditing'}, 
        #
        'EnableDrilldown' => $args{'EnableDrilldown'}, 
        #
        'EnableFieldDialog' => $args{'EnableFieldDialog'}, 
        #
        'EnableFieldList' => $args{'EnableFieldList'}, 
        #
        'EnableWizard' => $args{'EnableWizard'}, 
        #
        'ErrorString' => $args{'ErrorString'}, 
        #
        'FieldListSortAscending' => $args{'FieldListSortAscending'}, 
        #
        'GrandTotalName' => $args{'GrandTotalName'}, 
        #
        'HasBlankRows' => $args{'HasBlankRows'}, 
        #
        'Indent' => $args{'Indent'}, 
        #
        'IsAutoFormat' => $args{'IsAutoFormat'}, 
        #
        'IsGridDropZones' => $args{'IsGridDropZones'}, 
        #
        'IsMultipleFieldFilters' => $args{'IsMultipleFieldFilters'}, 
        #
        'IsSelected' => $args{'IsSelected'}, 
        #
        'ItemPrintTitles' => $args{'ItemPrintTitles'}, 
        #
        'ManualUpdate' => $args{'ManualUpdate'}, 
        #
        'MergeLabels' => $args{'MergeLabels'}, 
        #
        'MissingItemsLimit' => $args{'MissingItemsLimit'}, 
        #
        'Name' => $args{'Name'}, 
        #
        'NullString' => $args{'NullString'}, 
        #
        'PageFieldOrder' => $args{'PageFieldOrder'}, 
        #
        'PageFields' => $args{'PageFields'}, 
        #
        'PageFieldWrapCount' => $args{'PageFieldWrapCount'}, 
        #
        'PivotFilters' => $args{'PivotFilters'}, 
        #
        'PivotTableStyleName' => $args{'PivotTableStyleName'}, 
        #
        'PivotTableStyleType' => $args{'PivotTableStyleType'}, 
        #
        'PreserveFormatting' => $args{'PreserveFormatting'}, 
        #
        'PrintDrill' => $args{'PrintDrill'}, 
        #
        'PrintTitles' => $args{'PrintTitles'}, 
        #
        'RefreshDataFlag' => $args{'RefreshDataFlag'}, 
        #
        'RefreshDataOnOpeningFile' => $args{'RefreshDataOnOpeningFile'}, 
        #
        'RowFields' => $args{'RowFields'}, 
        #
        'RowGrand' => $args{'RowGrand'}, 
        #
        'RowHeaderCaption' => $args{'RowHeaderCaption'}, 
        #
        'RowRange' => $args{'RowRange'}, 
        #
        'SaveData' => $args{'SaveData'}, 
        #
        'ShowDataTips' => $args{'ShowDataTips'}, 
        #
        'ShowDrill' => $args{'ShowDrill'}, 
        #
        'ShowEmptyCol' => $args{'ShowEmptyCol'}, 
        #
        'ShowEmptyRow' => $args{'ShowEmptyRow'}, 
        #
        'ShowMemberPropertyTips' => $args{'ShowMemberPropertyTips'}, 
        #
        'ShowPivotStyleColumnHeader' => $args{'ShowPivotStyleColumnHeader'}, 
        #
        'ShowPivotStyleColumnStripes' => $args{'ShowPivotStyleColumnStripes'}, 
        #
        'ShowPivotStyleLastColumn' => $args{'ShowPivotStyleLastColumn'}, 
        #
        'ShowPivotStyleRowHeader' => $args{'ShowPivotStyleRowHeader'}, 
        #
        'ShowPivotStyleRowStripes' => $args{'ShowPivotStyleRowStripes'}, 
        #
        'ShowRowHeaderCaption' => $args{'ShowRowHeaderCaption'}, 
        #
        'ShowValuesRow' => $args{'ShowValuesRow'}, 
        #
        'SubtotalHiddenPageItems' => $args{'SubtotalHiddenPageItems'}, 
        #
        'TableRange1' => $args{'TableRange1'}, 
        #
        'TableRange2' => $args{'TableRange2'}, 
        #
        'Tag' => $args{'Tag'}, 
        #
        'link' => $args{'link'}
    }; 

    return bless $self, $class; 
}  

# get swagger type of the attribute
sub get_swagger_types {
    return $swagger_types;
}

# get attribute mappping
sub get_attribute_map {
    return $attribute_map;
}

1;
