예제 #1
0
        /// <summary>
        /// Cria o registro do tipo R01 de acordo com a impressora fiscal
        /// </summary>
        /// <param name="impressora">Qual a impressora fiscal pertencente ao registro</param>
        /// <returns>Retorna o registro do tipo R01</returns>
        public static IRegistro01 Create(IImpressora impressora)
        {
            IRegistro01 result = new Registro01();
            Connection connection = null;

            try
            {
                connection = DbContext.CreateConnection();
                DataReader dr = connection.ExecuteReader(@"SELECT GUID AS p_GUID
                                                             FROM arq_Registro01
                                                            WHERE GUIDImpressora = @impressora", new[]
                                                                                               {
                                                                                                   new Parameter
                                                                                                   {
                                                                                                       ParameterName = "@impressora",
                                                                                                       Value = impressora.GUID
                                                                                                   }
                                                                                               });

                if(dr.Read())
                {
                    result = Registro01.Create((GUID)dr.GetValue<string>("p_GUID"));
                }
            }
            finally
            {
                connection.Close();
            }

            return result;
        }
예제 #2
0
        /// <summary>
        /// Cria o registro tipo R01 pelo GUID
        /// </summary>
        /// <param name="guid">GUID do registro tipo R01</param>
        /// <returns>Retorna o registro do tipo R01</returns>
        public static IRegistro01 Create(GUID guid)
        {
            IRegistro01 result = new Registro01();

            result.Populate(guid);

            return result;
        }
예제 #3
0
        private void GeraRegistros02(DateTime dataIni, DateTime dataFim)
        {
            IRegistro01 reg01 = new Registro01
            {
                MarcaECF = "Teste",
                VersaoSB = "1.0",
                DataInstalacaoSB = DateTime.Today,
                HoraInstalacaoSB = DateTime.Now,
                NumeroSequenciaECF = 1,
                CodigoMD5PAFECF = Cryptography.Files.MD5.GetMD5Hash(Settings.PAF.FilesFullPath),
                DataCriacao = DateTime.Today
            };

            int i = 10000;
            IList<IFormaPagamento> formas = new Data.Cadastro.FormaPagamento().Find<IFormaPagamento>();

            for(DateTime d = dataIni; d < dataFim; d = d.AddDays(1))
            {
                IRegistro02 reg02 = new Registro02
                {
                    COO = new Random().Next(i++, 30000),
                    CRO = new Random().Next(i++, 30000),
                    CRZ = new Random().Next(i++, 30000),
                    DataHoraCadastro = d,
                    DataHoraEmissao = d,
                    DataMovimento = d,
                    DescricaoISSQN = "",
                    GrandeTotal = new Random().NextDouble(1000, 10000),
                    VendaBrutaDiaria = new Random().NextDouble(1000, 10000),
                    MeiosPagamentos = new List<IRegistro02MeiosPagto> {
                        new Registro02MeiosPagto{
                            FormaPagamento = formas[new Random().Next(0,formas.Count)].Descricao,
                            Indice =0,
                            ValorAcumulado = new Random().NextDouble(1000, 10000)
                        },
                        new Registro02MeiosPagto{
                            FormaPagamento = formas[new Random().Next(0,formas.Count)].Descricao,
                            Indice =0,
                            ValorAcumulado = new Random().NextDouble(1000, 10000)
                        },
                        new Registro02MeiosPagto{
                            FormaPagamento = formas[new Random().Next(0,formas.Count)].Descricao,
                            Indice =0,
                            ValorAcumulado = new Random().NextDouble(1000, 10000)
                        }
                    },
                    Registros03 = new List<IRegistro03> {
                        new Registro03{
                            TotalizadorParcial = "T18,00",
                            ValorAcumulado = new Random().NextDouble(1000,10000)
                        },
                        new Registro03{
                            TotalizadorParcial = "T07,00",
                            ValorAcumulado = new Random().NextDouble(1000,10000)
                        },
                        new Registro03{
                            TotalizadorParcial = "T12,00",
                            ValorAcumulado = new Random().NextDouble(1000,10000)
                        }
                    }
                };

                reg01.RegistrosR2.Add(reg02);
            }

            reg01.Save();
        }
