Пример #1
0
        public override void Editar()
        {
            var usuario = new Usuario(GUID)
            {
                NomeLogin = "******"
            };

            usuario.TiposUsuarios.RemoveAt(2);
            usuario.Save();
        }
Пример #2
0
        /// <summary>
        /// Método que retorna o objeto pessoa logado no sistema
        /// </summary>
        /// <param name="usuario">Nome de usuário</param>
        /// <param name="senha">Senha </param>
        /// <returns>Objeto pessoa referente ao usuário logado. Caso não haja usuário retorna null</returns>
        public static IUsuario Login(string usuario, string senha)
        {
            Model.Cadastro.Pessoa.IUsuario u = null;
            Connection connection = null;

            try
            {
                connection = DbContext.CreateConnection();
                DataReader dr = connection.ExecuteReader(@"SELECT GUIDPessoa AS p_GUIDPessoa
                                                           FROM cad_PessoaUsuario
                                                           WHERE NomeLogin = @NomeLogin AND
                                                           Senha = @Senha",
                new Parameter[]
                {
                    new Parameter{
                          ParameterName = "@NomeLogin",
                          Value = usuario,
                          GenericDbType = GenericDbType.String
                    },
                     new Parameter{
                          ParameterName = "@Senha",
                          Value = new OpenPOS.Cryptography.Salt.MD5(senha, Unimake.Convert.ToInt(Settings.Setting.PasswordMD5Loop), Unimake.Convert.ToBoolean(Settings.Setting.PasswordMD5UseKey) ? usuario : "").Hash,
                          GenericDbType = GenericDbType.String
                    }
                });

                if (dr.Read())
                {
                    u = new Usuario((GUID)dr.GetString("p_GUIDPessoa"));
                }
            }
            finally
            {
                connection.Close();
            }
            return u;
        }
Пример #3
0
        public override void Gravar()
        {
            #region Pessoa Física
            OpenPOS.Data.Cadastro.Pessoa.Fisica.Fisica fisica = new OpenPOS.Data.Cadastro.Pessoa.Fisica.Fisica();
            fisica.CPF = "05210438910";
            fisica.DataNascimento = new DateTime(1985, 07, 27);
            fisica.EstadoCivil = Enuns.Cadastro.Pessoa.EstadoCivil.Casado;
            fisica.MaeNome = "Teste";
            fisica.PaiNome = "Teste";
            fisica.RG = "90702343";
            fisica.RGEmissao = new DateTime(1995, 12, 12);
            fisica.RGEstado = new Estado().Find<IEstado>(new Where { Limit = new Limit(1) })[0];
            fisica.RGOrgao = "SSPPR";
            fisica.RGTipoVisto = "";
            fisica.Sexo = Enuns.Cadastro.Pessoa.Sexo.Masculino;
            #endregion

            #region Pessoa jurídica
            OpenPOS.Data.Cadastro.Pessoa.Juridica.Juridica juridica = new OpenPOS.Data.Cadastro.Pessoa.Juridica.Juridica();
            juridica.CNPJ = "75480764000120";
            juridica.DataAbertura = new DateTime(1999, 10, 10);
            juridica.IM = "1205";
            juridica.ISuf = "";
            juridica.RamoAtividade = new RamoAtividade().Find<IRamoAtividade>()[0];
            juridica.CRT = CRT.SimplesNacional;
            #endregion

            IUsuario usuario = new Usuario()
            {
                FisicaJuridica = Enuns.Cadastro.Pessoa.FisicaJuridica.Juridica,
                Enderecos = new List<Model.Cadastro.Pessoa.IEndereco>(new OpenPOS.Data.Cadastro.Pessoa.Endereco().Find<Model.Cadastro.Pessoa.IEndereco>(new Where { Limit = new Limit(1) })),
                Juridica = juridica,
                NomeFantasia = "Usuário",
                Observacao = "teste unitario",
                RazaoSocial = "Teste",
                NomeLogin = "******",
                Senha = "Senha12345",
                SenhaAlteracao = DateTime.Now,
                MultiploLogin = true,
                Logado = true,
            };

            #region Canais de comunicação
            usuario.CanaisComunicacao = new List<ICanalComunicacao>
            {
                new CanalComunicacao{
                    TipoCanal  = TipoCanal.Celular,
                    NomeContato = new Random().NextString(20),
                    Principal =true,
                    IdentificadorCanal  = "2918219219827",
                    Ramal ="",
                    Observacao  = ""
                },
                new CanalComunicacao{
                    TipoCanal  = TipoCanal.Facebook,
                    NomeContato = new Random().NextString(20),
                    Principal =false,
                    IdentificadorCanal  = "http://facebook.com",
                    Ramal ="",
                    Observacao  = ""
                }
            };
            #endregion

            #region Tipos de usuários
            usuario.TiposUsuarios.Add(new OpenPOS.Data.Cadastro.TipoUsuario().Find<ITipoUsuario>(new Where { Limit = new Limit(1) })[0]);

            usuario.TiposUsuarios.Add(new OpenPOS.Data.Cadastro.TipoUsuario().Find<ITipoUsuario>(new Where { Limit = new Limit(2) })[1]);

            usuario.TiposUsuarios.Add(new OpenPOS.Data.Cadastro.TipoUsuario().Find<ITipoUsuario>(new Where { Limit = new Limit(3) })[2]);
            #endregion

            GUID = usuario.Save();
        }
