private void ProcessarDetalhesNotasFiscaisMercadorias(RegistroC100 regC100, string codEmp)
        {
            this.UpdateStatusAsynchronousExecution("Processando detalhes de documento fiscal");

            // Processa possíveis informações de importação
            this.UpdateStatusAsynchronousExecution("Processando informações de importação");
            IEnumerable <RegistroC120> registrosC120 =
                NotasFiscaisMercadoriasService.GetRegistrosC120(regC100.PK_NOTAFIS, codEmp);

            foreach (RegistroC120 regC120 in registrosC120)
            {
                this.UpdateStatusAsynchronousExecution("Gerando Registro C120");
                DadosArquivoPisCofinsService.PersistirRegistro(regC120);
            }

            // Processsa informações dos itens da nota fiscal
            this.UpdateStatusAsynchronousExecution("Processando itens de documento fiscal");
            IEnumerable <RegistroC170> registrosC170 =
                NotasFiscaisMercadoriasService.GetRegistrosC170(regC100.PK_NOTAFIS, codEmp);

            foreach (RegistroC170 regC170 in registrosC170)
            {
                this.UpdateStatusAsynchronousExecution("Gerando Registro C170");
                DadosArquivoPisCofinsService.PersistirRegistro(regC170);

                this.ProcessarUnidade(regC170.UNID, codEmp);
                this.ProcessarProduto(regC170.COD_ITEM, codEmp);
            }
        }
