/// <summary> /// Faz a abertura do caixa /// </summary> /// <param name="sender">Obejto que disparou o evento</param> /// <param name="e">Argumento do evento gerado</param> private void btnOK_Click(object sender, System.EventArgs e) { dataHoraAbertura = Unimake.Convert.ToDateTime(string.Format("{0} {1}", dtpDataAbertura.Text, dtpHoraAbertura.Text)); IAbreCaixa abreCx = null; try { //sfCaixa.SelectedItem.GUID abreCx = new AbreCaixa().PermiteAbrir(Settings.MachineName, DateTime.Now); if (abreCx == null) { abreCx = new AbreCaixa(); IList<Model.IBaseModel> caixas = new Caixa().Find(new Where() { { "cad_PDV.Nome", Settings.MachineName } }); if (caixas.Count > 0) abreCx.Caixa = caixas[0] as ICaixa; else { ICaixa c = new Caixa(); c.PDV = new PDV().Find(new Where() { { "cad_PDV.Nome", Settings.MachineName } })[0] as PDV; c.Descricao = Settings.MachineName; c.Save(); abreCx.Caixa = c; } abreCx.Usuario = new Usuario(Settings.UsuarioAtual.GUID); abreCx.DataHoraAbertura = dataHoraAbertura; abreCx.Save(); Settings.PDV.AberturaCaixa = abreCx; MessageBox.ShowWarning("Caixa aberto com sucesso."); this.ClearControls(); StatusCaixa = abreCx.Status.ToString(); } else MessageBox.ShowWarning("Não é permitido abrir o caixa, pois se encontra: " + abreCx.Status.ToString()); } catch(PDVObrigatorio) { if(MessageBox.Show("Não existe PDV cadastrado para este terminal. Deseja cadastrar?", "Aviso", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes) { PDV pdv = new PDV(); pdv.Nome = Settings.MachineName; pdv.Observacao = Settings.MachineName; pdv.Save(); } } catch(Exception ex) { MessageBox.Show(ex.Message, "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
/// <summary> /// Método utilizado para preencher esta instância com os dados do dataReader /// </summary> /// <param name="dataReader">DataReader com os dados que deverão ser passados para esta instância</param> public override void Populate(DataReader dataReader) { #region base base.Populate(dataReader); #endregion #region desta classe Caixa = new Caixa(dataReader.GetValue<string>("p_GUIDCaixa")); Usuario = new Usuario((GUID)dataReader.GetValue<string>("p_GUIDUsuario")); DataHoraAbertura = dataReader.GetValue<DateTime>("p_DataHoraAbertura"); DataHoraFechamento = dataReader.GetValue<DateTime>("p_DataHoraFechamento"); Status = dataReader.GetValue<Status>("p_Status"); #endregion }
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(); } }