Beispiel #1
0
 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!");
     }
 }
Beispiel #2
0
 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!");
     }
 }
Beispiel #3
0
        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);
                }
            }
        }
Beispiel #4
0
        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);
                }
            }
        }
Beispiel #5
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
        }