Beispiel #1
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;
            }
        }
Beispiel #2
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);
                                }
                            }
                        }
                    }
                }
            }
        }