Esempio n. 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!");
     }
 }
Esempio n. 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!");
     }
 }
Esempio n. 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);
                }
            }
        }
Esempio n. 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);
                }
            }
        }
Esempio n. 5
0
        /// <summary>
        /// Finaliza o cupom na bobina
        /// </summary>
        /// <param name="venda">Venda efetuada</param>
        /// <param name="totalDinheiro">total de dinheiro informado</param>
        public void FechaCupom(IVendaCF venda, double totalDinheiro)
        {
            #region Variáveis locais
            string ECFRodapePersonalizado = "";
            double troco = Math.Round(totalDinheiro - venda.ValorTotalLiquido, 2);
            double totalVenda = Math.Round(venda.ValorTotalLiquido, 2);
            totalDinheiro = Math.Round(totalDinheiro, 2);
            IsErrorFechamentoCupom = false;
            string modeloecf = string.Empty;
            string marcaecf = string.Empty;
            string versaoecf = string.Empty;
            string numecf = string.Empty;
            double impostoAprox = 0;
            double percImpostoAprox = 0;
            string[] linhasRodape = new string[7];
            string tipoMovimento = string.Empty;
            string codigoMovimento = string.Empty;
            #endregion

            ImpressoTroco = false;
            impostoAprox = venda.ValorTotalImpostoAproximado;
            percImpostoAprox = venda.PercentualTotalImpostoAproximado;
            #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

            #region Fechamento do Cupom Fiscal

            using (ICupomFiscal c = new CupomFiscal(Unimake.Convert.ToEnum<ModeloECF>(Settings.ECF.ECFAtual.ModeloACBR), Settings.ECF.ECFAtual.Porta))
            {
                venda.NumeroSerieECF = c.NumeroSerie;
                venda.NumeroOrdemECF = Unimake.Convert.ToInt(c.NumeroECF);
                venda.COO = c.COO;
                venda.COOFinal = 0; // Todo: o valor do coo final será atualizado posteriormente pela emissão da redução z
                venda.CRO = c.CRO;
                venda.CCF = c.CCF;
                venda.CRZ = c.CRZ;
                venda.ValorGrandeTotalECF = c.GrandeTotal;
            #if IsPAF
                //Atualizar o valor do grande total do ECF no arquivo auxiliar
                arqAux.GrandeTotal = c.GrandeTotal.ToString();
                arqAux.NumeroSerie = c.NumeroSerie.ToString();
                arqAux.Gerar();
            #endif
                //Faz a impressão do rodapé do cupom fiscal de maneira personalizada
                if (Settings.PAF.UsaInformacoesRodapeMD5)
                {
                    Model.Cadastro.Pessoa.IEndereco endereco = Settings.EmpresaAtual.Enderecos.First(i => i.Principal);
                    c.Rodape.MD5 = OpenPOS.Cryptography.Files.MD5.GetMD5Hash(OpenPOS.Cryptography.Files.MD5.FromExe());

            #if IsPAF
                    if (endereco != null)
                        switch (Settings.EmpresaAtual.Enderecos.First(i => i.Principal).Endereco.Estado.UF.Sigla.ToString())
                        {
                            case "PB":
                                c.Rodape.ParaibaLegal = true;
                                break;
                            case "DF":
                                c.Rodape.NotaLegalDF.Imprimir = true;
                                //Todo Luciano: Quando desenvolvido a parte tributaria informar o valor dos tributos dos itens
                                c.Rodape.NotaLegalDF.ValorICMS = 0.0M;
                                c.Rodape.NotaLegalDF.ValorISS = 0.0M;
                                break;
                            case "MG":
                                c.Rodape.MinasLegal = true;
                                break;
                            case "RJ":
                                c.Rodape.CupomMania = true;
                                break;
                        }
            #endif
                    //De acordo com o movimento vinculado, sabemos qual é o tipo: Pré-venda, DAV, DAVO-OS
                    if (venda.MovimentosVinculados.FirstOrDefault() != null)
                    {
                        switch (venda.MovimentosVinculados.FirstOrDefault().Tipo)
                        {
                            case Tipo.DAV:
                                tipoMovimento = "DAV";
                                codigoMovimento = venda.MovimentosVinculados.FirstOrDefault().EGUID.ToString();
                                break;
                            case Tipo.DAVOS:
                                tipoMovimento = "DAV-OS";
                                codigoMovimento = venda.MovimentosVinculados.FirstOrDefault().EGUID.ToString();
                                break;
                            case Tipo.PreVenda:
                                tipoMovimento = "PV";
                                codigoMovimento = venda.MovimentosVinculados.FirstOrDefault().EGUID.ToString();
                                break;
                            case Tipo.NotaFiscalManual:
                                tipoMovimento = "NF";
                                codigoMovimento = venda.MovimentosVinculados.FirstOrDefault().EGUID;
                                break;
                            case Tipo.NotaFiscalEletronica:
                            case Tipo.CupomFiscal:
                            case Tipo.Sangria:
                            case Tipo.Suprimento:
                            case Tipo.Recebimento:
                            case Tipo.LancamentoGeral:
                            case Tipo.ContasPagar:
                            case Tipo.ContasReceber:
                            default:
                                tipoMovimento = string.Empty;
                                break;
                        }
                    }

                    MD5 md = new MD5("Bobina OpenPOS", Unimake.Convert.ToInt(Settings.Setting.PasswordMD5Loop), Unimake.Convert.ToBoolean(Settings.Setting.PasswordMD5UseKey) ? "123" : "");

                    // Prepara as informações antes de imprimir as linhas
                    linhasRodape = Settings.ECF.PreparaRodapeCupom(venda, md);

                    //Conteúdo que será impresso no rodapé do cupom fiscal do ECF
                    ECFRodapePersonalizado += String.IsNullOrEmpty(Settings.ECF.ConfiguracaoRodape.Linha1.Trim()) ? "" : linhasRodape[0].Trim() + "\n";
                    ECFRodapePersonalizado += String.IsNullOrEmpty(Settings.ECF.ConfiguracaoRodape.Linha2.Trim()) ? "" : linhasRodape[1].Trim() + "\n";
                    ECFRodapePersonalizado += String.IsNullOrEmpty(Settings.ECF.ConfiguracaoRodape.Linha3.Trim()) ? "" : linhasRodape[2].Trim() + "\n";
                    ECFRodapePersonalizado += String.IsNullOrEmpty(Settings.ECF.ConfiguracaoRodape.Linha4.Trim()) ? "" : linhasRodape[3].Trim() + "\n";
                    ECFRodapePersonalizado += String.IsNullOrEmpty(Settings.ECF.ConfiguracaoRodape.Linha5.Trim()) ? "" : linhasRodape[4].Trim() + "\n";
                    ECFRodapePersonalizado += String.IsNullOrEmpty(Settings.ECF.ConfiguracaoRodape.Linha6.Trim()) ? "" : linhasRodape[5].Trim() + "\n";
                    ECFRodapePersonalizado += String.IsNullOrEmpty(Settings.ECF.ConfiguracaoRodape.Linha7.Trim()) ? "" : linhasRodape[6].Trim();

                    //Conteúdo que será impresso no rodapé do cupom fiscal na Bobina
                    WriteLine("MD-5:{0}", md.Hash);

                    for (int i = 0; i < linhasRodape.Length; i++)
                    {
                        linhasRodape[i] = linhasRodape[i].Trim();

                        if (!String.IsNullOrEmpty(linhasRodape[i]))
                            WriteLine("{0}", linhasRodape[i]);
                    }

                    Settings.ECF.PopulateECFRodape();
                }
                else
                    WriteLine("Obrigado! Volte Sempre.");

                modeloecf = c.SubModeloECF.ToString();
                marcaecf = c.Modelo.ToString();
                versaoecf = c.NumeroVersao;
                numecf = c.NumeroECF;

                DrawLine();
                WriteLine("{0} {1}", marcaecf, modeloecf);
                WriteLine("VERSÃO:{0} ECF:{1} LJ:{2}", versaoecf, numecf, venda.Empresa.EGUID);
                string serieECF = String.Format("FAB:{0}", venda.NumeroSerieECF);
                WriteLine(serieECF + " BR".PadLeft(25));

                if (!Settings.PAF.UsaInformacoesRodapeMD5)
                    ECFRodapePersonalizado = string.Empty;

                c.FechaCupom(ECFRodapePersonalizado);

                venda.Status = Status.ImpressoCupom;
                venda.SaveTemp();

            }
            #endregion

            #region Impressão das parcelas
            if (venda.Parcelas.Count > 0)
            {
                if (Unimake.Convert.ToBoolean(Settings.Setting.ImprimirViasParcelamento))
                {
                    //-------------------------------------------------------------------------
                    // Imprimir a primeira via, esta via é do estabelecimento
                    //-------------------------------------------------------------------------
                    ImprimeParcela(venda, "--- VIA DO ESTABELECIMENTO ---");
                    //-------------------------------------------------------------------------
                    // Imprimir a segunda via, esta via é do cliente
                    //-------------------------------------------------------------------------
                    ImprimeParcela(venda, "--- VIA DO CLIENTE ---");
                }
                else if (Unimake.Convert.ToBoolean(Settings.Setting.ImprimirViaClienteParcelamento))
                {
                    //-------------------------------------------------------------------------
                    // Imprimir a segunda via, esta via é do cliente
                    //-------------------------------------------------------------------------
                    ImprimeParcela(venda, "--- VIA DO CLIENTE ---");
                }
                else if (Unimake.Convert.ToBoolean(Settings.Setting.ImprimirViaEstabelecimentoParcelamento))
                {
                    //-------------------------------------------------------------------------
                    // Imprimir a primeira via, esta via é do estabelecimento
                    //-------------------------------------------------------------------------
                    ImprimeParcela(venda, "--- VIA DO ESTABELECIMENTO ---");
                }

            }
            #endregion

            StatusImpressao = BobinaStatusImpressao.CupomFechado;
            buffer.Clear();
        }