public void CriaCupomFiscal() { using (ICupomFiscal cf = new CupomFiscal()) { cf.AbreCupom("", "", "", false); cf.VendeItem("001", "teste", "FF", 12.00M, 10.00M, 0.0M, "UN", "%", "D", -1); cf.SubTotalizaCupom(0.0M, "teste"); cf.EfetuaPagamento("01", 12.00M, "", false); cf.FechaCupom("Obrigado. Volte sempre!"); WriteLine("Cupom impresso com sucesso!"); } }
public void TotalizaCupomFiscal() { // Totalizando cupom subtotalizando-o primeiro using (ICupomFiscal cf = new CupomFiscal()) { cf.AbreCupom("", "", "", false); cf.VendeItem("001", "teste", "FF", 12.00M, 10.00M, 0.0M, "UN", "%", "D", -1); cf.SubTotalizaCupom(2.00M, "Obrigado pela preferência!"); cf.EfetuaPagamento("01", 12.00M, "", false); cf.FechaCupom("Obrigado. Volte sempre!"); WriteLine("Cupom totalizado com com sucesso!"); } }
public void CupomVinculado() { using (ICupomFiscal cf = new CupomFiscal()) { #region Dados do cupom fiscal string cnpj = string.Empty; string nome = string.Empty; string endereco = string.Empty; string codProd = "00001"; string descricaoProd = "Caneta Azul"; string aliquota = "I"; double qtde = 10; double vlrUnit = new Random().NextDouble(); double desc = 0; string un = "UN"; string tipoDesc = "%"; string descAcre = "D"; int codDepto = -1; double valor = qtde * vlrUnit; bool vinculado = false; string obs = "Imprime esse texto no cupom fiscal"; string codFormaPagto = string.Empty; FormaPagamento[] formaPagtos = cf.FormasPagamento; for (int i = 0; i < 5; i++) { codFormaPagto = formaPagtos[i].Indice; } cf.AbreCupom(cnpj, nome, endereco); cf.VendeItem(codProd, descricaoProd, aliquota, (decimal)qtde, (decimal)vlrUnit, (decimal)desc, un, tipoDesc, descAcre, codDepto); cf.SubTotalizaCupom((decimal)desc, obs); cf.EfetuaPagamento(codFormaPagto, (decimal)valor, obs, vinculado); cf.FechaCupom(obs); #endregion int COO = cf.COO; using (ICupomVinculado cv = new CupomVinculado()) { #region Dados do cupom vinculado double valorCV = valor; #endregion cv.AbreCupomVinculado(COO, codFormaPagto, (decimal)valorCV); } } }
public void ReducaoZ() { using (ICupomFiscal cf = new CupomFiscal()) { #region Dados do cupom fiscal string cnpj = string.Empty; string nome = string.Empty; string endereco = string.Empty; string codProd = "00001"; string descricaoProd = "Caneta Azul"; string aliquota = "I"; double qtde = 10; double vlrUnit = new Random().NextDouble(); double desc = 0; string un = "UN"; string tipoDesc = "%"; string descAcre = "D"; int codDepto = -1; double valor = qtde * vlrUnit; bool vinculado = false; string obs = "Imprime esse texto no cupom fiscal"; string codFormaPagto = string.Empty; FormaPagamento[] formaPagtos = cf.FormasPagamento; for (int i = 0; i < 1; i++) { codFormaPagto = formaPagtos[i].Indice; } cf.AbreCupom(cnpj, nome, endereco); cf.VendeItem(codProd, descricaoProd, aliquota, (decimal)qtde, (decimal)vlrUnit, (decimal)desc, un, tipoDesc, descAcre, codDepto); cf.SubTotalizaCupom((decimal)desc, obs); cf.EfetuaPagamento(codFormaPagto, (decimal)valor, obs, vinculado); cf.FechaCupom(obs); #endregion //Faz a impressão da Redução Z using (IRelatorioFiscal rf = new RelatorioFiscal()) { //Para imprimir a Redução Z, altere o valor dessa variável para "true" bool imprimeReducao = false; //Data da movimentação DateTime dataMovimentacao = DateTime.Now; if (imprimeReducao) rf.ReducaoZ(dataMovimentacao); } } }
/// <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 }