Beispiel #1
0
        /// <summary>
        /// Popula as propriedades do Usuário.
        /// </summary>
        /// <param name="dataReader">DataReader que proverá as informações necessárias.</param>
        public override void Populate(DataReader dataReader)
        {
            #region Base
            base.Populate(dataReader);
            #endregion

            #region Usuário
            NomeLogin = dataReader.GetValue<String>("p_NomeLogin");
            Senha = dataReader.GetValue<String>("p_Senha");
            SenhaAlteracao = dataReader.GetValue<DateTime>("p_SenhaAlteracao");
            MultiploLogin = dataReader.GetValue<Boolean>("p_MultiploLogin");
            Logado = MultiploLogin = dataReader.GetValue<Boolean>("p_Logado");
            NivelAcesso = new NivelAcesso(dataReader.GetValue<String>("p_GUIDNivelAcesso"));
            oldPass = Senha;
            Replicado = dataReader.GetBoolean("p_Replicado");
            #endregion

            #region Tipos de usuários

            DataReader dr = Connection.ExecuteReader(@"SELECT cad_TipoUsuario.GUID AS TipoGUID,
                                                              cad_TipoUsuario.EGUID AS TipoEGUID,
                                                              cad_TipoUsuario.Descricao AS TipoDescricao,
                                                              cad_TipoUsuario.Administrador AS TipoAdministrador
                                                       FROM cad_TipoUsuario
                                                       INNER JOIN cad_PessoaUsuarioTipo ON cad_PessoaUsuarioTipo.GUIDTipoUsuario = cad_TipoUsuario.GUID
                                                       WHERE cad_PessoaUsuarioTipo.GUIDPessoaUsuario = @g",
                                                        new[] {
                                                            new Parameter{
                                                                ParameterName = "@g",
                                                                Value = GUID
                                                            }
                                                        });
            TiposUsuarios = (from x in dr
                             select new TipoUsuario
                             {
                                 New = false,
                                 GUID = Unimake.Convert.ToString(x["TipoGUID"]),
                                 EGUID = Unimake.Convert.ToString(x["TipoEGUID"]),
                                 Descricao = Unimake.Convert.ToString(x["TipoDescricao"]),
                                 Administrador = Unimake.Convert.ToBoolean(x["TipoAdministrador"])
                             }).ToList<ITipoUsuario>();
            #endregion
        }
Beispiel #2
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();
            }
        }