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> /// 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(); }