function GridConfiguracoes(data, modulo) {

    var mSelf = this;

    mSelf.Modulo = modulo;

    mSelf.Titulo = data.Titulo;

    mSelf.ModuloId = data.ModuloId;

    mSelf.Template = data.Template;

    mSelf.Data = data.Grid.Data;

    mSelf.Ids = {
        ComboOperacao: "ComboOperacao",
        ComboMacro: "ComboMacro",
        ComboRegional: "ComboRegional",
        ComboServico: "ComboServico",
        ComboSetor: "ComboSetor"
    };

    mSelf.EditarConfiguracao = function (data, evt) {
        vm.FecharTodosMensagemAlerta();
        $(".loading-div").fadeIn();
        var dadosMacro = mSelf.Modulo.DadosMacro();

        dadosMacro.DesabilitarTodosCheck();

        dadosMacro.CodigoConfig(data.Codigo());
        var operacao = ko.utils.arrayFirst(dadosMacro.Operacoes(), function (op) {
            return op.Codigo == data.CodigoOperacao();
        });
        dadosMacro.SelecionarOperacao(operacao, null, mSelf.PreencheMacro, data);
    };

    mSelf.PreencheMacro = function (data) {
        var dadosMacro = mSelf.Modulo.DadosMacro();
        var macro = ko.utils.arrayFirst(dadosMacro.Macros(), function (macro) {
            return macro.Codigo == data.CodigoMacro();
        });
        dadosMacro.SelecionarMacro(macro, null, mSelf.PreencheArvore, data);
    };

    mSelf.PreencheArvore = function (data) {
        var dadosMacro = mSelf.Modulo.DadosMacro();
        var regional = ko.utils.arrayFirst(dadosMacro.MacroArvores(), function (regional) {
            return regional.Codigo == data.MacroArvoreRegional();
        });
        if (regional == null) {
            regional = { Codigo: null, Descricao: "Selecione" };
            //$("#" + mSelf.Ids.ComboRegional + " .box-sel").addClass("disabled");
            dadosMacro.DesabilitarRegional();
        }
        dadosMacro.SelecionarRegional(regional);

        var setor = ko.utils.arrayFirst(dadosMacro.MacroArvores(), function (regional) {
            return regional.Codigo == data.MacroArvoreSetor();
        });
        if (setor == null) {
            setor = { Codigo: null, Descricao: "Selecione" };
            //$("#" + mSelf.Ids.ComboSetor + " .box-sel").addClass("disabled");
            dadosMacro.DesabilitarSetor();
        }
        dadosMacro.SelecionarSetor(setor);

        var servico = ko.utils.arrayFirst(dadosMacro.MacroArvores(), function (regional) {
            return regional.Codigo == data.MacroArvoreServico();
        });
        if (servico == null) {
            servico = { Codigo: null, Descricao: "Selecione" };
            //$("#" + mSelf.Ids.ComboServico + " .box-sel").addClass("disabled");
            dadosMacro.DesabilitarServico();
        }
        dadosMacro.SelecionarServico(servico);

        $(".loading-div").fadeOut();
    };

    mSelf.AlterarDadosGrid = function (data) {
        var grid = ko.utils.arrayFirst(mSelf.Data(), function (item) {
            return item.Codigo() == data.Codigo;
        });

        for (var item in grid) {
            if (item != null && item != "__ko_mapping__")
                grid[item](data[item] == null ? "" : data[item]);
        }
    };
}