Пример #4
0
 public override void Popular()
 {
     IUsuario usuario = new Usuario(GUID);
     DumpElement(usuario);
 }
Пример #5
0
        private IUsuario CreateUsr()
        {
            IUsuario usuario = new Usuario();
            usuario.RazaoSocial = txtNomeUsuario.Text;
            usuario.NomeFantasia = txtNomeUsuario.Text;
            usuario.TiposUsuarios = new List<ITipoUsuario> { new TipoUsuario().Find<ITipoUsuario>()[0] };
            usuario.FisicaJuridica = FisicaJuridica.Fisica;
            usuario.NomeLogin = txtLoginNome.Text;
            usuario.Senha = txtLoginSenha.Text;

            usuario.Fisica = new Fisica
            {
                CPF = maskCPF.Text,
                DataNascimento = DateTime.Today,
                RG = txtRG.Text,
            };

            usuario.Enderecos.Add(new Endereco
            {
                CaixaPostal = txtCaixaPostal.Text,
                Endereco = new Data.Cadastro.Endereco.Endereco(sfEndereco.SelectedItem.GUID),
                Numero = txtNumero.Text,
                Complemento = txtComplemento.Text,
                Principal = true,
            });

            usuario.CanaisComunicacao.Add(new CanalComunicacao
            {
                IdentificadorCanal = txtCanalIdentificador.Text,
                NomeContato = txtCanalNomeContato.Text,
                TipoCanal = Unimake.Convert.ToEnum<TipoCanal>(cboCanalTipo.Text),
                Ramal = txtCanalRamal.Text,
                Principal = true
            });

            return usuario;
        }
Пример #6
0
        /// <summary>
        /// Tratamentos antes de salvar o usuário na base de dados
        /// </summary>
        /// <param name="updating">Se é uma atualização ou inserção</param>
        public override void BeforeSave(bool updating)
        {
            base.BeforeSave(updating);

            //Passando a senha para todo em maiúscula
            //Senha = Senha.ToUpper();

            //Cria nova senha
            if (!Unimake.Utilities.IsMD5(Senha) && oldPass != Senha)
            {
                Senha = new OpenPOS.Cryptography.Salt.MD5(Senha, Unimake.Convert.ToInt(Settings.Setting.PasswordMD5Loop), Unimake.Convert.ToBoolean(Settings.Setting.PasswordMD5UseKey) ? NomeLogin : "").Hash;
            }

            //Pesquisar o usuário de acordo com o GUID
            IList<IUsuario> contasUsuarios = new Usuario().Find<IUsuario>(new Where
            {
                { "cad_pessoa.guid = @guid",
                    new Parameter
                    {
                        ParameterName = "@guid",
                        Value = this.GUID.ToString()
                    }
                }
            });

            //Se achou um usuário
            if (contasUsuarios.Count > 0)
            {
                //Pesquisa qual a conta corrente desse usuário
                var contas = (from u in contasUsuarios
                             select new
                                    {
                                        GUIDContaCorrente = u.ContaCorrente.GUID
                                    }
                             );

                //Percorre por todas as contas correntes
                foreach (var conta in contas)
                {
                    //Se a conta corrente for diferente podemos marcar como excluido
                    if (conta.GUIDContaCorrente.ToString() != this.ContaCorrente.GUID.ToString())
                    {
                        //Marca como excluído as contas correntes
                        Connection.ExecuteNonQuery(@"UPDATE fin_contacorrente SET excluido = @excluido WHERE guid = @guid", new[]
                        {
                            new Parameter
                            {
                                ParameterName = "@excluido",
                                Value = Excluido.Sim
                            },
                            new Parameter
                            {
                                ParameterName = "@guid",
                                Value = conta.GUIDContaCorrente.ToString()
                            }
                        });
                    }
                }
            }
        }