Example #2
0
        private void ProcessarDetalhesNotasFiscaisMercadorias(RegistroC100 regC100)
        {
            try
            {
                this.UpdateStatusAsynchronousExecution("Processando detalhes de documento fiscal");

                // Processsa informações dos itens da nota fiscal
                this.UpdateStatusAsynchronousExecution("Processando itens de documento fiscal");
                IEnumerable <RegistroC170> registrosC170 =
                    NotasFiscaisMercadoriasService.GetRegistrosC170(regC100.PK_NOTAFIS);
                foreach (RegistroC170 regC170 in registrosC170)
                {
                    this.UpdateStatusAsynchronousExecution("Gerando Registro C170");
                    DadosArquivoFiscalService.PersistirRegistro(regC170);

                    this.ProcessarUnidade(regC170.UNID);
                    this.ProcessarProduto(regC170.COD_ITEM);
                }

                try
                {
                    // Processa informações de impostos agrupadas por Situação Tributária, CFOP e
                    // Alíquota de ICMS
                    this.UpdateStatusAsynchronousExecution("Processando impostos de documento fiscal");
                    IEnumerable <RegistroC190> registrosC190 =
                        NotasFiscaisMercadoriasService.GetRegistrosC190(regC100.PK_NOTAFIS);
                    foreach (RegistroC190 regC190 in registrosC190)
                    {
                        this.UpdateStatusAsynchronousExecution("Gerando Registro C190");
                        DadosArquivoFiscalService.PersistirRegistro(regC190);
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
        private void ProcessarDetalhesNotasFiscaisMercadorias(RegistroC100 regC100)
        {
            try
            {
                this.UpdateStatusAsynchronousExecution("Processando detalhes de documento fiscal");

                // Processsa informações dos itens da nota fiscal
                this.UpdateStatusAsynchronousExecution("Processando itens de documento fiscal");
                IEnumerable <RegistroC170> registrosC170 =
                    notasFiscaisMercadoriasService.GetRegistrosC170(regC100.PK_NOTAFIS);
                foreach (RegistroC170 regC170 in registrosC170)
                {
                    this.UpdateStatusAsynchronousExecution("Gerando Registro C170");
                    dadosArquivoContmaticService.PersistirRegistro(regC170);

                    this.ProcessarUnidade(regC170.UNID);
                    this.ProcessarProduto(regC170.COD_ITEM);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Example #4
0
        public void GerarBlocoC()
        {
            consultaSql = "from EcfNotaFiscalCabecalhoDTO where DataEmissao BETWEEN " + Biblioteca.QuotedStr(DataInicial) + " and " + Biblioteca.QuotedStr(DataFinal);
            IList <EcfNotaFiscalCabecalhoDTO> ListaNF2Cabecalho = new NHibernateDAL <EcfNotaFiscalCabecalhoDTO>(Session).SelectListaSql <EcfNotaFiscalCabecalhoDTO>(consultaSql);

            consultaSql = "from EcfNotaFiscalCabecalhoDTO where Cancelada='S' and DataEmissao BETWEEN " + Biblioteca.QuotedStr(DataInicial) + " and " + Biblioteca.QuotedStr(DataFinal);
            IList <EcfNotaFiscalCabecalhoDTO> ListaNF2CabecalhoCanceladas = new NHibernateDAL <EcfNotaFiscalCabecalhoDTO>(Session).SelectListaSql <EcfNotaFiscalCabecalhoDTO>(consultaSql);

            consultaSql = "from NfeCabecalhoDTO where DataHoraEmissao BETWEEN " + Biblioteca.QuotedStr(DataInicial) + " and " + Biblioteca.QuotedStr(DataFinal);
            IList <NfeCabecalhoDTO> ListaNFeCabecalho = new NHibernateDAL <NfeCabecalhoDTO>(Session).SelectListaSql <NfeCabecalhoDTO>(consultaSql);

            var BlocoC = sped.getBlocoC();

            // REGISTRO C001: ABERTURA DO BLOCO C
            sped.getBlocoC().getRegistroC001().setIndMov(0);

            // REGISTRO C010: IDENTIFICAÇÃO DO ESTABELECIMENTO
            sped.getBlocoC().getRegistroC010().setCnpj(Empresa.Cnpj);
            sped.getBlocoC().getRegistroC010().setIndEscri("2");       // 1 – Apuração com base nos registros de consolidaçãodas operações por NF-e (C180 e C190) e por ECF (C490);
                                                                       // 2 – Apuração com base no registro individualizado de NF-e (C100 e C170) e de ECF (C400)

            if (ListaNFeCabecalho != null)
            {
                RegistroC100 registroC100;
                foreach (NfeCabecalhoDTO NFeCabecalho in ListaNFeCabecalho)
                {
                    registroC100 = new RegistroC100();

                    registroC100.setIndOper(NFeCabecalho.TipoOperacao.Value.ToString());
                    registroC100.setIndEmit("0"); // 0 - Emissao Propria
                    if (NFeCabecalho.Cliente != null)
                    {
                        registroC100.setCodPart("C" + NFeCabecalho.Cliente.Id.ToString());
                    }
                    else if (NFeCabecalho.Fornecedor != null)
                    {
                        registroC100.setCodPart("F" + NFeCabecalho.Fornecedor.Id.ToString());
                    }
                    registroC100.setCodMod(NFeCabecalho.CodigoModelo);

                    /*
                     * 4.1.2- Tabela Situação do Documento
                     * Código Descrição
                     * 00 Documento regular
                     * 01 Documento regular extemporâneo
                     * 02 Documento cancelado
                     * 03 Documento cancelado extemporâneo
                     * 04 NFe denegada
                     * 05 Nfe – Numeração inutilizada
                     * 06 Documento Fiscal Complementar
                     * 07 Documento Fiscal Complementar extemporâneo.
                     * 08 Documento Fiscal emitido com base em Regime Especial ou Norma Específica
                     */
                    if (NFeCabecalho.StatusNota.Equals("5"))
                    {
                        registroC100.setCodSit("00");
                    }
                    else if (NFeCabecalho.StatusNota.Equals("6"))
                    {
                        registroC100.setCodSit("02");
                    }
                    registroC100.setSer(NFeCabecalho.Serie);
                    registroC100.setNumDoc(NFeCabecalho.Numero);
                    registroC100.setChvNfe(NFeCabecalho.ChaveAcesso);
                    registroC100.setDtDoc(NFeCabecalho.DataHoraEmissao.Value);
                    registroC100.setDtES(NFeCabecalho.DataHoraEntradaSaida.Value);
                    registroC100.setVlDoc(NFeCabecalho.ValorTotal.Value);
                    registroC100.setIndPgto(NFeCabecalho.IndicadorFormaPagamento.Value.ToString());
                    registroC100.setVlDesc(NFeCabecalho.ValorDesconto.Value);
                    registroC100.setVlAbatNt(0);
                    registroC100.setVlMerc(NFeCabecalho.ValorTotalProdutos.Value);

                    NfeTransporteDTO Transporte = new NHibernateDAL <NfeTransporteDTO>(Session).SelectId <NfeTransporteDTO>(1);

                    if (Transporte != null)
                    {
                        registroC100.setIndFrt(Transporte.ModalidadeFrete.Value.ToString());
                    }

                    registroC100.setVlFrt(NFeCabecalho.ValorFrete.Value);
                    registroC100.setVlSeg(NFeCabecalho.ValorSeguro.Value);
                    registroC100.setVlOutDa(NFeCabecalho.ValorDespesasAcessorias.Value);
                    registroC100.setVlBcIcms(NFeCabecalho.BaseCalculoIcms.Value);
                    registroC100.setVlIcms(NFeCabecalho.ValorIcms.Value);
                    registroC100.setVlBcIcmsSt(NFeCabecalho.BaseCalculoIcmsSt.Value);
                    registroC100.setVlIcmsSt(NFeCabecalho.ValorIcmsSt.Value);
                    registroC100.setVlIpi(NFeCabecalho.ValorIpi.Value);
                    registroC100.setVlPis(NFeCabecalho.ValorPis.Value);
                    registroC100.setVlPisSt(0);
                    registroC100.setVlCofins(NFeCabecalho.ValorCofins.Value);
                    registroC100.setVlCofinsSt(0);

                    // REGISTRO C110: COMPLEMENTO  DO  DOCUMENTO  -  INFORMAÇÃO  COMPLEMENTAR  DA NOTA FISCAL (CÓDIGOS 01, 1B, 04 e 55)
                    //{ Não Implementado }

                    // REGISTRO C111: PROCESSO REFERENCIADO
                    //{ Não Implementado }

                    // REGISTRO  C120:  COMPLEMENTO  DO  DOCUMENTO  -  OPERAÇÕES DE  IMPORTAÇÃO (CÓDIGO 01)
                    //{ Não Implementado }


                    // REGISTRO  C170:  COMPLEMENTO  DO  DOCUMENTO  -  ITENS  DO  DOCUMENTO (CÓDIGOS 01, 1B, 04 e 55)
                    consultaSql = "from ViewSpedNfeDetalheDTO where IdNfeCabecalho = " + NFeCabecalho.Id;
                    IList <ViewSpedNfeDetalheDTO> ListaNFeDetalhe = new NHibernateDAL <ViewSpedNfeDetalheDTO>(Session).SelectListaSql <ViewSpedNfeDetalheDTO>(consultaSql);
                    RegistroC170 registroC170;
                    if (ListaNFeDetalhe != null)
                    {
                        foreach (ViewSpedNfeDetalheDTO NFeDetalhe in ListaNFeDetalhe)
                        {
                            registroC170 = new RegistroC170();

                            registroC170.setNumItem(NFeDetalhe.NumeroItem.ToString());
                            registroC170.setCodItem(NFeDetalhe.Gtin);
                            registroC170.setDescrCompl(NFeDetalhe.NomeProduto);
                            registroC170.setQtd(NFeDetalhe.QuantidadeComercial);
                            registroC170.setUnid(Convert.ToString(NFeDetalhe.IdUnidadeProduto));
                            registroC170.setVlItem(NFeDetalhe.ValorTotal);
                            registroC170.setVlDesc(NFeDetalhe.ValorDesconto);
                            registroC170.setIndMov(0);
                            registroC170.setCstIcms(NFeDetalhe.CstIcms);
                            registroC170.setCfop(Convert.ToString(NFeDetalhe.Cfop));
                            registroC170.setCodNat(Convert.ToString(NFeDetalhe.IdTributOperacaoFiscal));
                            registroC170.setVlBcIcms(NFeDetalhe.BaseCalculoIcms);
                            registroC170.setAliqIcms(NFeDetalhe.AliquotaIcms);
                            registroC170.setVlIcms(NFeDetalhe.ValorIcms);
                            registroC170.setVlBcIcmsSt(NFeDetalhe.ValorBaseCalculoIcmsSt);
                            registroC170.setAliqSt(NFeDetalhe.AliquotaIcmsSt);
                            registroC170.setVlIcmsSt(NFeDetalhe.ValorIcmsSt);
                            registroC170.setIndApur(0);
                            registroC170.setCstIpi(NFeDetalhe.CstIpi);
                            registroC170.setCodEnq(NFeDetalhe.EnquadramentoIpi);
                            registroC170.setVlBcIpi(NFeDetalhe.ValorBaseCalculoIpi);
                            registroC170.setAliqIpi(NFeDetalhe.AliquotaIpi);
                            registroC170.setVlIpi(NFeDetalhe.ValorIpi);
                            registroC170.setCstPis(NFeDetalhe.CstPis);
                            registroC170.setVlBcPis(NFeDetalhe.ValorBaseCalculoPis);
                            registroC170.setAliqPisPerc(NFeDetalhe.AliquotaPisPercentual);
                            registroC170.setQuantBcPis(NFeDetalhe.QuantidadeVendidaPis);
                            registroC170.setAliqPisR(NFeDetalhe.AliquotaPisReais);
                            registroC170.setVlPis(NFeDetalhe.ValorPis);
                            registroC170.setCstCofins(NFeDetalhe.CstCofins);
                            registroC170.setVlBcCofins(NFeDetalhe.BaseCalculoCofins);
                            registroC170.setAliqCofinsPerc(NFeDetalhe.AliquotaCofinsPercentual);
                            registroC170.setQuantBcCofins(NFeDetalhe.QuantidadeVendidaCofins);
                            registroC170.setAliqCofinsR(NFeDetalhe.AliquotaCofinsReais);
                            registroC170.setVlCofins(NFeDetalhe.ValorCofins);
                            registroC170.setCodCta("");

                            registroC100.getRegistroC170List().Add(registroC170);
                        }
                    }

                    // REGISTRO C175: REGISTRO ANALÍTICO DO DOCUMENTO (CÓDIGO 65)
                    // { Será analisado após a implementação da NFC-e }

                    // REGISTRO C180: CONSOLIDAÇÃO  DE  NOTAS  FISCAIS  ELETRÔNICAS  EMITIDAS PELA PESSOA JURÍDICA (CÓDIGOS 55 e 65) – OPERAÇÕES DE VENDAS
                    // REGISTRO C181: DETALHAMENTO DA CONSOLIDAÇÃO – OPERAÇÕES DE VENDAS – PIS/PASEP
                    // REGISTRO C185: DETALHAMENTO DA CONSOLIDAÇÃO – OPERAÇÕES DE VENDAS – COFINS
                    // REGISTRO C188: PROCESSO REFERENCIADO
                    // { Não Implementados }

                    // REGISTRO C190: CONSOLIDAÇÃO DE NOTAS FISCAIS ELETRÔNICAS (CÓDIGO 55) – OPERAÇÕES  DE  AQUISIÇÃO  COM  DIREITO  A  CRÉDITO,  E  OPERAÇÕES  DE DEVOLUÇÃO DE COMPRAS E VENDAS.
                    // REGISTRO C191:  DETALHAMENTO  DA  CONSOLIDAÇÃO  –  OPERAÇÕES  DE AQUISIÇÃO  COM  DIREITO  A  CRÉDITO,  E  OPERAÇÕES  DE  DEVOLUÇÃO  DE COMPRAS E VENDAS – PIS/PASEP
                    // REGISTRO C195:  DETALHAMENTO  DA  CONSOLIDAÇÃO  -  OPERAÇÕES  DE AQUISIÇÃO  COM  DIREITO  A  CRÉDITO,  E  OPERAÇÕES  DE  DEVOLUÇÃO  DE COMPRAS E VENDAS – COFINS
                    // REGISTRO C198: PROCESSO REFERENCIADO
                    // REGISTRO C199: COMPLEMENTO DO DOCUMENTO - OPERAÇÕESDE IMPORTAÇÃO (CÓDIGO 55)
                    // { Não Implementados }
                }
            }


            // REGISTRO  C380:  NOTA  FISCAL  DE  VENDA  A  CONSUMIDOR  (CÓDIGO  02)  - CONSOLIDAÇÃO DE DOCUMENTOS EMITIDOS.
            consultaSql = "from ViewSpedC300DTO where DataEmissao BETWEEN " + Biblioteca.QuotedStr(DataInicial) + " and " + Biblioteca.QuotedStr(DataFinal);
            IList <ViewSpedC300DTO> ListaC300 = new NHibernateDAL <ViewSpedC300DTO>(Session).SelectListaSql <ViewSpedC300DTO>(consultaSql);

            if (ListaC300 != null)
            {
                RegistroC380 registroC380;
                foreach (ViewSpedC300DTO C380 in ListaC300)
                {
                    registroC380 = new RegistroC380();
                    registroC380.setCodMod("2");
                    registroC380.setNumDocIni(C380.Id.ToString()); // Como pegar o número inicial?
                    registroC380.setNumDocFin(C380.Id.ToString()); // Como pegar o número Final?
                    registroC380.setDtDocIni(C380.DataEmissao);    // Como pegar a data inicial?
                    registroC380.setDtDocFin(C380.DataEmissao);    // Como pegar a data Final?
                    registroC380.setVlDoc(C380.SomaTotalNf);
                    registroC380.setvlDocCanc(C380.SomaTotalNf);   // Como pegar os valores cancelados?

                    // REGISTRO C381: DETALHAMENTO DA CONSOLIDAÇÃO – PIS/P ASEP
                    // REGISTRO C385: DETALHAMENTO DA CONSOLIDAÇÃO – COFINS
                    // { Exercício: implementar }

                    // REGISTRO C395: NOTAS FISCAIS DE VENDA A CONSUMIDOR(CÓDIGOS 02, 2D, 2E e 59) – AQUISIÇÕES/ENTRADAS COM CRÉDITO.
                    // REGISTRO C396:  ITENS  DO  DOCUMENTO  (CÓDIGOS  02,  2D,  2E  e  59)  – AQUISIÇÕES/ENTRADAS COM CRÉDITO
                    // { Não Implementados }
                }
            }


            IList <EcfImpressoraDTO> ListaImpressora = new NHibernateDAL <EcfImpressoraDTO>(Session).Select(new EcfImpressoraDTO());

            if (ListaImpressora != null)
            {
                RegistroC400 registroC400;
                foreach (EcfImpressoraDTO Impressora in ListaImpressora)
                {
                    // REGISTRO C400: EQUIPAMENTO ECF (CÓDIGO 02, 2D e 60).
                    registroC400 = new RegistroC400();

                    registroC400.setCodMod(Impressora.ModeloDocumentoFiscal);
                    registroC400.setEcfMod(Impressora.Modelo);
                    registroC400.setEcfFab(Impressora.Serie);
                    registroC400.setEcfCx(Impressora.Numero.ToString());

                    // verifica se existe movimento no periodo para aquele ECF
                    consultaSql = "from EcfR02DTO where IdImpressora=" + Impressora.Id + " and DataEmissao BETWEEN " + Biblioteca.QuotedStr(DataInicial) + " and " + Biblioteca.QuotedStr(DataFinal);
                    IList <EcfR02DTO> ListaR02 = new NHibernateDAL <EcfR02DTO>(Session).SelectListaSql <EcfR02DTO>(consultaSql);
                    if (ListaR02 != null)
                    {
                        // REGISTRO C405: REDUÇÃO Z (CÓDIGO 02, 2D e 60).
                        RegistroC405 registroC405;
                        foreach (EcfR02DTO R02 in ListaR02)
                        {
                            registroC405 = new RegistroC405();

                            registroC405.setDtDoc(R02.DataMovimento.Value);
                            registroC405.setCro(R02.Cro.Value);
                            registroC405.setCrz(R02.Crz.Value);
                            registroC405.setNumCooFin(R02.Coo.Value);
                            registroC405.setGtFin(R02.GrandeTotal.Value);
                            registroC405.setVlBrt(R02.VendaBruta.Value);

                            // REGISTRO C481: RESUMO DIÁRIO DE DOCUMENTOS EMITIDOSPOR ECF – PIS/PASEP (CÓDIGOS 02 e 2D).
                            // REGISTRO C485: RESUMO DIÁRIO DE DOCUMENTOS EMITIDOSPOR ECF – COFINS (CÓDIGOS 02 e 2D)
                            // {Exercício: Implementar}


                            registroC400.getRegistroC405List().Add(registroC405);
                        }

                        // REGISTRO C489: PROCESSO REFERENCIADO
                        // { Não Implementado }

                        // REGISTRO C490: CONSOLIDAÇÃO DE DOCUMENTOS EMITIDOS  POR ECF (CÓDIGOS 02, 2D, 59 e 60)
                        // REGISTRO C491:  DETALHAMENTO  DA CONSOLIDAÇÃO DE DOCUMENTOS EMITIDOS POR ECF (CÓDIGOS 02, 2D e 59) – PIS/PASEP
                        // REGISTRO C495:  DETALHAMENTO  DA CONSOLIDAÇÃO DE DOCUMENTOS EMITIDOS POR ECF (CÓDIGOS 02, 2D e 59) – COFINS
                        // REGISTRO C499: PROCESSO REFERENCIADO
                        // { Não Implementados }
                    }

                    // REGISTRO C495: RESUMO MENSAL DE ITENS DO ECF POR ESTABELECIMENTO (CÓDIGO 02 e 2D).
                    // Implementado a critério do Participante do T2Ti ERP
                }
            }

            // REGISTRO C500:  NOTA  FISCAL/CONTA  DE  ENERGIA  ELÉTRICA  (CÓDIGO  06),  NOTA FISCAL/CONTA  DE  FORNECIMENTO  D'ÁGUA  CANALIZADA  (CÓDIGO  29)  E  NOTA  FISCAL CONSUMO  FORNECIMENTO  DE  GÁS  (CÓDIGO  28)  E  NF-e  (CÓDIGO  55)–  DOCUMENTOS  DE ENTRADA/AQUISIÇÃO COM CRÉDITO
            // REGISTRO C501: COMPLEMENTO DA OPERAÇÃO (CÓDIGOS 06,28 e 29) – PIS/PASEP
            // REGISTRO C505: COMPLEMENTO DA OPERAÇÃO (CÓDIGOS 06,28 e 29) – COFINS
            // REGISTRO C509: PROCESSO REFERENCIADO
            // REGISTRO C600:  CONSOLIDAÇÃO  DIÁRIA  DE  NOTAS  FISCAIS/CONTAS  EMITIDAS  DE ENERGIA  ELÉTRICA  (CÓDIGO  06),  NOTA  FISCAL/CONTA  DE  FORNECIMENTO  D'ÁGUA CANALIZADA (CÓDIGO 29) E NOTA FISCAL/CONTA DE FORNECIMENTO DE GÁS (CÓDIGO 28) (EMPRESAS OBRIGADAS OU NÃO OBRIGADAS AO CONVENIO ICMS 115/03) – DOCUMENTOS DE SAÍDA
            // REGISTRO C601: COMPLEMENTO DA CONSOLIDAÇÃO DIÁRIA (CÓDIGOS 06, 28 e 29) – DOCUMENTOS DE SAÍDAS - PIS/PASEP
            // REGISTRO C605: COMPLEMENTO DA CONSOLIDAÇÃO DIÁRIA (CÓDIGOS 06, 28 e 29) – DOCUMENTOS DE SAÍDAS – COFINS
            // REGISTRO C609: PROCESSO REFERENCIADO
            // { Não Implementados }

            // REGISTRO C800: CUPOM FISCAL ELETRÔNICO (CÓDIGO 59)
            // REGISTRO C810:  DETALHAMENTO  DO  CUPOM  FISCAL  ELETRÔNICO  (CÓDIGO  59)  – PIS/PASEP E COFINS
            // REGISTRO C820:  DETALHAMENTO  DO  CUPOM  FISCAL  ELETRÔNICO  (CÓDIGO  59)  – PIS/PASEP E COFINS APURADO POR UNIDADE DE MEDIDA DEPRODUTO
            // REGISTRO C830: PROCESSO RERENCIADO
            // REGISTRO C860: IDENTIFICAÇÃO DO EQUIPAMENTO SAT-CF-E
            // REGISTRO C870:  RESUMO  DIÁRIO  DE  DOCUMENTOS  EMITIDOS POR  EQUIPAMENTO SAT-CF-E (CÓDIGO 59) – PIS/PASEP E COFINS
            // REGISTRO C880:  RESUMO  DIÁRIO  DE  DOCUMENTOS  EMITIDOS POR  EQUIPAMENTO SAT-CF-E (CÓDIGO 59) – PIS/PASEP E COFINS APURADO POR UNIDADE DE MEDIDA DE PRODUTO
            // REGISTRO C890: PROCESSO REFERENCIADO
            // (* Serão analisados após implementação do SAT *)
        }
Example #5
0
        private void CriaBlocoC()
        {
            int INotas;
            int IItens;
            int NNotas;
            int BNotas;

            // Alimenta o componente com informações para gerar todos os registros do
            // Bloco C.
            btnB_C.Enabled = false;
            btnB_D.Enabled = true;
            NNotas         = Convert.ToInt32(edNotas.Text);
            BNotas         = Convert.ToInt32(edBufNotas.Text);

            ProgressBar1.Visible = cbConcomitante.Checked;
            ProgressBar1.Maximum = NNotas;
            ProgressBar1.Value   = 0;

            var blocoC       = ACBrSPEDFiscal1.Bloco_C;
            var registroC001 = blocoC.RegistroC001;

            registroC001.IND_MOV = IndicadorMovimento.ComDados;

            for (INotas = 1; INotas <= NNotas; INotas++)
            {
                var registroC100 = new RegistroC100();
                registroC100.IND_OPER      = TipoOperacao.EntradaAquisicao;
                registroC100.IND_EMIT      = Emitente.EmissaoPropria;
                registroC100.COD_PART      = "001";
                registroC100.COD_MOD       = "";
                registroC100.COD_SIT       = SituacaoDocto.Regular;
                registroC100.SER           = "";
                registroC100.NUM_DOC       = string.Format("11{0:000000}", INotas);
                registroC100.CHV_NFE       = "";
                registroC100.DT_DOC        = blocoC.DT_INI.AddDays(INotas);
                registroC100.DT_E_S        = blocoC.DT_INI.AddDays(INotas);
                registroC100.VL_DOC        = 0;
                registroC100.IND_PGTO      = TipoPagamento.SemPagamento;
                registroC100.VL_DESC       = 0;
                registroC100.VL_ABAT_NT    = 0;
                registroC100.VL_MERC       = 0;
                registroC100.IND_FRT       = TipoFrete.SemCobrancaFrete;
                registroC100.VL_SEG        = 0;
                registroC100.VL_OUT_DA     = 0;
                registroC100.VL_BC_ICMS    = 0;
                registroC100.VL_ICMS       = 0;
                registroC100.VL_BC_ICMS_ST = 0;
                registroC100.VL_ICMS_ST    = 0;
                registroC100.VL_IPI        = 0;
                registroC100.VL_PIS        = 0;
                registroC100.VL_COFINS     = 0;
                registroC100.VL_PIS_ST     = 0;
                registroC100.VL_COFINS_ST  = 0;
                registroC001.RegistroC100.Add(registroC100);

                // Gera registros específicos para notas emitidas por terceiros
                if (registroC100.IND_EMIT == Emitente.Terceiros)
                {
                    var registroC110 = new RegistroC110();
                    registroC110.COD_INF   = "000001";
                    registroC110.TXT_COMPL = "";
                    registroC100.RegistroC110.Add(registroC110);
                }

                // Gera o registro de importação apenas para notas de entrada
                if (registroC100.IND_OPER == TipoOperacao.EntradaAquisicao)
                {
                    var registroC120 = new RegistroC120();
                    registroC120.COD_DOC_IMP  = DoctoImporta.SimplificadaImport;
                    registroC120.NUM_DOC__IMP = "1024879531";
                    registroC120.PIS_IMP      = 0.00M;
                    registroC120.COFINS_IMP   = 0.00M;
                    registroC120.NUM_ACDRAW   = "";

                    registroC100.RegistroC120.Add(registroC120);
                }

                // Gera registros específicos para notas emitidas por terceiros e de prestação
                if ((registroC100.IND_EMIT == Emitente.Terceiros) && (registroC100.IND_OPER == TipoOperacao.SaidaPrestacao))
                {
                    var registroC130 = new RegistroC130();
                    registroC130.VL_SERV_NT  = 10.12M;
                    registroC130.VL_BC_ISSQN = 10.12M;
                    registroC130.VL_ISSQN    = 10.12M;
                    registroC130.VL_BC_IRRF  = 10.12M;
                    registroC130.VL_IRRF     = 10.12M;
                    registroC130.VL_BC_PREV  = 10.12M;
                    registroC130.VL_PREV     = 10.12M;

                    registroC100.RegistroC130.Add(registroC130);
                }

                // REGISTRO C170: ITENS DO DOCUMENTO (CÓDIGO 01, 1B, 04 e 55).
                for (IItens = 1; IItens <= 10; IItens++)
                {
                    var registroC170 = new RegistroC170();

                    // Inicio Adicionar os Itens:
                    registroC170.NUM_ITEM         = string.Format("{0:000}", IItens);
                    registroC170.COD_ITEM         = string.Format("{0:000000}", registroC170.NUM_ITEM);
                    registroC170.DESCR_COMPL      = string.Format("11{0:000000} ITEM {1}", INotas, registroC170.COD_ITEM);
                    registroC170.QTD              = 1;
                    registroC170.UNID             = "UN";
                    registroC170.VL_ITEM          = 0;
                    registroC170.VL_DESC          = 0;
                    registroC170.IND_MOV          = MovimentacaoFisica.Nao;
                    registroC170.CST_ICMS         = "001";
                    registroC170.CFOP             = "1252";
                    registroC170.COD_NAT          = "64";
                    registroC170.VL_BC_ICMS       = 0;
                    registroC170.ALIQ_ICMS        = 0;
                    registroC170.VL_ICMS          = 0;
                    registroC170.VL_BC_ICMS_ST    = 0;
                    registroC170.ALIQ_ST          = 0;
                    registroC170.VL_ICMS_ST       = 0;
                    registroC170.IND_APUR         = ApuracaoIPI.Mensal;
                    registroC170.CST_IPI          = ipiEntradaIsenta;
                    registroC170.COD_ENQ          = "";
                    registroC170.VL_BC_IPI        = 0;
                    registroC170.ALIQ_IPI         = 0;
                    registroC170.VL_IPI           = 0;
                    registroC170.CST_PIS          = pisOutrasOperacoes;
                    registroC170.VL_BC_PIS        = 0;
                    registroC170.ALIQ_PIS_PERC    = 0;
                    registroC170.QUANT_BC_PIS     = 0;
                    registroC170.ALIQ_PIS_R       = 0;
                    registroC170.VL_PIS           = 0;
                    registroC170.CST_COFINS       = cofinsOutrasOperacoes;
                    registroC170.VL_BC_COFINS     = 0;
                    registroC170.ALIQ_COFINS_PERC = 0;
                    registroC170.QUANT_BC_COFINS  = 0;
                    registroC170.ALIQ_COFINS_R    = 0;
                    registroC170.VL_COFINS        = 0;
                    registroC170.COD_CTA          = "000";

                    registroC100.RegistroC170.Add(registroC170);
                }

                // REGISTRO C170: ITENS DO DOCUMENTO (CÓDIGO 01, 1B, 04 e 55).
                for (IItens = 1; IItens <= 10; IItens++)
                {
                    var registroC190 = new RegistroC190();
                    registroC190.CST_ICMS      = "040";
                    registroC190.CFOP          = "1252";
                    registroC190.ALIQ_ICMS     = 0;
                    registroC190.VL_OPR        = 0;
                    registroC190.VL_BC_ICMS    = 0;
                    registroC190.VL_ICMS       = 0;
                    registroC190.VL_BC_ICMS_ST = 0;
                    registroC190.VL_ICMS_ST    = 0;
                    registroC190.VL_RED_BC     = 0;
                    registroC190.VL_IPI        = 0;
                    registroC190.COD_OBS       = "000";

                    registroC100.RegistroC190.Add(registroC190);
                }
            }

            var registroC400 = new RegistroC400();

            registroC400.COD_MOD = "2D";
            registroC400.ECF_MOD = "DARUMA FS600";
            registroC400.ECF_FAB = "21098765432123456789";
            registroC400.ECF_CX  = "001";

            registroC001.RegistroC400.Add(registroC400);

            var registroC405 = new RegistroC405();

            registroC405.DT_DOC      = blocoC.DT_FIN;
            registroC405.CRO         = 1;
            registroC405.CRZ         = 1;
            registroC405.NUM_COO_FIN = 1;
            registroC405.GT_FIN      = 105.00M;
            registroC405.VL_BRT      = 105.00M;
            registroC400.RegistroC405.Add(registroC405);

            var registroC410 = new RegistroC410();

            registroC410.VL_PIS    = 0.00M;
            registroC410.VL_COFINS = 0.00M;
            registroC405.RegistroC410.Add(registroC410);

            var registroC420 = new RegistroC420();

            registroC420.COD_TOT_PAR  = "T1700";
            registroC420.VLR_ACUM_TOT = 100.00M;
            registroC420.NR_TOT       = 1;
            registroC420.DESCR_NR_TOT = "TOTALIZADOR T1700";
            registroC405.RegistroC420.Add(registroC420);

            //Gera este registro somente para empresas do pergil B de apresentação
            if (ACBrSPEDFiscal1.Bloco_0.Registro0000.IND_PERFIL == Perfil.PerfilB)
            {
                var registroC425 = new RegistroC425();
                registroC425.COD_ITEM  = "000001";
                registroC425.QTD       = 1;
                registroC425.UNID      = "PC";
                registroC425.VL_ITEM   = 100.00M;
                registroC425.VL_PIS    = 0.00M;
                registroC425.VL_COFINS = 0.00M;
                registroC420.RegistroC425.Add(registroC425);
            }

            if (ACBrSPEDFiscal1.Bloco_0.Registro0000.IND_PERFIL != Perfil.PerfilB)
            {
                var registroC460 = new RegistroC460();
                registroC460.COD_MOD   = "2D";
                registroC460.COD_SIT   = SituacaoDocto.Regular;
                registroC460.NUM_DOC   = "000001";
                registroC460.DT_DOC    = Convert.ToDateTime("30/11/2011");
                registroC460.VL_DOC    = 100.00M;
                registroC460.VL_PIS    = 0.00M;
                registroC460.VL_COFINS = 0.00M;
                registroC460.CPF_CNPJ  = "33333333333";
                registroC460.NOM_ADQ   = "TESTE";
                registroC405.RegistroC460.Add(registroC460);

                var registroC470 = new RegistroC470();
                registroC470.COD_ITEM  = "000001";
                registroC470.QTD       = 1;
                registroC470.QTD_CANC  = 0;
                registroC470.UNID      = "UN";
                registroC470.VL_ITEM   = 100.00m;
                registroC470.CST_ICMS  = "000";
                registroC470.CFOP      = "5102";
                registroC470.ALIQ_ICMS = 17.00m;
                registroC470.VL_PIS    = 0.00m;
                registroC470.VL_COFINS = 0.00m;
                registroC460.RegistroC470.Add(registroC470);
            }

            var registroC490 = new RegistroC490();

            registroC490.CST_ICMS   = "000";
            registroC490.CFOP       = "5102";
            registroC490.ALIQ_ICMS  = 17.00M;
            registroC490.VL_OPR     = 100.00M;
            registroC490.VL_BC_ICMS = 100.00M;
            registroC490.VL_ICMS    = 17.00M;
            registroC490.COD_OBS    = "000001";
            registroC405.RegistroC490.Add(registroC490);

            //Só envia este registro se o contribuinte for da BA
            if (ACBrSPEDFiscal1.Bloco_0.Registro0000.UF == "BA")
            {
                var registroC495 = new RegistroC495();

                registroC495.ALIQ_ICMS  = 17.00M;
                registroC495.COD_ITEM   = "000001";
                registroC495.QTD        = 1.00M;
                registroC495.QTD_CANC   = 0.00M;
                registroC495.UNID       = "UN";
                registroC495.VL_ITEM    = 100.00M;
                registroC495.VL_DESC    = 0.00M;
                registroC495.VL_CANC    = 0.00M;
                registroC495.VL_ACMO    = 0.00M;
                registroC495.VL_BC_ICMS = 100.00M;
                registroC495.VL_ICMS    = 17.00M;
                registroC495.VL_ISEN    = 0.00M;
                registroC495.VL_ICMS_ST = 0.00M;
            }
        }
Example #6
0
        public static void GerarBlocoC()
        {
            NotaFiscalController NotaFiscalController = new NotaFiscalController();
            SpedFiscalController SpedFiscalController = new SpedFiscalController();
            RegistroRController  RegistroRController  = new RegistroRController();

            var BlocoC = FDataModule.ACBrSpedFiscal.Bloco_C;

            var RegistroC001 = BlocoC.RegistroC001;

            RegistroC001.IND_MOV = IndicadorMovimento.ComDados;

            List <NotaFiscalCabecalhoVO> ListaNF2Cabecalho           = NotaFiscalController.ConsultaNFCabecalhoSPED(DataInicial, DataFinal);
            List <NotaFiscalCabecalhoVO> ListaNF2CabecalhoCanceladas = NotaFiscalController.ConsultaNFCabecalhoCanceladasSPED(DataInicial, DataFinal);

            List <SpedFiscalC370VO> ListaC370;
            List <SpedFiscalC390VO> ListaC390;
            List <SpedFiscalC321VO> ListaC321;
            List <SpedFiscalC425VO> ListaC425;
            List <SpedFiscalC490VO> ListaC490;

            List <R02VO> ListaR02;
            List <R03VO> ListaR03;
            List <R04VO> ListaR04;
            List <R05VO> ListaR05;

            //TODO:  Implemente a busca por NF-e na sua retaguarda
            List <Object> ListaNFeCabecalho = new List <Object>();
            List <Object> ListaCupomNFe;
            List <Object> ListaNFeAnalitico;

            // / ///////////
            //  Perfil A  //
            // / ///////////
            if (PerfilApresentacao == 0)
            {
                if (ListaNFeCabecalho != null)
                {
                    for (int i = 0; i <= ListaNFeCabecalho.Count - 1; i++)
                    {
                        //  c100
                        //TODO:  Implemente a busca por NF-e na sua retaguarda
                        var RegistroC100 = new RegistroC100();
                        RegistroC100.IND_OPER      = TipoOperacao.SaidaPrestacao;
                        RegistroC100.IND_EMIT      = Emitente.EmissaoPropria;
                        RegistroC100.COD_PART      = "1";
                        RegistroC100.COD_MOD       = "1";
                        RegistroC100.COD_SIT       = SituacaoDocto.Regular;
                        RegistroC100.SER           = "1";
                        RegistroC100.NUM_DOC       = "1";
                        RegistroC100.CHV_NFE       = "1";
                        RegistroC100.DT_DOC        = DateTime.Now;
                        RegistroC100.DT_E_S        = DateTime.Now;
                        RegistroC100.VL_DOC        = 1;
                        RegistroC100.IND_PGTO      = TipoPagamento.SemPagamento;
                        RegistroC100.VL_DESC       = 0;
                        RegistroC100.VL_ABAT_NT    = 0;
                        RegistroC100.VL_MERC       = 1;
                        RegistroC100.IND_FRT       = TipoFrete.SemCobrancaFrete;
                        RegistroC100.VL_FRT        = 0;
                        RegistroC100.VL_SEG        = 0;
                        RegistroC100.VL_OUT_DA     = 0;
                        RegistroC100.VL_BC_ICMS    = 1;
                        RegistroC100.VL_ICMS       = 0;
                        RegistroC100.VL_BC_ICMS_ST = 0;
                        RegistroC100.VL_ICMS_ST    = 0;
                        RegistroC100.VL_IPI        = 0;
                        RegistroC100.VL_PIS        = 0;
                        RegistroC100.VL_COFINS     = 0;
                        RegistroC100.VL_PIS_ST     = 0;
                        RegistroC100.VL_COFINS_ST  = 0;
                        RegistroC001.RegistroC100.Add(RegistroC100);

                        //  C114
                        // TODO  Implemente a busca por NF-e na sua retaguarda
                        ListaCupomNFe = new List <Object>();

                        if (ListaCupomNFe != null)
                        {
                            for (int j = 0; j <= ListaCupomNFe.Count - 1; j++)
                            {
                                var RegistroC114 = new RegistroC114();
                                RegistroC114.COD_MOD = "1";
                                RegistroC114.ECF_FAB = "1";
                                RegistroC114.ECF_CX  = "1";
                                RegistroC114.NUM_DOC = "1";
                                RegistroC114.DT_DOC  = DateTime.Now;
                                //RegistroC001.RegistroC100[i].RegistroC110[i].RegistroC114.Add(RegistroC114);
                            }
                        }

                        //  C190
                        // TODO  Implemente a busca por NF-e na sua retaguarda
                        ListaCupomNFe     = new List <Object>();
                        ListaNFeAnalitico = new List <Object>();

                        if (ListaNFeAnalitico != null)
                        {
                            for (int j = 0; j <= ListaNFeAnalitico.Count - 1; j++)
                            {
                                var RegistroC190 = new RegistroC190();
                                RegistroC190.CST_ICMS      = "1";
                                RegistroC190.CFOP          = "1";
                                RegistroC190.ALIQ_ICMS     = 0;
                                RegistroC190.VL_OPR        = 1;
                                RegistroC190.VL_BC_ICMS    = 0;
                                RegistroC190.VL_ICMS       = 0;
                                RegistroC190.VL_BC_ICMS_ST = 0;
                                RegistroC190.VL_ICMS_ST    = 0;
                                RegistroC190.VL_RED_BC     = 0;
                                RegistroC190.VL_IPI        = 0;
                                RegistroC190.COD_OBS       = "";
                                RegistroC100.RegistroC190.Add(RegistroC190);
                            }
                        }
                    }
                }

                if (ListaNF2Cabecalho != null)
                {
                    for (int i = 0; i <= ListaNF2Cabecalho.Count - 1; i++)
                    {
                        var RegistroC350 = new RegistroC350();
                        RegistroC350.SER       = ListaNF2Cabecalho[i].Serie;
                        RegistroC350.SUB_SER   = ListaNF2Cabecalho[i].Subserie;
                        RegistroC350.NUM_DOC   = ListaNF2Cabecalho[i].Numero;
                        RegistroC350.DT_DOC    = Convert.ToDateTime(ListaNF2Cabecalho[i].DataEmissao);
                        RegistroC350.CNPJ_CPF  = ListaNF2Cabecalho[i].CpfCnpjCliente;
                        RegistroC350.VL_MERC   = ListaNF2Cabecalho[i].TotalProdutos;
                        RegistroC350.VL_DOC    = ListaNF2Cabecalho[i].TotalNf;
                        RegistroC350.VL_DESC   = ListaNF2Cabecalho[i].Desconto;
                        RegistroC350.VL_PIS    = ListaNF2Cabecalho[i].Pis;
                        RegistroC350.VL_COFINS = ListaNF2Cabecalho[i].Cofins;
                        RegistroC350.COD_CTA   = "";
                        RegistroC001.RegistroC350.Add(RegistroC350);

                        //  C370
                        ListaC370 = SpedFiscalController.TabelaC370(ListaNF2Cabecalho[i].Id);
                        if (ListaC370 != null)
                        {
                            for (int j = 0; j <= ListaC370.Count - 1; j++)
                            {
                                var RegistroC370 = new RegistroC370();
                                RegistroC370.NUM_ITEM = Convert.ToString(ListaC370[j].Item);
                                RegistroC370.COD_ITEM = Convert.ToString(ListaC370[j].IdProduto);
                                RegistroC370.QTD      = ListaC370[j].Quantidade;
                                RegistroC370.UNID     = Convert.ToString(ListaC370[j].IdUnidade);
                                RegistroC370.VL_ITEM  = ListaC370[j].Valor;
                                RegistroC370.VL_DESC  = ListaC370[j].Desconto;
                                RegistroC001.RegistroC350[i].RegistroC370.Add(RegistroC370);
                            }
                        }


                        //  C390
                        ListaC390 = SpedFiscalController.TabelaC390(ListaNF2Cabecalho[i].Id);
                        if (ListaC390 != null)
                        {
                            for (int l = 0; l <= ListaC390.Count - 1; l++)
                            {
                                var RegistroC390 = new RegistroC390();
                                RegistroC390.CST_ICMS   = ListaC390[l].CST;
                                RegistroC390.CFOP       = Convert.ToString(ListaC390[l].CFOP);
                                RegistroC390.ALIQ_ICMS  = ListaC390[l].TaxaICMS;
                                RegistroC390.VL_OPR     = ListaC390[l].SomaValor;
                                RegistroC390.VL_BC_ICMS = ListaC390[l].SomaBaseICMS;
                                RegistroC390.VL_ICMS    = ListaC390[l].SomaICMS;
                                RegistroC390.VL_RED_BC  = ListaC390[l].SomaICMSOutras;
                                RegistroC001.RegistroC350[i].RegistroC390.Add(RegistroC390);
                            }
                        }
                    }
                }
            }

            // / ///////////
            //  Perfil B  //
            // / ///////////
            if (PerfilApresentacao == 1)
            {
                if (ListaNF2Cabecalho != null)
                {
                    for (int i = 0; i <= ListaNF2Cabecalho.Count - 1; i++)
                    {
                        //  C300
                        var RegistroC300 = new RegistroC300();
                        RegistroC300.COD_MOD   = "02";
                        RegistroC300.SER       = ListaNF2Cabecalho[i].Serie;
                        RegistroC300.SUB       = ListaNF2Cabecalho[i].Subserie;
                        RegistroC300.DT_DOC    = Convert.ToDateTime(ListaNF2Cabecalho[i].DataEmissao);
                        RegistroC300.VL_DOC    = ListaNF2Cabecalho[i].TotalNf;
                        RegistroC300.VL_PIS    = ListaNF2Cabecalho[i].Pis;
                        RegistroC300.VL_COFINS = ListaNF2Cabecalho[i].Cofins;
                        RegistroC300.COD_CTA   = "";
                        RegistroC001.RegistroC300.Add(RegistroC300);
                    }
                }

                if (ListaNF2CabecalhoCanceladas != null)
                {
                    for (int i = 0; i <= ListaNF2CabecalhoCanceladas.Count - 1; i++)
                    {
                        //  C310
                        var RegistroC310 = new RegistroC310();
                        RegistroC310.NUM_DOC_CANC = ListaNF2CabecalhoCanceladas[i].Numero;
                        RegistroC001.RegistroC300[i].RegistroC310.Add(RegistroC310);
                    }
                }

                //  C320 ---> igual ao C390
                ListaC390 = SpedFiscalController.TabelaC390(ListaNF2Cabecalho[0].Id);
                if (ListaC390 != null)
                {
                    for (int l = 0; l <= ListaC390.Count - 1; l++)
                    {
                        var RegistroC320 = new RegistroC320();
                        RegistroC320.CST_ICMS   = ListaC390[l].CST;
                        RegistroC320.CFOP       = Convert.ToString(ListaC390[l].CFOP);
                        RegistroC320.ALIQ_ICMS  = ListaC390[l].TaxaICMS;
                        RegistroC320.VL_OPR     = ListaC390[l].SomaValor;
                        RegistroC320.VL_BC_ICMS = ListaC390[l].SomaBaseICMS;
                        RegistroC320.VL_ICMS    = ListaC390[l].SomaICMS;
                        RegistroC320.VL_RED_BC  = ListaC390[l].SomaICMSOutras;
                        RegistroC001.RegistroC300[0].RegistroC320.Add(RegistroC320);
                    }
                }

                //  C321
                ListaC321 = SpedFiscalController.TabelaC321(DataInicial, DataFinal);
                if (ListaC321 != null)
                {
                    for (int i = 0; i <= ListaC321.Count - 1; i++)
                    {
                        var RegistroC321 = new RegistroC321();

                        RegistroC321.COD_ITEM   = Convert.ToString(ListaC321[i].IdProduto);
                        RegistroC321.QTD        = ListaC321[i].SomaQuantidade;
                        RegistroC321.UNID       = ListaC321[i].DescricaoUnidade;
                        RegistroC321.VL_ITEM    = ListaC321[i].SomaValor;
                        RegistroC321.VL_DESC    = ListaC321[i].SomaDesconto;
                        RegistroC321.VL_BC_ICMS = ListaC321[i].SomaBaseICMS;
                        RegistroC321.VL_ICMS    = ListaC321[i].SomaICMS;
                        RegistroC321.VL_PIS     = ListaC321[i].SomaPIS;
                        RegistroC321.VL_COFINS  = ListaC321[i].SomaCOFINS;
                        RegistroC001.RegistroC300[0].RegistroC320[0].RegistroC321.Add(RegistroC321);
                    }
                }
            } //  if PerfilApresentacao = 1 then

            // / //////////////////
            //  Ambos os Perfis  //
            // / //////////////////
            List <ImpressoraVO> ListaImpressora = new ImpressoraController().TabelaImpressora();

            if (ListaImpressora != null)
            {
                for (int i = 0; i <= ListaImpressora.Count - 1; i++)
                {
                    //  verifica se existe movimento no periodo para aquele ECF
                    ListaR02 = RegistroRController.TabelaR02(DataInicial, DataFinal, ListaImpressora[i].Id);
                    if (ListaR02 != null)
                    {
                        var RegistroC400 = new RegistroC400();
                        RegistroC400.COD_MOD = ListaImpressora[i].ModeloDocumentoFiscal;
                        RegistroC400.ECF_MOD = ListaImpressora[i].Modelo;
                        RegistroC400.ECF_FAB = ListaImpressora[i].Serie;
                        RegistroC400.ECF_CX  = Convert.ToString(ListaImpressora[i].Numero);
                        RegistroC001.RegistroC400.Add(RegistroC400);

                        //  C405
                        for (int j = 0; j <= ListaR02.Count - 1; j++)
                        {
                            var RegistroC405 = new RegistroC405();
                            RegistroC405.DT_DOC      = Convert.ToDateTime(ListaR02[j].DataMovimento);
                            RegistroC405.CRO         = ListaR02[j].CRO;
                            RegistroC405.CRZ         = ListaR02[j].CRZ;
                            RegistroC405.NUM_COO_FIN = ListaR02[j].COO;
                            RegistroC405.GT_FIN      = ListaR02[j].GrandeTotal;
                            RegistroC405.VL_BRT      = ListaR02[j].VendaBruta;
                            RegistroC400.RegistroC405.Add(RegistroC405);

                            //  C420
                            ListaR03 = RegistroRController.TabelaR03(ListaR02[j].Id);
                            if (ListaR03 != null)
                            {
                                for (int k = 0; k <= ListaR03.Count - 1; k++)
                                {
                                    var RegistroC420 = new RegistroC420();
                                    if (ListaR03[k].TotalizadorParcial.Length == 8)
                                    {
                                        RegistroC420.COD_TOT_PAR = ListaR03[k].TotalizadorParcial.Substring(ListaR03[k].TotalizadorParcial.Length, 2);
                                    }
                                    else
                                    {
                                        RegistroC420.COD_TOT_PAR = ListaR03[k].TotalizadorParcial;
                                    }
                                    RegistroC420.VLR_ACUM_TOT = ListaR03[k].ValorAcumulado;
                                    if (RegistroC420.COD_TOT_PAR.Trim().Length == 7)
                                    {
                                        RegistroC420.NR_TOT = Convert.ToInt32(RegistroC420.COD_TOT_PAR.Substring(2, 1));
                                    }
                                    else
                                    {
                                        RegistroC420.NR_TOT = 0;
                                    }
                                    RegistroC405.RegistroC420.Add(RegistroC420);


                                    if (PerfilApresentacao == 1)
                                    {
                                        //  C425
                                        ListaC425 = SpedFiscalController.TabelaC425(ListaR02[j].DataMovimento.ToString("yyyy-mm-dd"), ListaR02[j].DataMovimento.ToString("yyyy-mm-dd"), ListaR03[k].TotalizadorParcial);
                                        if (ListaC425 != null)
                                        {
                                            for (int l = 0; l <= ListaC425.Count - 1; l++)
                                            {
                                                var RegistroC425 = new RegistroC425();

                                                RegistroC425.COD_ITEM  = Convert.ToString(ListaC425[l].IdProduto);
                                                RegistroC425.UNID      = Convert.ToString(ListaC425[l].IdUnidade);
                                                RegistroC425.QTD       = ListaC425[l].SomaQuantidade;
                                                RegistroC425.VL_ITEM   = ListaC425[l].SomaValor;
                                                RegistroC425.VL_PIS    = ListaC425[l].SomaPIS;
                                                RegistroC425.VL_COFINS = ListaC425[l].SomaCOFINS;
                                                RegistroC420.RegistroC425.Add(RegistroC425);
                                            }
                                        }
                                    }
                                }
                            }

                            //  se tiver o perfil A, gera o C460 com C470
                            if (PerfilApresentacao == 0)
                            {
                                //  C460
                                ListaR04 = RegistroRController.TabelaR04(ListaR02[j].DataMovimento.ToString("yyyy-mm-dd"), ListaR02[j].DataMovimento.ToString("yyyy-mm-dd"), ListaImpressora[i].Id);
                                if (ListaR04 != null)
                                {
                                    for (int l = 0; l <= ListaR04.Count - 1; l++)
                                    {
                                        var RegistroC460 = new RegistroC460();
                                        RegistroC460.COD_MOD = "2D";
                                        if (ListaR04[l].Cancelado == "S")
                                        {
                                            RegistroC460.COD_SIT = SituacaoDocto.Cancelado;
                                        }
                                        else
                                        {
                                            RegistroC460.COD_SIT = SituacaoDocto.Regular;
                                        }

                                        if (RegistroC460.COD_SIT == SituacaoDocto.Regular)
                                        {
                                            RegistroC460.DT_DOC   = ListaR04[l].DataEmissao;
                                            RegistroC460.VL_DOC   = ListaR04[l].ValorLiquido;
                                            RegistroC460.VL_PIS   = ListaR04[l].PIS;
                                            RegistroC460.VL_PIS   = ListaR04[l].COFINS;
                                            RegistroC460.CPF_CNPJ = ListaR04[l].CPFCNPJ;
                                            RegistroC460.NOM_ADQ  = ListaR04[l].Cliente;
                                        }
                                        RegistroC460.NUM_DOC = Convert.ToString(ListaR04[l].COO);
                                        RegistroC405.RegistroC460.Add(RegistroC460);

                                        if (RegistroC460.COD_SIT == SituacaoDocto.Regular)
                                        {
                                            //  C470
                                            ListaR05 = RegistroRController.TabelaR05(ListaR04[l].Id, "Sped");
                                            if (ListaR05 != null)
                                            {
                                                for (int m = 0; m <= ListaR05.Count - 1; m++)
                                                {
                                                    var RegistroC470 = new RegistroC470();
                                                    RegistroC470.COD_ITEM  = Convert.ToString(ListaR05[m].IdProduto);
                                                    RegistroC470.QTD       = ListaR05[m].Quantidade;
                                                    RegistroC470.QTD_CANC  = ListaR05[m].QuantidadeCancelada;
                                                    RegistroC470.UNID      = Convert.ToString(ListaR05[m].IdUnidade);
                                                    RegistroC470.VL_ITEM   = ListaR05[m].TotalItem;
                                                    RegistroC470.CST_ICMS  = ListaR05[m].CST;
                                                    RegistroC470.CFOP      = Convert.ToString(ListaR05[m].CFOP);
                                                    RegistroC470.ALIQ_ICMS = ListaR05[m].AliquotaICMS;
                                                    RegistroC470.VL_PIS    = ListaR05[m].PIS;
                                                    RegistroC470.VL_COFINS = ListaR05[m].COFINS;
                                                    RegistroC460.RegistroC470.Add(RegistroC470);
                                                }
                                            }
                                        }
                                    }
                                }
                            }

                            //  C490
                            ListaC490 = SpedFiscalController.TabelaC490(RegistroC405.DT_DOC.ToString("yyyy-mm-dd"), DataFinal);
                            if (ListaC490 != null)
                            {
                                for (int g = 0; g <= ListaC490.Count - 1; g++)
                                {
                                    var RegistroC490 = new RegistroC490();

                                    RegistroC490.CST_ICMS   = ListaC490[g].CST;
                                    RegistroC490.CFOP       = Convert.ToString(ListaC490[g].CFOP);
                                    RegistroC490.ALIQ_ICMS  = ListaC490[g].TaxaICMS;
                                    RegistroC490.VL_OPR     = ListaC490[g].SomaValor;
                                    RegistroC490.VL_BC_ICMS = ListaC490[g].SomaBaseICMS;
                                    RegistroC490.VL_ICMS    = ListaC490[g].SomaICMS;
                                    RegistroC405.RegistroC490.Add(RegistroC490);
                                }
                            }
                        }
                    }
                }
            }
        }