예제 #4
0
        /// <summary>
        /// 
        /// </summary>
        private void CriaRegistro02()
        {
            #region Registro R01
            IRegistro01 registro01 = Registro01.Create(Settings.ECF.ECFAtual);

            if (registro01.IsNullOrEmpty())
            {
                //Tornar os campos Inscrição Estadual e Inscrição Municipal com 14 posições, pois temos mandar a string com essa quantidade
                string inscEst = Unimake.Convert.ToString(Unimake.Utilities.OnlyNumbers(Settings.SoftwareHouse.IE, "-,.\\/"));
                string inscMun = Unimake.Convert.ToString(Unimake.Utilities.OnlyNumbers(Settings.SoftwareHouse.IM, "-,.\\/"));

                inscEst = inscEst.PadRight(14, ' ').Substring(0, 14);
                inscMun = inscMun.PadRight(14, ' ').Substring(0, 14);

                registro01 = new Registro01();
                registro01.Impressora = Settings.ECF.ECFAtual;
                registro01.TipoECF = TipoECF.ECFIF.ToString();
                registro01.MarcaECF = ACBrECF.SubModeloECF;
                registro01.VersaoSB = ACBrECF.NumVersao;
                registro01.DataInstalacaoSB = ACBrECF.DataHoraSB.Date;
                registro01.HoraInstalacaoSB = ACBrECF.DataHoraSB;
                registro01.NumeroSequenciaECF = Unimake.Convert.ToInt(ACBrECF.NumECF);
                registro01.CNPJEmitente = Utilities.OnlyNumbers(ACBrECF.CNPJ, "-.,/").ToString();
                registro01.IEEmitente = Utilities.OnlyNumbers(ACBrECF.IE, ".-\\/").ToString();
                registro01.CNPJSoftwareHouse = System.Convert.ToString(Unimake.Utilities.OnlyNumbers(Settings.SoftwareHouse.CNPJ, "./-"));
                registro01.IESoftwareHouse = inscEst;
                registro01.InscrMunicipalSoftwareHouse = inscMun;
                registro01.DenominacaoSoftwareHouse = Settings.SoftwareHouse.Nome;
                registro01.NomePAFECF = Settings.SoftwareHouse.NomeApp;
                registro01.VersaoPAFECF = Settings.SoftwareHouse.Versao;
                registro01.CodigoMD5PAFECF = Cryptography.Files.MD5.GetMD5Hash(Settings.PAF.FilesFullPath);
                registro01.DataCriacao = DateTime.Today;
                registro01.VersaoEspecReqPAFECF = Settings.SoftwareHouse.VersaoER;
                registro01.Save();
            }
            #endregion

            #region Registro R02 - Relações da Redução Z
            IRegistro02 registro02 = new Registro02();
            registro02.Parent = registro01;
            registro02.CRZ = DadosReducaoZ.CRZ;
            registro02.COO = DadosReducaoZ.COO;
            registro02.CRO = DadosReducaoZ.CRO;
            registro02.CCF = DadosReducaoZ.CCF;
            registro02.DataMovimento = DadosReducaoZ.DataDoMovimento;
            registro02.DataHoraEmissao = DadosReducaoZ.DataHoraEmissao;
            registro02.VendaBrutaDiaria = Unimake.Convert.ToDouble(DadosReducaoZ.ValorVendaBruta);
            registro02.GrandeTotal = Unimake.Convert.ToDouble(DadosReducaoZ.ValorGrandeTotal);
            //TODO André: Por enquanto mandamos com o valor 0.00, pois não temos a parte tributária
            registro02.TotalPIS = 0;
            registro02.TotalCofins = 0;
            registro02.ParametroECFISSQN = true;

            #region Registro R02 - Meios de pagamentos

            foreach (FormaPagamento formaPagto in DadosReducaoZ.MeiosDePagamento)
            {
                if (formaPagto.Total > 0)
                {
                    registro02.MeiosPagamentos.Add(new Registro02MeiosPagto
                    {
                        Indice = Unimake.Convert.ToInt(formaPagto.Indice),
                        FormaPagamento = formaPagto.Descricao,
                        ValorAcumulado = Unimake.Convert.ToDouble(formaPagto.Total)
                    });
                }
            }
            #endregion

            #region Registro R03 - Detalhes da Redução Z
            foreach (ACBrFramework.ECF.Aliquota aliquotaICMS in DadosReducaoZ.ICMS.OrderBy(o => o.Indice))
            {
                //Gravar o total vendido pela alíquota de ICMS
                if (aliquotaICMS.Total > 0)
                {
                    registro02.Registros03.Add(new Registro03
                    {
                        TotalizadorParcial = string.Format("{0}T{1:0000}", aliquotaICMS.Indice.PadLeft(2, '0'),
                                                            aliquotaICMS.ValorAliquota.ToString("00.00", CultureInfo.InvariantCulture).Replace(".", "")),
                        ValorAcumulado = Unimake.Convert.ToDouble(aliquotaICMS.Total)
                    });
                }
            }

            foreach (ACBrFramework.ECF.Aliquota aliquotaISS in DadosReducaoZ.ISSQN.OrderBy(o => o.Indice))
            {
                //Gravar o total vendido pela alíquota de ISSQN
                if (aliquotaISS.Total > 0)
                {
                    registro02.Registros03.Add(new Registro03
                    {
                        TotalizadorParcial = string.Format("{0}S{1:0000}", aliquotaISS.Indice.PadLeft(2, '0'),
                                                            aliquotaISS.ValorAliquota.ToString("00.00", CultureInfo.InvariantCulture).Replace(".", "")),
                        ValorAcumulado = Unimake.Convert.ToDouble(aliquotaISS.Total)
                    });
                }
            }

            //Gravar o total vendido de Substituição Tributária de ICMS
            registro02.Registros03.Add(new Registro03
            {
                TotalizadorParcial = "F1",
                ValorAcumulado = Unimake.Convert.ToDouble(DadosReducaoZ.SubstituicaoTributariaICMS)
            });

            //Gravar o total vendido de Substituição Tributária de ISSQN
            registro02.Registros03.Add(new Registro03
            {
                TotalizadorParcial = "FS1",
                ValorAcumulado = Unimake.Convert.ToDouble(DadosReducaoZ.SubstituicaoTributariaISSQN)
            });

            //Gravar o total vendido de Isentos de ICMS
            registro02.Registros03.Add(new Registro03
            {
                TotalizadorParcial = "I1",
                ValorAcumulado = Unimake.Convert.ToDouble(DadosReducaoZ.IsentoICMS)
            });

            //Gravar o total vendido de Isentos de ISSQN
            registro02.Registros03.Add(new Registro03
            {
                TotalizadorParcial = "IS1",
                ValorAcumulado = Unimake.Convert.ToDouble(DadosReducaoZ.IsentoISSQN)
            });

            //Gravar o total vendido de Não Tributados pelo ICMS
            registro02.Registros03.Add(new Registro03
            {
                TotalizadorParcial = "N1",
                ValorAcumulado = Unimake.Convert.ToDouble(DadosReducaoZ.NaoTributadoICMS)
            });

            //Gravar o total vendido de Não Tributados pelo ISSQN
            registro02.Registros03.Add(new Registro03
            {
                TotalizadorParcial = "NS1",
                ValorAcumulado = Unimake.Convert.ToDouble(DadosReducaoZ.NaoTributadoISSQN)
            });

            //Gravar o total vendido de Operações Não Fiscais
            registro02.Registros03.Add(new Registro03
            {
                TotalizadorParcial = "OPNF",
                ValorAcumulado = Unimake.Convert.ToDouble(DadosReducaoZ.TotalOperacaoNaoFiscal)
            });

            //Gravar o total de Desconto de ICMS
            registro02.Registros03.Add(new Registro03
            {
                TotalizadorParcial = "DT",
                ValorAcumulado = Unimake.Convert.ToDouble(DadosReducaoZ.DescontoICMS)
            });

            //Gravar o total de Desconto de ISSQN
            registro02.Registros03.Add(new Registro03
            {
                TotalizadorParcial = "DS",
                ValorAcumulado = Unimake.Convert.ToDouble(DadosReducaoZ.DescontoISSQN)
            });

            //Gravar o total de Acréscimo de ICMS
            registro02.Registros03.Add(new Registro03
            {
                TotalizadorParcial = "AT",
                ValorAcumulado = Unimake.Convert.ToDouble(DadosReducaoZ.AcrescimoICMS)
            });

            //Gravar o total de Acréscimo de ISSQN
            registro02.Registros03.Add(new Registro03
            {
                TotalizadorParcial = "AS",
                ValorAcumulado = Unimake.Convert.ToDouble(DadosReducaoZ.AcrescimoISSQN)
            });

            //Gravar o total de cancelamento de ICMS
            registro02.Registros03.Add(new Registro03
            {
                TotalizadorParcial = "Can-T",
                ValorAcumulado = Unimake.Convert.ToDouble(DadosReducaoZ.CancelamentoICMS)
            });

            //Gravar o total de cancelamento de ISSQN
            registro02.Registros03.Add(new Registro03
            {
                TotalizadorParcial = "Can-S",
                ValorAcumulado = Unimake.Convert.ToDouble(DadosReducaoZ.CancelamentoISSQN)
            });
            #endregion

            registro02.Save();
            #endregion

            #region Mapa resumo
            //Exporta os dados do mapa resumo de acordo com as informações da Redução Z gerada
            Export export = new Export();
            export.Where = new Where
            {
                { "arq_Registro02.GUID = @guid",
                    new Parameter
                    {
                        ParameterName = "@guid",
                        Value = registro02.GUID
                    }
                }
            };
            export.Execute("MapaResumo");
            #endregion
        }
