/// <summary> /// Ao carregar o formulário /// </summary> /// <param name="sender">Objeto que disparou o evento</param> /// <param name="e">Argumento do evento gerado</param> private void Inicial_Load(object sender, EventArgs e) { splash.Show(); splash.SetMessage("Verificando ECF"); if(Settings.ECF.ECFAtual != null) { ICupomFiscal cf = null; #if IsPAF IArquivoAuxiliar aux = null; #endif try { cf = new CupomFiscal(Settings.ECF.ECFAtual.ModeloACBR, Settings.ECF.ECFAtual.Porta); #if IsPAF aux = new ArquivoAuxiliar(); if(!System.IO.File.Exists(aux.ArquivoAuxiliarPath)) { aux.GrandeTotal = cf.GrandeTotal.ToString(); aux.NumeroSerie = cf.NumeroSerie; aux.Gerar(); } aux.Carregar(); #endif } catch { } #if IsPAF if((cf.Estado != EstadoECF.Livre) || !aux.PermiteFaturamento(cf.GrandeTotal)) { //TODO André: Essa parte do código só vai ser executado quando por algum motivo ocorreu a perda //acidentalmente dos dados do //arquivo auxiliar criptografado, onde será reconstituído o valor do Grande Total e Número de Série do Equipamento Emissor de Cupom Fiscal conectado //Requisito XXIV - item 8 try { using(IInformacao info = new Informacao(Settings.ECF.ECFAtual.ModeloACBR, Settings.ECF.ECFAtual.Porta)) { DadosReducaoZClass dadosReducao = info.DadosReducaoZ; if(aux.RecomporTotalizadorGeral(info.CRZ, info.CRO, dadosReducao.ValorVendaBruta, dadosReducao.DataHoraEmissao)) aux.CorrigeDados(cf.GrandeTotal); else { MessageBox.ShowWarning("Não é permitido o faturamento na impressora fiscal, pois os dados do Grande Total ou Número de série, diferem dos que estão no arquivo auxiliar criptografado!"); return; } } } catch { } } #endif splash.SetMessage("Preparando Caixa"); IVendaCF venda = new VendaCF().HasTemp(Settings.ECF.ECFAtual) as IVendaCF; if(venda != null) { if(venda.Status == Enuns.Faturamento.Lancamento.Status.ImpressoCupom) new Pagamento(cf, venda).Confirmacao(); else new Pagamento(cf, venda).CancelarTransacoesPendentes(); try { cf = new CupomFiscal(Settings.ECF.ECFAtual.ModeloACBR, Settings.ECF.ECFAtual.Porta); if(cf.Estado == EstadoECF.Pagamento) { if(cf.TotalPago > 0) { cf.CancelaCupom(); if(cf.Estado == EstadoECF.Livre) venda.Cancelar("Venda cancelada pelo Usuário"); } } else if(cf.Estado == EstadoECF.Venda) { } else if(cf.Estado == EstadoECF.Livre) { venda.Cancelar("Venda cancelada pelo Sistema"); } else if(cf.Estado == EstadoECF.Relatorio) { new OpenPOS.ECF.RelatorioGerencial(Settings.ECF.ECFAtual.ModeloACBR, Settings.ECF.ECFAtual.Porta).FechaRelatorio(Enuns.ECF.TipoOutrosDocumentos.RG, false); } else if(cf.Estado == EstadoECF.NaoInicializada) { throw new Exception(); } } catch { if(MessageBox.AskYesNo("Impressora não responde.\r\tContinuar?", "Erro") == DialogResult.No) Application.Exit(); } } splash.SetMessage("Finalizando Incialização"); } optbCaixa.Visible = optBarVenda.Visible = optbConsulta.Visible = optBarDAV.Visible = optBarOutros.Visible = false; //Configurações na barra de acordo com o terminal, ou seja PDV ou não if(isPDV) { labelOperador.Text = Settings.UsuarioAtual.NomeLogin; labelTerminal.Text = Settings.MachineName; IAbreFechaCaixa abreCx = new AbreCaixa().PermiteAbrir(Settings.MachineName, DateTime.Now); labelStatus.Text = abreCx == null ? Convert.ToString(Enuns.FrenteCaixa.Cadastro.Caixa.Status.Fechado) : Convert.ToString(abreCx.Status); } else { labelOperador.Text = Settings.UsuarioAtual.NomeLogin; labelOperador.Location = new Point(202, 540); labelTerminal.Text = ""; labelStatus.Text = ""; } splash.Close(); }
public void LerTotaisRelatoriosGerenciais() { using (IInformacao inf = new OpenPOS.ECF.Informacao()) { inf.LerTotaisRelatoriosGerenciais(); Assert.IsTrue(inf.RelatoriosGerenciais.Length > 0); } }
public void LerTotaisFormaPagamento() { using (IInformacao inf = new OpenPOS.ECF.Informacao()) { inf.LerTotaisFormaPagamento(); Assert.IsTrue(inf.FormasPagamento.Length > 0); } }
public void LerTotaisComprovanteNaoFiscal() { using (IInformacao inf = new OpenPOS.ECF.Informacao()) { inf.LerTotaisComprovanteNaoFiscal(); Assert.IsTrue(inf.ComprovantesNaoFiscais.Length > 0); } }
public void LerTotaisAliquota() { using (IInformacao inf = new OpenPOS.ECF.Informacao()) { inf.LerTotaisAliquota(); Assert.IsTrue(inf.Aliquotas.Length > 0); } }
/// <summary> /// Simula a impressão de uma abertura de cupom. /// </summary> /// <param name="cpf_cnpj">Número de CPF e CNPJ do cliente</param> /// <param name="abreCupomECF">se true, abre o cupom na ECF</param> /// ´<param name="pessoa">Pessoa relacionada ao cupom, pode ser informado apenas o CPF/CNPJ no parâmetro cpf_cnpj</param> public virtual void AbreVenda(string cpf_cnpj = "", IDadoPessoa pessoa = null, bool abreCupomECF = true) { ICupomFiscal cf = null; #region Buffer if (!fromBuffer) { buffer = new List<BufferItem>(); buffer.Add(new BufferItem { AbreCupom = new AbreCupomArgs { AbreCupomECF = abreCupomECF, CPF_CNPJ = cpf_cnpj, Pessoa = pessoa } }); } #endregion #if IsPAF //TODO André: Comentado as linhas referente ao manejo do arquivo auxiliar. Para o pessoal do suporte poder testar o OpenPOS sem travar. IArquivoAuxiliar arqAux = new ArquivoAuxiliar(); #endif OpenPOS.Model.Cadastro.Endereco.IEndereco endereco = null; endereco = Settings.EmpresaAtual.Enderecos[0].Endereco; string numero = Settings.EmpresaAtual.Enderecos[0].Numero; ICanalComunicacao canalcomunicacao = null; canalcomunicacao = Settings.EmpresaAtual.CanaisComunicacao[0]; string nome = string.Empty; string ccf = string.Empty; string coo = string.Empty; string enderecoPessoa = string.Empty; //Todo: Implementar os dados do cliente no cupom if (pessoa != null) { nome = pessoa.NomeFantasia; enderecoPessoa = pessoa.Cliente.Enderecos.Count == 0 ? "" : pessoa.Cliente.Enderecos.FirstOrDefault().Endereco.Endereco; if (pessoa.Cliente.FisicaJuridica == Enuns.Cadastro.Pessoa.FisicaJuridica.Fisica) cpf_cnpj = Unimake.Format.CPF(cpf_cnpj); else if (pessoa.Cliente.FisicaJuridica == Enuns.Cadastro.Pessoa.FisicaJuridica.Juridica) cpf_cnpj = Unimake.Format.CNPJ(cpf_cnpj); if (String.IsNullOrEmpty(cpf_cnpj)) cpf_cnpj = pessoa.Cliente.GetCPFCNPJ(); } #region impressora if (abreCupomECF) { cf = new CupomFiscal(Unimake.Convert.ToEnum<ModeloECF>(Settings.ECF.ECFAtual.ModeloACBR), Settings.ECF.ECFAtual.Porta); if ((fromBuffer || Settings.ECF.Concomitante) && abreCupomECF) { using (cf) { #if IsPAF arqAux.Carregar(); if (!arqAux.NumeroFabricacaoEquals()) { throw new OpenPOS.Exceptions.Faturamento.Lancamento.Movimento.ArquivoAuxiliarInvalido(); } ////Comparar o valor do grande total do ECF com o valor do grande total do arquivo auxiliar, se estiverem iguais permitir o faturamento de um cupom fiscal. ////É feito o mesmo tratamento para o número de fabricação do ECF if ((cf.Estado != EstadoECF.Livre) || !arqAux.PermiteFaturamento(cf.GrandeTotal)) { //TODO André: Essa parte do código só vai ser executado quando por algum motivo ocorreu a perda //acidentalmente dos dados do //arquivo auxiliar criptografado, onde será reconstituído o valor do Grande Total e Número de Série do Equipamento Emissor de Cupom Fiscal conectado //Requisito XXIV - item 8 using (IInformacao info = new Informacao(Settings.ECF.ECFAtual.ModeloACBR, Settings.ECF.ECFAtual.Porta)) { DadosReducaoZClass dadosReducao = info.DadosReducaoZ; if (arqAux.RecomporTotalizadorGeral(info.CRZ,info.CRO,dadosReducao.ValorVendaBruta,dadosReducao.DataHoraEmissao)) arqAux.CorrigeDados(cf.GrandeTotal); else { MessageBox.ShowWarning("Não é permitido o faturamento na impressora fiscal, pois os dados do Grande Total ou Número de série, diferem dos que estão no arquivo auxiliar criptografado!"); BloquearVenda = true; return; } } } #else if ((cf.Estado != EstadoECF.Livre)) { MessageBox.ShowWarning("Não é permitido o faturamento na impressora!"); return; } #endif cf.AbreCupom(cpf_cnpj, nome, endereco.Logradouro.ToString(), false); BloquearVenda = false; ccf = Unimake.Convert.ToString(cf.CCF); coo = Unimake.Convert.ToString(cf.COO); } } } #endregion #region bobina Clear(); WriteLine("{0} {1}-{2}", Settings.EmpresaAtual.NomeFantasia.ToUpper(), Unimake.Convert.ToString(endereco.Cidade).ToUpper(), endereco.Estado.UF.Sigla.ToUpper()); WriteLine("{0} {1}, {2} FONE:{3} ", Unimake.Convert.ToString(endereco.Endereco).ToUpper(), numero.ToString(), Unimake.Convert.ToString(endereco.Bairro).ToUpper(), (Telefone)canalcomunicacao.IdentificadorCanal.ToString()); WriteLine("CNPJ: {0}", Unimake.Format.CNPJ(Settings.EmpresaAtual.Juridica.CNPJ)); WriteLine("IE: {0}", Settings.EmpresaAtual.Juridica.IE); WriteLine("IM: {0}", Settings.EmpresaAtual.Juridica.IM); DrawLine(); if (abreCupomECF) WriteLine("{0} CCF: {1} COO: {2}", cf.DataHora, ccf.Trim().PadLeft(6, '0'), coo.Trim().PadLeft(6, '0')); WriteLine("CNPJ/CPF consumidor:{0}", cpf_cnpj); WriteLine("NOME: {0}", nome); WriteLine("END: {0}", Unimake.Convert.ToString(enderecoPessoa).ToUpper()); WriteLine(Unimake.Convert.ToBoolean(Settings.Setting.EmissaoConsumidorFinalNFCe) ? " NOTA FISCAL AO CONSUMIDOR ELETRÔNICA" : " CUPOM FISCAL"); DrawLine(); WriteLine("ITEM CÓDIGO DESCRIÇÃO QTD.UN.VL UNIT(R$) ST VL ITEM(R$)"); DrawLine(); StatusImpressao = BobinaStatusImpressao.CupomAberto; #endregion }