private void ProcessarDemaisDocumentosOperacoes()
        {
            List <RegistroF010> registrosF010;
            List <RegistroF600> registrosF600;
            List <RegistroF200> registrosF200;

            registrosF010 = demaisDocOperacoes.GetRegistroF010();

            foreach (RegistroF010 regf010 in registrosF010)
            {
                this.UpdateStatusAsynchronousExecution("Gerando Registro F010");
                DadosArquivoPisCofinsService.PersistirRegistro(regf010);
                registrosF200 = demaisDocOperacoes.GetRegistroF200(regf010.CD_EMP);

                foreach (RegistroF200 regF200 in registrosF200)
                {
                    this.UpdateStatusAsynchronousExecution("Gerando Registro F200");
                    DadosArquivoPisCofinsService.PersistirRegistro(regF200);
                }


                registrosF600 = demaisDocOperacoes.GetRegistroF600(regf010.CD_EMP);

                foreach (RegistroF600 regf600 in registrosF600)
                {
                    this.UpdateStatusAsynchronousExecution("Gerando Registro F600");
                    DadosArquivoPisCofinsService.PersistirRegistro(regf600);
                }
            }

            RegistroF001 regF001 = new RegistroF001();

            if (DadosArquivoPisCofinsService.BlocoPossuiRegistros("F"))
            {
                regF001.IND_MOV = "0";
            }
            else
            {
                regF001.IND_MOV = "1";
            }
            //regF001.IND_MOV = "1"; // Nesta primeira versão este bloco não será informado
            DadosArquivoPisCofinsService.PersistirRegistro(regF001);
            this.UpdateStatusAsynchronousExecution("Gerando Registro F001");

            RegistroF990 regF990 = DadosArquivoPisCofinsService.GetRegistroF990();

            DadosArquivoPisCofinsService.PersistirRegistro(regF990);
            this.UpdateStatusAsynchronousExecution("Gerando Registro F990");
        }
        private void ProcessarDocumentosFiscaisServico()
        {
            IEnumerable <RegistroA010> registrosA010 =
                NotasFiscaisServicoService.GetRegistrosA010();
            IEnumerable <RegistroA100> registrosA100;

            foreach (RegistroA010 regA010 in registrosA010)
            {
                this.UpdateStatusAsynchronousExecution("Gerando Registro A010");
                DadosArquivoPisCofinsService.PersistirRegistro(regA010);

                registrosA100 = NotasFiscaisServicoService.GetRegistrosA100(
                    regA010.CNPJ, regA010.CD_EMP);
                foreach (RegistroA100 regA100 in registrosA100)
                {
                    this.UpdateStatusAsynchronousExecution("Gerando Registro A100");
                    DadosArquivoPisCofinsService.PersistirRegistro(regA100);

                    // Processa informações do cliente ou fornecedor vinculado a uma nota fiscal
                    this.ProcessarParticipante(regA100.COD_PART, regA010.CD_EMP);

                    if (regA100.ST_DOC_CANCELADO != "S") // Não persiste registros filhos caso haja cancelamento
                    {
                        this.ProcessarDetalhesDocumentosFiscaisServico(regA100, regA010.CD_EMP);
                    }
                }
            }

            // Monta o registro de abertura do bloco, verificando se realmente existem
            // movimentações para o período especificado
            this.UpdateStatusAsynchronousExecution("Gerando Registro A001");
            RegistroA001 regA001 = new RegistroA001();

            if (DadosArquivoPisCofinsService.BlocoPossuiRegistros("A"))
            {
                regA001.IND_MOV = "0";
            }
            else
            {
                regA001.IND_MOV = "1";
            }
            DadosArquivoPisCofinsService.PersistirRegistro(regA001);

            RegistroA990 regA990 = DadosArquivoPisCofinsService.GetRegistroA990();

            DadosArquivoPisCofinsService.PersistirRegistro(regA990);
            this.UpdateStatusAsynchronousExecution("Gerando Registro A990");
        }
        private void ProcessarDocumentosFiscaisMercadorias()
        {
            this.UpdateStatusAsynchronousExecution("Iniciando processamento de documentos fiscais");


            registrosC010 = DocumentosFiscaisMercadoriasService.GetRegistrosC010(UndTrabalho.CodigoEmpresa).ToList();

            // GetEmpresasFiliais(UndTrabalho.CodigoEmpresa);
            produtos      = new List <validacao>();
            unidades      = new List <validacao>();
            contribuintes = new List <validacao>();
            foreach (RegistroC010 regC010 in registrosC010)
            {
                this.UpdateStatusAsynchronousExecution("Gerando Registro C010");
                DadosArquivoPisCofinsService.PersistirRegistro(regC010);

                this.ProcessarNotasFiscaisMercadorias(regC010);
                this.ProcessarConsolidacaoNotasFiscais(regC010);
                this.ProcessarCuponsFiscais(regC010);
                this.ProcessarNotasFiscaisEnergiaAguaGas(regC010);
            }

            // Monta o registro de abertura do bloco, verificando se realmente existem
            // movimentações para o período especificado
            this.UpdateStatusAsynchronousExecution("Gerando Registro C001");
            RegistroC001 regC001 = new RegistroC001();

            if (DadosArquivoPisCofinsService.BlocoPossuiRegistros("C"))
            {
                regC001.IND_MOV = "0";
            }
            else
            {
                regC001.IND_MOV = "1";
            }
            DadosArquivoPisCofinsService.PersistirRegistro(regC001);

            this.UpdateStatusAsynchronousExecution("Gerando Registro C990");
            RegistroC990 regC990 = DadosArquivoPisCofinsService.GetRegistroC990();

            DadosArquivoPisCofinsService.PersistirRegistro(regC990);
        }
        /// <summary>
        /// Registro D
        /// </summary>
        private void ProcessarDocumentosFiscaisServicoICMS()
        {
            this.ProcessarNotasFiscaisServicosComunicacao();
            this.UpdateStatusAsynchronousExecution("Gerando Registro D001");
            RegistroD001 regD001 = new RegistroD001();

            if (DadosArquivoPisCofinsService.BlocoPossuiRegistros("D"))
            {
                regD001.IND_MOV = "0";
            }
            else
            {
                regD001.IND_MOV = "1";
            }
            DadosArquivoPisCofinsService.PersistirRegistro(regD001);

            RegistroD990 regD990 = DadosArquivoPisCofinsService.GetRegistroD990();

            DadosArquivoPisCofinsService.PersistirRegistro(regD990);
            this.UpdateStatusAsynchronousExecution("Gerando Registro D990");
        }