예제 #5
0
        public override void Gravar()
        {
            #region Impressora
            //criar uma impressora
            ImpressoraTest imprTest = new ImpressoraTest();
            imprTest.Gravar();
            IImpressora impressora = new Impressora(imprTest.GUID);
            #endregion

            #region Regsitro 01
            Registro01 r01 = new Registro01();
            r01.Impressora = impressora;
            r01.TipoECF = "TipoECF";
            r01.MarcaECF = "MarcaECF";
            r01.VersaoSB = "VesaoSB";
            r01.DataInstalacaoSB = DateTime.Today;
            r01.HoraInstalacaoSB = DateTime.Now;
            r01.NumeroSequenciaECF = 1;
            r01.CNPJEmitente = "04141174000125";
            r01.IEEmitente = "1234567890";
            r01.CNPJSoftwareHouse = "04141174000125";
            r01.IESoftwareHouse = "InscEstSoftHouse";
            r01.InscrMunicipalSoftwareHouse = "InscMunSoftHouse";
            r01.DenominacaoSoftwareHouse = "DenominacaoSoftHouse";
            r01.NomePAFECF = "NomePAFECF";
            r01.VersaoPAFECF = "VersaoPAFECF";
            r01.CodigoMD5PAFECF = "CodMD5PAFECF";
            r01.DataCriacao = DateTime.Today;
            r01.VersaoEspecReqPAFECF = "VersaoEspReqPAFECF";
            #endregion

            #region Registro 02
            Registro02 r02 = new Registro02();

            r02.CRZ = 1;
            r02.COO = 1;
            r02.CRO = 1;
            r02.DataMovimento = DateTime.Today;
            r02.DataHoraEmissao = DateTime.Now;
            r02.VendaBrutaDiaria = new Random().NextDouble(500);
            r02.ParametroECFISSQN = false;

            r02.Registros03.Add(new Registro03()
            {
                ValorAcumulado = new Random().NextDouble(500),
                TotalizadorParcial = "T1800"
            });

            r02.Registros03.Add(new Registro03()
            {
                ValorAcumulado = new Random().NextDouble(500),
                TotalizadorParcial = "F1800"
            });

            r02.MeiosPagamentos.Add(new Registro02MeiosPagto
            {
                FormaPagamento = "Dinheiro",
                Indice = 1,
                ValorAcumulado = new Random().NextDouble(500),
            });

            r02.MeiosPagamentos.Add(new Registro02MeiosPagto
            {
                FormaPagamento = "Cartao",
                Indice = 2,
                ValorAcumulado = new Random().NextDouble(500),
            });

            r01.RegistrosR2.Add(r02);
            #endregion

            #region Registro 04
            #region Movimento
            PreVendaTest pvTest = new PreVendaTest();
            pvTest.Gravar();
            IMovimento movimento = new PreVenda(pvTest.GUID);
            #endregion

            Registro04 r04 = new Registro04();
            r04.Movimento = movimento;
            r04.NumeroFabricacao = "p_NumeroFabricacao";
            r04.MFAdicional = "p_MFAdicional";
            r04.ModeloECF = "p_ModeloECF";
            r04.NumeroUsuario = 1;
            r04.CCF = 1;
            r04.COO = 2;
            r04.DataEmissao = DateTime.Today;
            r04.ValorSubtotal = new Random().NextDouble(50);
            r04.ValorDescontoSubtotal = new Random().NextDouble(50);
            r04.TipoDescontoSubtotal = IndicadorTipo.Monetario;
            r04.ValorAcrescimoSubtotal = new Random().NextDouble(50);
            r04.TipoAcrescimoSubtotal = IndicadorTipo.Percentual;
            r04.ValorTotalLiquido = new Random().NextDouble(50);
            r04.Cancelado = IndicadorCancelamento.Nao;
            r04.ValorCancelamentoAcrescimoSubtotal = new Random().NextDouble(50);
            r04.OrdemDescontoAcrescimo = IndicadorOrdem.Desconto;
            r04.NomeAdquirente = "Marcelo";
            r04.CPFCNPJAdquirente = "25806756807";

            //adicionar registros05
            r04.Registros05.Add(new Registro05
            {
                ItemMovimentado = movimento.Itens[0],
                NumeroFabricacao = "NumeroFabricacao",
                MFAdicional = "MFAdicional",
                ModeloECF = "ModeloECF",
                NumeroUsuario = 1,
                COO = 1,
                CCF = 1,
                NumeroItem = 1,
                CodigoTotalalizadorParcial = "CodigoTotalalizadorParcial",
                Cancelado = IndicadorCancelamento.Nao,
                QuantidadeCancelada = new Random().NextDouble(50),
                ValorCancelado = new Random().NextDouble(50),
                ValorCancelamentoAcrescimo = new Random().NextDouble(50),
                IndicadorTruncamento = IndicadorTruncamento.Arredondamento,
                IndicadorProducao = IndicadorProducao.Proprio,
                QuantidadeCasaDecimal = 2,
                QuantidadeCasaDecimalVlrUnit = 2,
                SituacaoTributaria = SituacaoTributaria.Isento
            });

            r01.RegistrosR4.Add(r04);
            #endregion

            #region Registro 06
            Registro06 r06 = new Registro06();

            r06.NumeroFabricacao = "p_NumeroFabricacao";
            r06.MFAdicional = "p_MFAdicional";
            r06.ModeloECF = "p_ModeloECF";
            r06.NumeroUsuario = 1;
            r06.COO = 2;
            r06.GNF = 1;
            r06.GRC = 1;
            r06.Denominacao = SimboloDenominacao.ComprovanteCreditoDebito;
            r06.DataFinalEmissao = DateTime.Today;
            r06.HoraFinalEmissao = DateTime.Today;

            //adicionar registros07
            r06.Registros07.Add(new Registro07()
            {
                COO = 1,
                CCF = 1,
                GNF = 1,
                //TODO: Quando implementar a baixa, colocar neste teste
                //BaixaForma
                IndicadorEstorno = IndicadorEstorno.Nao,
                ValorEstornado = new Random().NextDouble(50)
            });

            r01.RegistrosR6.Add(r06);
            #endregion

            GUID = r01.Save();
        }
예제 #6
0
 public override void Editar()
 {
     Registro01 t = new Registro01(GUID);
     t.Save();
 }
예제 #7
0
 public override void Popular()
 {
     Registro01 t = new Registro01(GUID);
     DumpElement(t);
     DumpElement(t.RegistrosR2);
     DumpElement(t.RegistrosR4);
     DumpElement(t.RegistrosR6);
 }