Пример #7
0
        internal static void Save()
        {
            OnSaving("Conectando com a base de dados local ...");

            Connection connection = null;

            try
            {
                connection = DbContext.CreateConnection();

                connection.BeginTransaction();

                if (CurrentConfig.TipoInstalacao == Enuns.TipoInstalacao.ServidorPostgreSQL ||
                    CurrentConfig.TipoInstalacao == Enuns.TipoInstalacao.ServidorSQLite)
                {
                    #region Settings
                    OnSaving("Salvando as configurações do TEF ...");

                    connection.ExecuteNonQuery(@"DELETE FROM cfg_Configuracao WHERE Propriedade = 'TEF_CodigoLoja';
                                             DELETE FROM cfg_Configuracao WHERE Propriedade = 'TEF_EnderecoIP';
                                             DELETE FROM cfg_Configuracao WHERE Propriedade = 'TEF_MultiplosCartoes';
                                             DELETE FROM cfg_Configuracao WHERE Propriedade = 'TEF_NumeroCartoes';
                                             DELETE FROM cfg_Configuracao WHERE Propriedade = 'TEF_NumeroTerminal';
                                             DELETE FROM cfg_Configuracao WHERE Propriedade = 'SH_NumeroLaudo';
                                             DELETE FROM cfg_Configuracao WHERE Propriedade = 'SH_Versao';
                                             DELETE FROM cfg_Configuracao WHERE Propriedade = 'SH_NomeApp';
                                             DELETE FROM cfg_Configuracao WHERE Propriedade = 'SH_CNPJ';
                                             DELETE FROM cfg_Configuracao WHERE Propriedade = 'SH_IE';
                                             DELETE FROM cfg_Configuracao WHERE Propriedade = 'SH_IM';
                                             DELETE FROM cfg_Configuracao WHERE Propriedade = 'SH_Nome';
                                             DELETE FROM cfg_Configuracao WHERE Propriedade = 'SH_ER_PAF_ECF';
                                             DELETE FROM cfg_Configuracao WHERE Propriedade = 'ConsumidorFinal';
                                             DELETE FROM cfg_Configuracao WHERE Propriedade = 'TEF_HabilitaCieloPremia';
                                             DELETE FROM cfg_Configuracao WHERE Propriedade = 'ECF_MensagemRodape';
                                             DELETE FROM cfg_Configuracao WHERE Propriedade = 'Server_EnderecoIP';
                                             DELETE FROM cfg_Configuracao WHERE Propriedade = 'Server_Porta';
                                             INSERT INTO cfg_Configuracao (GUID, Propriedade, Valor, Observacao)
                                                  VALUES ('" + GUID.Create() + "', 'EmpresaDefault', ' ', 'É a empresa padrão da aplicação');" +
                                                 " INSERT INTO cfg_Configuracao (GUID, Propriedade, Valor, Observacao)" +
                                                     " VALUES ('" + GUID.Create() + "', 'UsuarioDefault', ' ', 'É o usuário padrão da aplicação');");

                    Settings.Setting.Refresh();
                    #endregion

                    #region Empresa padrão
                    OnSaving("Criando empresa padrão ...");
                    Empresa.TipoEmpresa.Save();
                    Empresa.Juridica.RamoAtividade.Save();
                    Empresa.FisicaJuridica = FisicaJuridica.Juridica;
                    Empresa.Save();

                    //-------------------------------------------------------------------------
                    // O GUID desta empresa será o GUID padrão de empresas
                    //-------------------------------------------------------------------------
                    connection.ExecuteNonQuery(@"UPDATE cfg_Configuracao SET Valor = @valor WHERE Propriedade = @propriedade;",
                        new[]
                    {
                        new Parameter
                        {
                            ParameterName = "@valor",
                            Value = Empresa.GUID
                        },
                        new Parameter
                        {
                            ParameterName = "@propriedade",
                            Value = "EmpresaDefault"
                        }
                    });
                    #endregion

                    #region Usuário padrão
                    OnSaving("Criando usuário padrão ...");
                    //-------------------------------------------------------------------------
                    // Definir o tipo de usuário.
                    //-------------------------------------------------------------------------
                    Usuario.TiposUsuarios = new List<ITipoUsuario> { new TipoUsuario().Find<ITipoUsuario>()[0] };
                    Usuario.FisicaJuridica = FisicaJuridica.Fisica;
                    Usuario.Save();

                    //-------------------------------------------------------------------------
                    // O GUID deste usuário será o GUID padrão de usuários
                    //-------------------------------------------------------------------------
                    connection.ExecuteNonQuery(@"UPDATE cfg_Configuracao SET Valor = @valor WHERE Propriedade = @propriedade;",
                        new[]
                    {
                        new Parameter
                        {
                            ParameterName = "@valor",
                            Value = Usuario.GUID
                        },
                        new Parameter
                        {
                            ParameterName = "@propriedade",
                            Value = "UsuarioDefault"
                        }
                    });
                    #endregion

                    #region Definir propriedades
                    Settings.EmpresaAtual = Empresa;
                    Settings.UsuarioAtual = Usuario;
                    #endregion

                    #region Contas Correntes
                    #region empresa
                    ContaCorrente cc = new ContaCorrente();
                    cc.Tipo = OpenPOS.Enuns.Cadastro.Financeiro.TipoContaCorrente.PagarReceber;
                    cc.Descricao = String.IsNullOrEmpty(Empresa.RazaoSocial) ?
                        (String.IsNullOrEmpty(Empresa.NomeFantasia) ? Unimake.Convert.ToString(Empresa.EGUID) :
                                                                      Empresa.NomeFantasia) : Empresa.RazaoSocial;
                    cc.Save();

                    //vincular com a empresa

                    connection.ExecuteNonQuery("UPDATE cad_Pessoa SET GUIDContaCorrente = @cc WHERE GUID = @g",
                        new[]{
                        new Parameter{
                            ParameterName="@cc",
                            Value = cc.GUID,
                        },
                        new Parameter{
                            ParameterName="@g",
                            Value = Empresa.GUID,
                        }
                    });
                    #endregion

                    #region usuário
                    cc = new ContaCorrente();
                    cc.Tipo = OpenPOS.Enuns.Cadastro.Financeiro.TipoContaCorrente.PagarReceber;
                    cc.Descricao = String.IsNullOrEmpty(Usuario.RazaoSocial) ?
                        (String.IsNullOrEmpty(Usuario.NomeFantasia) ? Unimake.Convert.ToString(Usuario.EGUID) :
                                                                      Usuario.NomeFantasia) : Usuario.RazaoSocial;
                    cc.Save();

                    //vincular com o usuário

                    connection.ExecuteNonQuery("UPDATE cad_Pessoa SET GUIDContaCorrente = @cc WHERE GUID = @g",
                        new[]{
                        new Parameter{
                            ParameterName="@cc",
                            Value = cc.GUID,
                        },
                        new Parameter{
                            ParameterName="@g",
                            Value = Usuario.GUID,
                        }
                    });
                    #endregion
                    #endregion

                    #region Administrador
                    OnSaving("Salvando o Administrador da aplicação.");

                    #region Tipo de usuário
                    ITipoUsuario tipoAdministrador = new TipoUsuario()
                    {
                        Administrador = true,
                        Descricao = "Administrador da aplicação"
                    };

                    tipoAdministrador.Save();
                    #endregion

                    IUsuario administrador = new Usuario()
                    {
                        RazaoSocial = "Administrador",
                        NomeFantasia = "Administrador",
                        Fisica = Usuario.Fisica,
                        Enderecos = Usuario.Enderecos,
                        CanaisComunicacao = Usuario.CanaisComunicacao,
                        FisicaJuridica = FisicaJuridica.Fisica,
                        NomeLogin = "******",
                        Senha = "Administrador123#",
                        TiposUsuarios = new List<ITipoUsuario>() { tipoAdministrador }
                    };

                    //O Administrador do sistema tem que ter acesso a todas as funcionalidades da aplicação
                    INivelAcesso nivelAcesssoAdministrador = new NivelAcesso();
                    nivelAcesssoAdministrador.Descricao = "Nível de acesso do administrador da aplicação";
                    nivelAcesssoAdministrador.UsuarioCadastro = administrador;
                    nivelAcesssoAdministrador.Save();

                    administrador.NivelAcesso = nivelAcesssoAdministrador;

                    administrador.Save();
                    #endregion

                    #region Supervisor da aplicação
                    OnSaving("Salvando o supervisor da aplicação");
                    #region Tipo de usuário
                    ITipoUsuario tipoSupervisor = new TipoUsuario()
                    {
                        Administrador = false,
                        Descricao = "Supervisor da aplicação"
                    };

                    tipoSupervisor.Save();
                    #endregion

                    IUsuario supervisor = new Usuario()
                    {
                        RazaoSocial = "Supervisor",
                        NomeFantasia = "Supervisor",
                        Fisica = Usuario.Fisica,
                        Enderecos = Usuario.Enderecos,
                        CanaisComunicacao = Usuario.CanaisComunicacao,
                        FisicaJuridica = FisicaJuridica.Fisica,
                        NomeLogin = "******",
                        Senha = "Supervisor123#",
                        TiposUsuarios = new List<ITipoUsuario>() { tipoSupervisor }
                    };

                    #region Nível de acesso
                    INivelAcesso nivelAcessoSupervisor = new NivelAcesso();
                    nivelAcessoSupervisor.Descricao = "Nível de acesso do supervisor da aplicação";
                    nivelAcessoSupervisor.UsuarioCadastro = supervisor;

                    //Controles que o supervisor da aplicação não terá acesso
                    nivelAcessoSupervisor.Regras.Add(new NivelAcessoRegra() { NomeControle = "mnuCadastro" });
                    nivelAcessoSupervisor.Regras.Add(new NivelAcessoRegra() { NomeControle = "mnuFinanceiro" });
                    nivelAcessoSupervisor.Regras.Add(new NivelAcessoRegra() { NomeControle = "mnuRelatorio" });

                    nivelAcessoSupervisor.Save();

                    supervisor.NivelAcesso = nivelAcessoSupervisor;
                    #endregion

                    supervisor.Save();
                    #endregion

                    #region Consumidor Final
                    OnSaving("Criando Consumidor Final ...");
                    ICliente consumidorFinal = new Cliente
                    {
                        NomeFantasia = "Consumidor Final",
                        RazaoSocial = "Consumidor Final",
                        Enderecos = Usuario.Enderecos,
                        CanaisComunicacao = Usuario.CanaisComunicacao,
                        Fisica = Usuario.Fisica,
                        FisicaJuridica = FisicaJuridica.Fisica
                    };

                    consumidorFinal.Save();

                    CurrentConfig.SaveConfig("ConsumidorFinal", consumidorFinal.GUID, "Consumidor Final da aplicação");

                    #region Conta corrente
                    ContaCorrente conta = new ContaCorrente();
                    conta.Tipo = OpenPOS.Enuns.Cadastro.Financeiro.TipoContaCorrente.PagarReceber;
                    conta.Descricao = String.IsNullOrEmpty(consumidorFinal.RazaoSocial) ?
                        (String.IsNullOrEmpty(consumidorFinal.NomeFantasia) ? Unimake.Convert.ToString(consumidorFinal.EGUID) :
                                                                      consumidorFinal.NomeFantasia) : consumidorFinal.RazaoSocial;
                    conta.Save();

                    //vincular com a empresa

                    connection.ExecuteNonQuery("UPDATE cad_Pessoa SET GUIDContaCorrente = @cc WHERE GUID = @g",
                        new[]{
                        new Parameter{
                            ParameterName="@cc",
                            Value = conta.GUID,
                        },
                        new Parameter{
                            ParameterName="@g",
                            Value = consumidorFinal.GUID,
                        }
                    });
                    #endregion
                    #endregion

                    #region Analista de crédito
                    OnSaving("Criando o analista de crédito ...");

                    ITipoUsuario tipoAnalista = new TipoUsuario
                    {
                        Administrador = false,
                        Descricao = "Analista de crédito"
                    };

                    tipoAnalista.Save();

                    IUsuario analistaCredito = new Usuario
                    {
                        NomeFantasia = "Analista de crédito",
                        RazaoSocial = "Analista de crédito",
                        Fisica = Usuario.Fisica,
                        Enderecos = Usuario.Enderecos,
                        CanaisComunicacao = Usuario.CanaisComunicacao,
                        FisicaJuridica = FisicaJuridica.Fisica,
                        NomeLogin = "******",
                        Senha = "Analista123#",
                        TiposUsuarios = new List<ITipoUsuario>() { tipoAnalista }
                    };

                    analistaCredito.Save();

                    CurrentConfig.SaveConfig("AnalistaCredito", analistaCredito.GUID, "Pessoa responsável pela a análise de crédito do cliente nos faturamentos");
                    #endregion

                    #region Fiscal de caixa
                    OnSaving("Criando o fiscal de caixa ...");
                    ITipoUsuario tipoFiscal = new TipoUsuario
                    {
                        Administrador = false,
                        Descricao = "Fiscal de caixa"
                    };

                    tipoFiscal.Save();

                    IUsuario fiscalCaixa = new Usuario
                    {
                        NomeFantasia = "Fiscal de caixa",
                        RazaoSocial = "Fiscal de caixa",
                        Fisica = Usuario.Fisica,
                        Enderecos = Usuario.Enderecos,
                        CanaisComunicacao = Usuario.CanaisComunicacao,
                        FisicaJuridica = FisicaJuridica.Fisica,
                        NomeLogin = "******",
                        Senha = "Fiscal123#",
                        TiposUsuarios = new List<ITipoUsuario>() { tipoFiscal }

                    };

                    fiscalCaixa.Save();

                    CurrentConfig.SaveConfig("FiscalCaixa", fiscalCaixa.GUID, "É o fiscal de caixa da aplicação");
                    #endregion

                    #region Salvar itens especiais
                    new Data.Cadastro.Item.Especial.DespesaAcessoria().Save();
                    new Data.Cadastro.Item.Especial.Desconto().Save();
                    new Data.Cadastro.Item.Especial.EncargoFinanceiro().Save();
                    new Data.Cadastro.Item.Especial.Frete().Save();
                    new Data.Cadastro.Item.Especial.Seguro().Save();
                    #endregion

                    #region Tipo de instalação do terminal
                    if (TipoInstalacaoTerminal == TipoInstalacaoTerminal.PDV)
                    {
                        #region Configurações gerais
                        SaveConfig("TEF_CodigoLoja", TEFCodigoLoja, "Código de loja cadastrado no TEF.");
                        SaveConfig("TEF_EnderecoIP", TEFEnderecoIP, "Endereço de IP do servidor TEF.");
                        SaveConfig("TEF_MultiplosCartoes", TEFMultiplosCartoes ? 1 : 0, "Habilita o TEF para trabalhar com múltiplos cartões");
                        SaveConfig("TEF_Numerocartoes", TEFNumeroCartoes, "Especifica o número de cartões que a aplicação utilizará para pagamentos com TEF");
                        SaveConfig("TEF_NumeroTerminal", TEFNumeroTerminal, "Número de terminal do cliente TEF.");
                        SaveConfig("SH_NumeroLaudo", SHNumeroLaudo, "Número do laudo da homologação PAF-ECF");
                        SaveConfig("SH_Versao", SHVersao, "Versão da aplicação homologada no PAF-ECF");
                        SaveConfig("SH_NomeApp", SHNomeApp, "Nome da aplicação homologada para o PAF-ECF");
                        SaveConfig("SH_CNPJ", SHCNPJ, "CNPJ da empresa desenvolvedora do PAF");
                        SaveConfig("SH_IE", SHIE, "Inscrição Estadual da empresa desenvolvedora do PAF");
                        SaveConfig("SH_IM", SHIM, "Inscrição Municipal da empresa desenvolvedora do PAF");
                        SaveConfig("SH_Nome", SHNome, "Nome da empresa desenvolvedora do PAF");
                        SaveConfig("SH_ER_PAF_ECF", SHERPAFECF, "Versão da especificação do PAF-ECF");
                        SaveConfig("TEF_HabilitaCieloPremia", TEFHabilitaCieloPremia ? 1 : 0, "Este estabelecimento participa do Cielo Premia.");
                        SaveConfig("ECF_MensagemRodape", ECFMensagemRodape, "Mensagem de rodapé exibida ao final do cupom.");
                        #endregion

                        #region PDV

                        OnSaving("Criando PDV ...");

                        Impressora.PDV.Save();
                        #endregion

                        #region Impressora padrão
                        OnSaving("Criando Impressora ...");
                        Impressora.Save();
                        #endregion

                        #region Caixa
                        OnSaving("Criando cadastro de caixa...");
                        ICaixa caixa = new Caixa();
                        caixa.PDV = Impressora.PDV;
                        caixa.Descricao = Settings.MachineName;
                        caixa.Status = OpenPOS.Enuns.FrenteCaixa.Cadastro.Caixa.Status.Aberto;
                        #endregion

                        #region Operador de caixa
                        OnSaving("Criando operador de caixa padrão...");
                        ITipoUsuario tipoUsuario = new TipoUsuario
                        {
                            Administrador = false,
                            Descricao = "Operador de Caixa"
                        };

                        tipoUsuario.Save();

                        IOperadorCaixa operador = new OperadorCaixa
                        {
                            Fisica = Usuario.Fisica,
                            NomeFantasia = "Operador Padrão",
                            RazaoSocial = "Operador Padrão",
                            Enderecos = Usuario.Enderecos,
                            CanaisComunicacao = Usuario.CanaisComunicacao,
                            NomeLogin = "******",
                            Senha = "Oper123#",
                            FisicaJuridica = FisicaJuridica.Fisica,
                            TiposUsuarios = new List<ITipoUsuario> { tipoUsuario }
                        };

                        #region Nível de Acesso

                        INivelAcesso nivelAcessoOperadorDeCaixa = new NivelAcesso();

                        nivelAcessoOperadorDeCaixa.Descricao = "Operador de caixa";
                        nivelAcessoOperadorDeCaixa.UsuarioCadastro = operador;

                        // Controles que são negados para o usuário do
                        // tipo operador de caixa.
                        nivelAcessoOperadorDeCaixa.Regras.Add(new NivelAcessoRegra() { NomeControle = "mnuCadastro" });
                        nivelAcessoOperadorDeCaixa.Regras.Add(new NivelAcessoRegra() { NomeControle = "mnuLancamento" });
                        nivelAcessoOperadorDeCaixa.Regras.Add(new NivelAcessoRegra() { NomeControle = "mnuFinanceiro" });
                        nivelAcessoOperadorDeCaixa.Regras.Add(new NivelAcessoRegra() { NomeControle = "mnuRelatorio" });
                        nivelAcessoOperadorDeCaixa.Regras.Add(new NivelAcessoRegra() { NomeControle = "mnuCadastro" });
                        nivelAcessoOperadorDeCaixa.Regras.Add(new NivelAcessoRegra() { NomeControle = "optBarVenda" });
                        nivelAcessoOperadorDeCaixa.Regras.Add(new NivelAcessoRegra() { NomeControle = "optBarDAV" });
                        nivelAcessoOperadorDeCaixa.Regras.Add(new NivelAcessoRegra() { NomeControle = "tbtnDAV" });
                        nivelAcessoOperadorDeCaixa.Regras.Add(new NivelAcessoRegra() { NomeControle = "tbtnConsultas" });
                        nivelAcessoOperadorDeCaixa.Regras.Add(new NivelAcessoRegra() { NomeControle = "tbtnOutros" });
                        nivelAcessoOperadorDeCaixa.Regras.Add(new NivelAcessoRegra() { NomeControle = "tbtnVendas" });

                        nivelAcessoOperadorDeCaixa.Save();

                        operador.NivelAcesso = nivelAcessoOperadorDeCaixa;

                        #endregion

                        operador.Save();

                        CurrentConfig.SaveConfig("OperadorCaixa", tipoUsuario.GUID, "Define o tipo de operador de caixa.");
                        #endregion

                        #region Formas de pagamentos
                        OnSaving("Salvando formas de pagamento ...");
                        foreach (IImpressoraFormaPagto item in FormasPagto)
                        {
                            item.FormaPagamento.Save();
                            item.Impressora = Impressora;
                            item.Save();
                        }
                        #endregion

                        #region Alíquota da impressora fiscal
                        OnSaving("Salvando alíquotas da impressora fiscal ...");

                        foreach (object[] aliq in Aliquotas)
                        {
                            IAliquota aliquota = new Aliquota();
                            GUID guidAliquota = (GUID)aliq[3].ToString();

                            //Se não foi encontrado o GUID da AliquotaTributo não faz o vínculo
                            if (!guidAliquota.IsNullOrEmpty())
                            {
                                aliquota.TributoAliquota = new AliquotaTributo(guidAliquota);
                                aliquota.Impressora = Impressora;
                                aliquota.Indice = aliq[1].ToString();
                                aliquota.Aliquota = Unimake.Convert.ToDouble(aliquota.TributoAliquota.Valor);
                                aliquota.Save();
                            }
                        }
                        #endregion

                        #region Clisitef
                        SaveCliSiTef();
                        #endregion
                    }
                    #endregion
                }
                else if (CurrentConfig.TipoInstalacao == Enuns.TipoInstalacao.ClientePostgreSQL ||
                         CurrentConfig.TipoInstalacao == Enuns.TipoInstalacao.ClienteSQLite)
                {
                    #region Tipo de instalação do terminal
                    if (TipoInstalacaoTerminal == TipoInstalacaoTerminal.PDV)
                    {
                        #region PDV
                        OnSaving("Criando PDV ...");
                        Impressora.PDV.Save();
                        #endregion

                        #region Impressora padrão
                        OnSaving("Criando Impressora ...");
                        Impressora.Save();
                        #endregion

                        #region Caixa
                        OnSaving("Criando cadastro de caixa...");
                        ICaixa caixa = new Caixa();
                        caixa.PDV = Impressora.PDV;
                        caixa.Descricao = Settings.MachineName;
                        caixa.Status = OpenPOS.Enuns.FrenteCaixa.Cadastro.Caixa.Status.Aberto;
                        #endregion

                        #region Formas de pagamentos
                        OnSaving("Salvando formas de pagamento ...");
                        foreach (IImpressoraFormaPagto item in FormasPagto)
                        {
                            item.FormaPagamento.Save();
                            item.Impressora = Impressora;
                            item.Save();
                        }
                        #endregion

                        #region Alíquota da impressora fiscal
                        OnSaving("Salvando alíquotas da impressora fiscal ...");

                        foreach (object[] aliq in Aliquotas)
                        {
                            IAliquota aliquota = new Aliquota();
                            GUID guidAliquota = (GUID)aliq[3].ToString();

                            //Se não foi encontrado o GUID da AliquotaTributo não faz o vínculo
                            if (!guidAliquota.IsNullOrEmpty())
                            {
                                aliquota.TributoAliquota = new AliquotaTributo(guidAliquota);
                                aliquota.Impressora = Impressora;
                                aliquota.Indice = aliq[1].ToString();
                                aliquota.Aliquota = Unimake.Convert.ToDouble(aliquota.TributoAliquota.Valor);
                                aliquota.Save();
                            }
                        }
                        #endregion

                        #region Clisitef
                        SaveCliSiTef();
                        #endregion
                    }
                    #endregion
                }

                if (TipoInstalacao == Enuns.TipoInstalacao.ClientePostgreSQL || TipoInstalacao == TipoInstalacao.ServidorPostgreSQL)
                    UpdateAppConfig();

                connection.CommitTransaction();
            }
            catch
            {
                if (connection != null)
                {
                    if (connection.Transaction != null &&
                        connection.Transaction.State == TransactionState.Begin)
                        connection.RollbackTransaction();
                }
                throw;
            }
            finally
            {
                if (connection != null)
                    connection.Close();
            }
        }