/// <summary>
        /// Inclusão de contratante Individual ou Fornecedor-Contratante
        /// </summary>
        public void IncluirFornecedorIndividual(AdesaoContratante contratante)
        {
            CONTRATANTE contratanteAncora = new CONTRATANTE();

            contratanteAncora.TIPO_CADASTRO_ID    = (int)EnumTiposFornecedor.EmpresaNacional;
            contratanteAncora.TIPO_CONTRATANTE_ID = (int)EnumTipoContratante.FornecedorIndividual;
            contratanteAncora.DATA_CADASTRO       = DateTime.Now;
            contratanteAncora.DATA_NASCIMENTO     = DateTime.Now;
            contratanteAncora.ATIVO    = true;
            contratanteAncora.ATIVO_DT = DateTime.Now;

            //contratanteAncora.CNPJ = cnpj;
            //contratanteAncora.RAZAO_SOCIAL = razaoSocial;
            //contratanteAncora.NOME_FANTASIA = nomeFantasia;
            //contratanteAncora.COD_WEBFORMAT = codigoWebformat;
            //contratanteAncora.CONTRANTE_COD_ERP = codigoErp;
            contratanteAncora.ESTILO = "Azul";
            _contratante.Inserir(contratanteAncora);


            var papeis = _papelRepository.BuscarPorContratanteIdETipoPapelId(1, 50);

            contratanteAncora.WFL_PAPEL.Add(new WFL_PAPEL
            {
                PAPEL_NM    = papeis.PAPEL_NM,
                PAPEL_SGL   = papeis.PAPEL_SGL,
                PAPEL_TP_ID = papeis.PAPEL_TP_ID
            });

            contratanteAncora.WAC_PERFIL.Add(new Perfil
            {
                PERFIL_DSC = "Administrador do Sistema",
                PERFIL_NM  = "Administrador"
            });
            contratanteAncora.WAC_PERFIL.Add(new Perfil
            {
                PERFIL_DSC = "Usuário do Sistema",
                PERFIL_NM  = "Usuário"
            });
        }
        private CONTRATANTE CriarContratante(string documento, SolicitacaoCadastroFornecedor solicitacaoCadastroFornecedor)
        {
            CONTRATANTE contratanteAncora = new CONTRATANTE()
            {
                TIPO_CADASTRO_ID    = (int)EnumTiposFornecedor.EmpresaNacional,
                TIPO_CONTRATANTE_ID = (int)EnumTipoContratante.FornecedorIndividual,
                DATA_CADASTRO       = DateTime.Now,
                DATA_NASCIMENTO     = solicitacaoCadastroFornecedor.DT_NASCIMENTO,
                NOME_FANTASIA       = solicitacaoCadastroFornecedor.NOME_FANTASIA,
                RAZAO_SOCIAL        = solicitacaoCadastroFornecedor.RAZAO_SOCIAL,
                CNPJ     = documento,
                ATIVO    = true,
                ATIVO_DT = DateTime.Now,
                ESTILO   = "Azul"
            };

            var papel = _papelRepository.BuscarPorContratanteIdETipoPapelId(1, 50);

            contratanteAncora.WFL_PAPEL.Add(new WFL_PAPEL
            {
                PAPEL_NM    = papel.PAPEL_NM,
                PAPEL_SGL   = papel.PAPEL_SGL,
                PAPEL_TP_ID = papel.PAPEL_TP_ID
            });

            contratanteAncora.WAC_PERFIL.Add(new Domain.Models.Perfil
            {
                PERFIL_DSC = "Administrador do Sistema",
                PERFIL_NM  = "Administrador"
            });
            contratanteAncora.WAC_PERFIL.Add(new Domain.Models.Perfil
            {
                PERFIL_DSC = "Usuário do Sistema",
                PERFIL_NM  = "Usuário"
            });
            return(contratanteAncora);
        }
        public void IncluirFornecedorIndividual(string documento)
        {
            SolicitacaoCadastroFornecedor solicitacaoCadastroFornecedor = _solicitacaoCadastroRepository.Buscar(x => x.CNPJ == documento || x.CPF == documento);
            SOLICITACAO solicitacao    = solicitacaoCadastroFornecedor.WFD_SOLICITACAO;
            ROBO        roboFornecedor = solicitacaoCadastroFornecedor.WFD_PJPF_ROBO;

            Domain.Models.Fornecedor fornecedor = new Domain.Models.Fornecedor
            {
                CONTRATANTE_ID  = solicitacao.CONTRATANTE_ID,
                TIPO_PJPF_ID    = solicitacaoCadastroFornecedor.PJPF_TIPO,
                RAZAO_SOCIAL    = solicitacaoCadastroFornecedor.RAZAO_SOCIAL,
                NOME_FANTASIA   = solicitacaoCadastroFornecedor.NOME_FANTASIA,
                NOME            = solicitacaoCadastroFornecedor.NOME,
                CNPJ            = solicitacaoCadastroFornecedor.CNPJ,
                CPF             = solicitacaoCadastroFornecedor.CPF,
                CNAE            = solicitacaoCadastroFornecedor.CNAE,
                INSCR_ESTADUAL  = solicitacaoCadastroFornecedor.INSCR_ESTADUAL,
                INSCR_MUNICIPAL = solicitacaoCadastroFornecedor.INSCR_MUNICIPAL,
                ENDERECO        = solicitacaoCadastroFornecedor.ENDERECO,
                NUMERO          = solicitacaoCadastroFornecedor.NUMERO,
                COMPLEMENTO     = solicitacaoCadastroFornecedor.COMPLEMENTO,
                BAIRRO          = solicitacaoCadastroFornecedor.BAIRRO,
                CIDADE          = solicitacaoCadastroFornecedor.CIDADE,
                UF    = solicitacaoCadastroFornecedor.UF,
                CEP   = solicitacaoCadastroFornecedor.CEP,
                PAIS  = solicitacaoCadastroFornecedor.PAIS,
                ATIVO = true,
            };
            if (roboFornecedor != null && solicitacaoCadastroFornecedor.PJPF_TIPO != 2)
            {
                fornecedor.ROBO_ID = roboFornecedor.ID;
            }

            #region Unspsc
            foreach (var item in solicitacao.WFD_SOL_UNSPSC)
            {
                fornecedor.FornecedorServicoMaterialList.Add(new FORNECEDOR_UNSPSC
                {
                    SOLICITACAO_ID = solicitacao.ID,
                    UNSPSC_ID      = item.UNSPSC_ID,
                    DT_INCLUSAO    = DateTime.Now,
                    WFD_PJPF       = fornecedor
                });
            }
            #endregion

            WFD_CONTRATANTE_PJPF contratanteFornecedor = new WFD_CONTRATANTE_PJPF
            {
                CATEGORIA_ID       = solicitacaoCadastroFornecedor.CATEGORIA_ID,
                CONTRATANTE_ID     = solicitacao.CONTRATANTE_ID,
                PJPF_ID            = fornecedor.ID,
                PJPF_COD_ERP       = solicitacaoCadastroFornecedor.COD_PJPF_ERP,
                PJPF_STATUS_ID     = 1,
                PJPF_STATUS_ID_SOL = solicitacao.ID,
                TP_PJPF            = 2
            };

            #region Bancos
            foreach (var item in solicitacao.WFD_SOL_MOD_BANCO)
            {
                contratanteFornecedor.WFD_PJPF_BANCO.Add(new FORNECEDOR_BANCO
                {
                    CONTRATANTE_PJPF_ID = contratanteFornecedor.ID,
                    BANCO_ID            = item.BANCO_ID,
                    AGENCIA             = item.AGENCIA,
                    AG_DV        = item.AG_DV,
                    CONTA        = item.CONTA,
                    CONTA_DV     = item.CONTA_DV,
                    ATIVO        = true,
                    DATA_UPLOAD  = item.DATA_UPLOAD,
                    NOME_ARQUIVO = item.NOME_ARQUIVO,
                    ARQUIVO_ID   = item.ARQUIVO_ID
                });
            }
            #endregion

            #region Endereços
            foreach (var solicitacaoModificacaoEndereco in solicitacao.WFD_SOL_MOD_ENDERECO)
            {
                contratanteFornecedor.WFD_PJPF_ENDERECO.Add(new FORNECEDOR_ENDERECO
                {
                    BAIRRO              = solicitacaoModificacaoEndereco.BAIRRO,
                    CEP                 = solicitacaoModificacaoEndereco.CEP,
                    CIDADE              = solicitacaoModificacaoEndereco.CIDADE,
                    COMPLEMENTO         = solicitacaoModificacaoEndereco.COMPLEMENTO,
                    ENDERECO            = solicitacaoModificacaoEndereco.ENDERECO,
                    NUMERO              = solicitacaoModificacaoEndereco.NUMERO,
                    PAIS                = solicitacaoModificacaoEndereco.PAIS,
                    T_UF                = solicitacaoModificacaoEndereco.T_UF,
                    TP_ENDERECO_ID      = solicitacaoModificacaoEndereco.TP_ENDERECO_ID,
                    UF                  = solicitacaoModificacaoEndereco.UF,
                    CONTRATANTE_PJPF_ID = contratanteFornecedor.ID
                });
            }
            #endregion

            #region Contatos

            foreach (var item in solicitacao.WFD_SOL_MOD_CONTATO)
            {
                contratanteFornecedor.WFD_PJPF_CONTATOS.Add(new FORNECEDOR_CONTATOS
                {
                    CONTRAT_ORG_COMPRAS_ID = solicitacao.WFD_CONTRATANTE.WFD_CONTRATANTE_ORG_COMPRAS.First().ID,
                    CONTRATANTE_PJPF_ID    = contratanteFornecedor.ID,
                    NOME     = item.NOME,
                    EMAIL    = item.EMAIL,
                    CELULAR  = item.CELULAR,
                    TELEFONE = item.TELEFONE
                });
            }

            #endregion

            #region Documentos
            if (solicitacaoCadastroFornecedor.PJPF_TIPO != 2)
            {
                foreach (SOLICITACAO_DOCUMENTOS item in solicitacao.WFD_SOL_DOCUMENTOS)
                {
                    if (item.ARQUIVO_ID != null)
                    {
                        contratanteFornecedor.WFD_PJPF_DOCUMENTOS.Add(new FORNECEDOR_DOCUMENTOS
                        {
                            CONTRATANTE_PJPF_ID    = contratanteFornecedor.ID,
                            ARQUIVO_ID             = item.ARQUIVO_ID,
                            DATA_VENCIMENTO        = item.DATA_VENCIMENTO,
                            DESCRICAO_DOCUMENTO_ID = item.DESCRICAO_DOCUMENTO_ID,
                            LISTA_DOCUMENTO_ID     = item.LISTA_DOCUMENTO_ID,
                            OBRIGATORIO            = item.OBRIGATORIO,
                            EXIGE_VALIDADE         = item.EXIGE_VALIDADE,
                            PERIODICIDADE_ID       = item.PERIODICIDADE_ID,
                            SOLICITACAO_ID         = solicitacao.ID,
                            PJPF_ID = fornecedor.ID
                        });
                    }
                }
            }
            #endregion

            #region Informações Complementares
            foreach (var item in solicitacao.WFD_INFORM_COMPL)
            {
                contratanteFornecedor.WFD_PJPF_INFORM_COMPL.Add(new FORNECEDOR_INFORM_COMPL
                {
                    PERG_ID             = item.PERG_ID,
                    RESPOSTA            = item.RESPOSTA,
                    CONTRATANTE_PJPF_ID = contratanteFornecedor.ID
                });
            }
            #endregion


            CONTRATANTE contratanteAncora = CriarContratante(documento, solicitacaoCadastroFornecedor);

            fornecedor.WFD_CONTRATANTE_PJPF.Add(contratanteFornecedor);
            contratanteAncora.WFD_CONTRATANTE_PJPF.Add(contratanteFornecedor);

            _fornecedorRepository.Inserir(fornecedor);
            _contratanteRepository.Inserir(contratanteAncora);
            _unitOfWork.Finalizar();
            CriacaoUsuarioPadrao(documento, solicitacao.WFD_SOL_MOD_CONTATO.FirstOrDefault().EMAIL);
        }
示例#4
0
        /*
         * public void IncluirNovoContratante(string nome, string documento)
         * {
         *  WFD_CONTRATANTE contratante = new WFD_CONTRATANTE()
         *  {
         *      ATIVO = true,
         *      ATIVO_DT = DateTime.Now,
         *      CNPJ = documento,
         *      COD_WEBFORMAT = "",
         *      CONTRANTE_COD_ERP = "",
         *      DATA_CADASTRO = DateTime.Now,
         *      DATA_NASCIMENTO = null,
         *      ESTILO = "Azul",
         *      EXTENSAO_IMAGEM = ".png",
         *      NOME_FANTASIA = "",
         *      RAZAO_SOCIAL = "",
         *      TIPO_CADASTRO_ID = 1,
         *      TIPO_CONTRATANTE_ID = 1
         *  };
         *  //18.306.371/0001-61
         *  WFD_PJPF fornecedor = new WFD_PJPF()
         *  {
         *      RAZAO_SOCIAL = "",
         *      CNPJ = "",
         *      CPF = "",
         *      TELEFONE = "",
         *      ATIVO = true,
         *      NOME = "",
         *      NOME_FANTASIA = "",
         *      CNAE = "",
         *      INSCR_ESTADUAL = "",
         *      INSCR_MUNICIPAL = "",
         *      ENDERECO = "",
         *      NUMERO = "",
         *      COMPLEMENTO = "",
         *      CEP = "",
         *      BAIRRO = "",
         *      CIDADE = "",
         *      UF = "",
         *      PAIS = "",
         *      EMAIL = "",
         *      RF_SIT_CADASTRAL_CNPJ = "",
         *      IBGE_COD = "",
         *      SINT_IE_COD = "",
         *      SINT_IE_SITU_CADASTRAL = "",
         *      SIMPLES_NACIONAL_SITUACAO = "",
         *      SUFRAMA_SIT_CADASTRAL = "",
         *      SUFRAMA_INSCRICAO = "",
         *      TIPO_PJPF_ID = "",
         *      SITUACAO_ID = "",
         *      ROBO_ID = "",
         *      RF_SIT_CADASTRAL_CNPJ_DT = "",
         *      RF_CONSULTA_DTHR = "",
         *      SINT_DTHR_CONSULTA = "",
         *      SINT_IE_SITU_CADASTRAL_DT = "",
         *      SUFRAMA_SIT_CADASTRAL_VALIDADE = "",
         *      DT_NASCIMENTO = "",
         *      DT_ATUALIZACAO_UNSPSC = "",
         *      T_UF = new T_UF(),
         *      WFD_PJPF_ROBO = ,
         *      WFD_CONTRATANTE_PJPF = ,
         *      WFD_PJPF_CONTRATANTE_ORG_COMPRAS = ,
         *      WFD_PJPF_DOCUMENTOS = ,
         *      WFD_PJPF_ROBO_LOG = ,
         *      WFD_PJPF_UNSPSC = ,
         *      WFD_SOL_MOD_ENDERECO = ,
         *      WFD_SOLICITACAO = ,
         *      WFD_CONTRATANTE = contratante
         *  };
         *
         *  WFD_CONTRATANTE_PJPF contratantePjpf = new WFD_CONTRATANTE_PJPF();
         * }
         * public void IncluirNovoFornecedorIndividual(string nome, string documento)
         * {
         *  //12.310.142/0001-34
         *
         * }
         * //23.048.843/0001-63
         * public void IncluirFornecedor(string nome, string documento, bool prequalificado, string contratante)
         * {
         *  WFD_CONTRATANTE contratanteCH = Processo.Contratante.Buscar(x => x.NOME_FANTASIA.Contains(contratante) && x.RAZAO_SOCIAL.Contains(contratante));
         *  CriarNovoFornecedor(nome, documento, prequalificado, contratanteCH);
         * }
         * public void IncluirFornecedor(string nome, string documento, bool prequalificado)
         * {
         *  WFD_CONTRATANTE contratanteCH = Processo.Contratante.Buscar(x => x.ID == 1);
         *  CriarNovoFornecedor(nome, documento, prequalificado, contratanteCH);
         * }
         */
        public void CriarNovoFornecedor(string nome, string documento, bool prequalificado, CONTRATANTE contratanteCH)
        {
            Fornecedor fornecedor = new Fornecedor
            {
                CONTRATANTE_ID = contratanteCH.ID,
                TIPO_PJPF_ID   = 2,
                RAZAO_SOCIAL   = nome,
                NOME_FANTASIA  = nome,
                NOME           = nome,
                CNPJ           = documento,
                ENDERECO       = "Rua José Domingues",
                NUMERO         = "198",
                BAIRRO         = "Centro",
                CIDADE         = "Rio de Janeiro",
                UF             = "RJ",
                CEP            = "20745-366",
                PAIS           = "BRASIL",
                ATIVO          = true,
            };
            WFD_CONTRATANTE_PJPF contratanteBuscado = _contratanteFornecedor.Buscar(x => x.ID == 33);
            WFD_CONTRATANTE_PJPF contratantePjPf    = new WFD_CONTRATANTE_PJPF
            {
                CATEGORIA_ID       = contratanteBuscado.CATEGORIA_ID,
                CONTRATANTE_ID     = contratanteCH.ID,
                PJPF_COD_ERP       = "E5452",
                PJPF_STATUS_ID     = contratanteBuscado.PJPF_STATUS_ID,
                PJPF_STATUS_ID_SOL = contratanteBuscado.PJPF_STATUS_ID_SOL,
                TP_PJPF            = contratanteBuscado.TP_PJPF,
            };

            //Bancos
            int[] idsBanco = new[] { 46, 48 };
            List <FORNECEDOR_BANCO> listaBancosBuscados = _bancoFornecedorRepository.Listar(x => idsBanco.Contains(x.ID)).ToList();

            foreach (var banco in listaBancosBuscados)
            {
                contratantePjPf.WFD_PJPF_BANCO.Add(new FORNECEDOR_BANCO
                {
                    BANCO_ID            = banco.BANCO_ID,
                    AGENCIA             = banco.AGENCIA,
                    AG_DV               = banco.AG_DV,
                    CONTA               = banco.CONTA,
                    CONTA_DV            = banco.CONTA_DV,
                    ATIVO               = banco.ATIVO,
                    CONTRATANTE_PJPF_ID = contratantePjPf.ID,
                    ARQUIVO_ID          = banco.ARQUIVO_ID,
                    NOME_ARQUIVO        = banco.NOME_ARQUIVO,
                    DATA_UPLOAD         = banco.DATA_UPLOAD,
                    T_BANCO             = banco.T_BANCO
                });
            }
            //Contatos
            int[] idsContatos = new[] { 44, 45 };
            List <FORNECEDOR_CONTATOS> listaContatosBuscados = _contatoFornecedorRepository.Listar(x => idsContatos.Contains(x.ID)).ToList();

            foreach (var contato in listaContatosBuscados)
            {
                contratantePjPf.WFD_PJPF_CONTATOS.Add(new FORNECEDOR_CONTATOS
                {
                    CONTRAT_ORG_COMPRAS_ID = contato.CONTRAT_ORG_COMPRAS_ID,
                    NOME                = contato.NOME,
                    EMAIL               = contato.EMAIL,
                    TELEFONE            = contato.TELEFONE,
                    CELULAR             = contato.CELULAR,
                    CONTRATANTE_PJPF_ID = contratantePjPf.ID,
                    TP_CONTATO_ID       = contato.TP_CONTATO_ID,
                    WFD_T_TP_CONTATO    = contato.WFD_T_TP_CONTATO,
                });
            }
            //Endereços
            int[] idsEnderecos = new[] { 44, 45 };
            List <FORNECEDOR_ENDERECO> listaEnderecosBuscados = _enderecoFornecedorRepository.Listar(x => idsEnderecos.Contains(x.ID)).ToList();

            foreach (var endereco in listaEnderecosBuscados)
            {
                contratantePjPf.WFD_PJPF_ENDERECO.Add(new FORNECEDOR_ENDERECO
                {
                    TP_ENDERECO_ID      = endereco.TP_ENDERECO_ID,
                    ENDERECO            = endereco.ENDERECO,
                    NUMERO              = endereco.NUMERO,
                    COMPLEMENTO         = endereco.COMPLEMENTO,
                    CEP                 = endereco.CEP,
                    BAIRRO              = endereco.BAIRRO,
                    CIDADE              = endereco.CIDADE,
                    UF                  = endereco.UF,
                    PAIS                = endereco.PAIS,
                    CONTRATANTE_PJPF_ID = contratantePjPf.ID,
                    T_UF                = endereco.T_UF,
                });
            }

            fornecedor.WFD_CONTRATANTE_PJPF.Add(contratantePjPf);
            //Robô
            if (prequalificado)
            {
                fornecedor.WFD_PJPF_ROBO = _roboRepository.Buscar(x => x.ID == 1040);

                /*
                 * WFD_PJPF_ROBO roboBuscado = _roboFornecedorRepository.Buscar(x => x.ID == 890);
                 * fornecedor.WFD_PJPF_ROBO = new WFD_PJPF_ROBO
                 * {
                 *  ROBO_DT_EXEC = roboBuscado.ROBO_DT_EXEC,
                 *  SOLICITACAO_ID = roboBuscado.SOLICITACAO_ID,
                 *  CPF = roboBuscado.CPF,
                 *  CNPJ = documento,
                 *  RECEITA_FEDERAL_RAZAO_SOCIAL = roboBuscado.RECEITA_FEDERAL_RAZAO_SOCIAL,
                 *  RF_NOME_FANTASIA = roboBuscado.RF_NOME_FANTASIA,
                 *  RF_NOME = roboBuscado.RF_NOME,
                 *  RF_LOGRADOURO = roboBuscado.RF_LOGRADOURO,
                 *  RF_NUMERO = roboBuscado.RF_NUMERO,
                 *  RF_COMPLEMENTO = roboBuscado.RF_COMPLEMENTO,
                 *  RF_BAIRRO = roboBuscado.RF_BAIRRO,
                 *  RF_MUNICIPIO = roboBuscado.RF_MUNICIPIO,
                 *  RF_UF = roboBuscado.RF_UF,
                 *  RF_CEP = roboBuscado.RF_CEP,
                 *  RF_SIT_CADASTRAL_CNPJ = "ATIVA",
                 *  RF_SIT_CADSTRAL_CNPJ_DT = roboBuscado.RF_SIT_CADSTRAL_CNPJ_DT,
                 *  RF_SIT_ESPECIAL_CNPJ = roboBuscado.RF_SIT_ESPECIAL_CNPJ,
                 *  RF_SIT_ESPECIAL_CNPJ_DT = roboBuscado.RF_SIT_ESPECIAL_CNPJ_DT,
                 *  RF_MOTIVO_CNPJ_SITU_CADASTRAL = roboBuscado.RF_MOTIVO_CNPJ_SITU_CADASTRAL,
                 *  RF_CNPJ_DT_ABERTURA = roboBuscado.RF_CNPJ_DT_ABERTURA,
                 *  RF_CNAE_COD_PRINCIPAL = roboBuscado.RF_CNAE_COD_PRINCIPAL,
                 *  RF_CNAE_DSC_PRINCIPAL = roboBuscado.RF_CNAE_DSC_PRINCIPAL,
                 *  RF_CNAE_COD_OUTROS = roboBuscado.RF_CNAE_COD_OUTROS,
                 *  RF_CNAE_DSC_OUTROS = roboBuscado.RF_CNAE_DSC_OUTROS,
                 *  RF_MATRIZ_FILIAL = roboBuscado.RF_MATRIZ_FILIAL,
                 *  RF_COD_NATUREZA_JURIDICA = roboBuscado.RF_COD_NATUREZA_JURIDICA,
                 *  RF_DSC_NATUREZA_JURIDICA = roboBuscado.RF_DSC_NATUREZA_JURIDICA,
                 *  RF_CONSULTA_DTHR = roboBuscado.RF_CONSULTA_DTHR,
                 *  IBGE_COD = roboBuscado.IBGE_COD,
                 *  SINTEGRA_ERRO_ORIGINAL = roboBuscado.SINTEGRA_ERRO_ORIGINAL,
                 *  SINT_IE_QTD = roboBuscado.SINT_IE_QTD,
                 *  SINT_IE_MULTIPLA = roboBuscado.SINT_IE_MULTIPLA,
                 *  SINT_IE_MULTIPLA_CODIGOS = roboBuscado.SINT_IE_MULTIPLA_CODIGOS,
                 *  SINT_IE_MULTIPLA_SITUACAO = roboBuscado.SINT_IE_MULTIPLA_SITUACAO,
                 *  SINT_IE_COD = roboBuscado.SINT_IE_COD,
                 *  SINT_CONSULTA_DTHR = roboBuscado.SINT_CONSULTA_DTHR,
                 *  SINT_IE_SITU_CADASTRAL = "HABILITADO",
                 *  SINT_IE_SITU_CADSTRAL_DT = roboBuscado.SINT_IE_SITU_CADSTRAL_DT,
                 *  SINT_INCLUSAO_DT = roboBuscado.SINT_INCLUSAO_DT,
                 *  SINT_BAIXA_DT = roboBuscado.SINT_BAIXA_DT,
                 *  SINT_BAIXA_MOTIVO = roboBuscado.SINT_BAIXA_MOTIVO,
                 *  SINT_EMAIL = roboBuscado.SINT_EMAIL,
                 *  SINT_REGIME_APURACAO = roboBuscado.SINT_REGIME_APURACAO,
                 *  SINT_ENQUADRAMENTO_FISCAL = roboBuscado.SINT_ENQUADRAMENTO_FISCAL,
                 *  SINT_TEL = roboBuscado.SINT_TEL,
                 *  SINT_CAD_PROD_RURAL = roboBuscado.SINT_CAD_PROD_RURAL,
                 *  SINT_COMPLEMENTO = roboBuscado.SINT_COMPLEMENTO,
                 *  SINT_RAZAO_SOCIAL = roboBuscado.SINT_RAZAO_SOCIAL,
                 *  SINT_CNPJ = roboBuscado.SINT_CNPJ,
                 *  SINT_BAIRRO = roboBuscado.SINT_BAIRRO,
                 *  SINT_LOGRADOURO = roboBuscado.SINT_LOGRADOURO,
                 *  SINT_NUMERO = roboBuscado.SINT_NUMERO,
                 *  SINT_CEP = roboBuscado.SINT_CEP,
                 *  SINT_MUNICIPIO = roboBuscado.SINT_MUNICIPIO,
                 *  SINT_UF = roboBuscado.SINT_UF,
                 *  SINT_ATIVIDADE_PRINCIPAL = roboBuscado.SINT_ATIVIDADE_PRINCIPAL,
                 *  SIMPLES_NACIONAL_SITUACAO = roboBuscado.SIMPLES_NACIONAL_SITUACAO,
                 *  SN_SITUACAO_SIMEI = roboBuscado.SN_SITUACAO_SIMEI,
                 *  SN_PERIODOS_ANTERIORES = roboBuscado.SN_PERIODOS_ANTERIORES,
                 *  SN_SIMEI_PERIODOS_ANTERIORES = roboBuscado.SN_SIMEI_PERIODOS_ANTERIORES,
                 *  SN_AGENDAMENTOS = roboBuscado.SN_AGENDAMENTOS,
                 *  SN_RAZAO_SOCIAL = roboBuscado.SN_RAZAO_SOCIAL,
                 *  CORREIOS_TP_LOGRADOURO = roboBuscado.CORREIOS_TP_LOGRADOURO,
                 *  CORR_LOGRADOURO = roboBuscado.CORR_LOGRADOURO,
                 *  CORR_COMPLEMENTO = roboBuscado.CORR_COMPLEMENTO,
                 *  CORR_BAIRRO = roboBuscado.CORR_BAIRRO,
                 *  CORR_BAIRRO_COMPL = roboBuscado.CORR_BAIRRO_COMPL,
                 *  CORR_UF = roboBuscado.CORR_UF,
                 *  CORR_MUNICIPIO = roboBuscado.CORR_MUNICIPIO,
                 *  CORR_CEP = roboBuscado.CORR_CEP,
                 *  SUFRAMA_ERRO_MENSAGEM = roboBuscado.SUFRAMA_ERRO_MENSAGEM,
                 *  SUFRAMA_SIT_CADASTRAL = roboBuscado.SUFRAMA_SIT_CADASTRAL,
                 *  SUFRAMA_INSCRICAO = roboBuscado.SUFRAMA_INSCRICAO,
                 *  SUFRAMA_TEL = roboBuscado.SUFRAMA_TEL,
                 *  SUFRAMA_SIT_CADASTRAL_VALIDADE = roboBuscado.SUFRAMA_SIT_CADASTRAL_VALIDADE,
                 *  SUFRAMA_INCENTIVOS = roboBuscado.SUFRAMA_INCENTIVOS,
                 *  SUFRAMA_EMAIL = roboBuscado.SUFRAMA_EMAIL,
                 *  RF_CERTIFICADO_HTML = roboBuscado.RF_CERTIFICADO_HTML,
                 *  SINT_CERTIFICADO_HTML = roboBuscado.SINT_CERTIFICADO_HTML,
                 *  SN_CONSULTA_DTHR = roboBuscado.SN_CONSULTA_DTHR,
                 *  SUFRAMA_CONSULTA_DTHR = roboBuscado.SUFRAMA_CONSULTA_DTHR,
                 *  CORR_CONSULTA_DTHR = roboBuscado.CORR_CONSULTA_DTHR,
                 *  RF_CONTADOR_TENTATIVA = roboBuscado.RF_CONTADOR_TENTATIVA,
                 *  SINT_CONTADOR_TENTATIVA = roboBuscado.SINT_CONTADOR_TENTATIVA,
                 *  SN_CONTADOR_TENTATIVA = roboBuscado.SN_CONTADOR_TENTATIVA,
                 *  SUFRAMA_CONTADOR_TENTATIVA = roboBuscado.SUFRAMA_CONTADOR_TENTATIVA,
                 *  CORR_CONTADOR_TENTATIVA = roboBuscado.CORR_CONTADOR_TENTATIVA,
                 *  SUFRAMA_CERTIFICADO_HTML = roboBuscado.SUFRAMA_CERTIFICADO_HTML,
                 *  CORR_CERTIFICADO_HTML = roboBuscado.CORR_CERTIFICADO_HTML,
                 *  RF_CODE_ROBO = roboBuscado.RF_CODE_ROBO,
                 *  SINT_CODE_ROBO = roboBuscado.SINT_CODE_ROBO,
                 *  SN_CODE_ROBO = roboBuscado.SN_CODE_ROBO
                 * };
                 */
            }
            //UNSPSC

            //int[] idUnspsc = new[] { 110, 111, 112 };
            int[] idUnspsc = new[] { 4795, 4797, 4800, 4807, 5952 };
            List <FORNECEDOR_UNSPSC> unspscBuscado = _unspscFornecedorRepository.Listar(x => idUnspsc.Contains(x.ID)).ToList();

            foreach (var unspsc in unspscBuscado)
            {
                unspsc.PJPF_ID = fornecedor.ID;
                fornecedor.FornecedorServicoMaterialList.Add(unspsc);
            }
            _fornecedorRepository.Inserir(fornecedor);
        }
        /// <summary>
        /// CN.02 Pré - Configurar a Aplicação (Contratante)
        /// Os valores das tabelas abaixo são definidos pelo CONTRATANTE e devem ser especificadas nas implantações.
        /// Estes valores determinarão como a aplicação funcionará conforme as regras parametrizadas pelo Contratado.
        /// </summary>
        public void IncluirContratanteAncora(AdesaoContratante contratante)
        {
            //Incluir Contratante
            CONTRATANTE ancora = new CONTRATANTE();

            ancora.TIPO_CADASTRO_ID    = (int)contratante.TipoEmpresa;
            ancora.TIPO_CONTRATANTE_ID = (int)contratante.TipoContratante;
            ancora.DATA_CADASTRO       = DateTime.Now;
            ancora.ATIVO             = true;
            ancora.ATIVO_DT          = DateTime.Now;
            ancora.CNPJ              = contratante.Documento;
            ancora.RAZAO_SOCIAL      = contratante.RazaoSocial;
            ancora.NOME_FANTASIA     = contratante.NomeFantasia;
            ancora.COD_WEBFORMAT     = contratante.CodigoWebformat;
            ancora.CONTRANTE_COD_ERP = contratante.CodigoErp;
            ancora.ESTILO            = contratante.CodigoErp;

            //•	WFD_CONTRATANTE_CONFIG - Define dados particulares do contratante(Manualmente)
            CONTRATANTE_CONFIGURACAO config = _contratanteConfig.BuscarPorId(1);

            ancora.WFD_CONTRATANTE_CONFIG = new CONTRATANTE_CONFIGURACAO()
            {
                SOLICITA_DOCS         = config.SOLICITA_DOCS,
                SOLICITA_FICHA_CAD    = config.SOLICITA_FICHA_CAD,
                LOGOTIPO              = config.LOGOTIPO,
                TERMO_ACEITE          = config.TERMO_ACEITE,
                ROBO_CICLO_ATU        = config.ROBO_CICLO_ATU,
                ROBO_DT_PROX_EXEC     = config.ROBO_DT_PROX_EXEC,
                BLOQUEIO_MANUAL       = config.BLOQUEIO_MANUAL,
                BLOQUIEO_MANUAL_PRAZO = config.BLOQUIEO_MANUAL_PRAZO,
                TOTAL_TENTATIVA_ROBO  = config.TOTAL_TENTATIVA_ROBO,
                NIVEIS_CATEGORIA      = config.NIVEIS_CATEGORIA,
                QTD_ROBO_SIMULTANEA   = config.QTD_ROBO_SIMULTANEA,
                PRAZO_ENTREGA_FICHA   = config.PRAZO_ENTREGA_FICHA,
                FORNECEDOR_CARGA      = config.FORNECEDOR_CARGA,
                FORNECEDOR_RETORNO    = config.FORNECEDOR_RETORNO,
                CLIENTE_CARGA         = config.CLIENTE_CARGA,
                CLIENTE_RETORNO       = config.CLIENTE_RETORNO,
                CONTRATANTE_ID        = 0
            };

            //•	WFD_CONTRATANTE_CONFIG_EMAIL - Define os emails que o contratante envia (Manualmente)
            var contratanteConfiguracaoEmails = _contratanteConfigEmail.ListarTodosPorIdContratante(1);

            contratanteConfiguracaoEmails.ForEach(x =>
            {
                ancora.WFD_CONTRATANTE_CONFIG_EMAIL.Add(
                    new CONTRATANTE_CONFIGURACAO_EMAIL
                {
                    ASSUNTO     = x.ASSUNTO,
                    CORPO       = x.CORPO,
                    EMAIL_TP_ID = x.EMAIL_TP_ID
                });
            });

            //•	WFD_CONTRATANTE_FUNCAO - Define quais funções o contratante tem acesso.Se o contratante não for associado a uma função nesta tabela,
            // esta função não parecerá na tela de cadastro de novos perfis. (Manualmente)
            List <FUNCAO> funcao = _funcao.Listar().Where(x => x.ID == 7 || x.FUNCAO_PAI == 7).ToList();

            ancora.WAC_FUNCAO = funcao;

            //•	WFD_CONTRATANTE_LOG – Não é usado

            //•	WFD_CONTRATANTE_ORG_COMPRAS – Define as organizações de compras que um contratante pode ter.
            //é necessário ao menos uma organização(Manualmente).
            var organizacoesDeCompras = _contratanteOrgCompras.ListarTodosPorIdContratante(1);

            organizacoesDeCompras.ForEach(x =>
            {
                ancora.WFD_CONTRATANTE_ORG_COMPRAS.Add(
                    new CONTRATANTE_ORGANIZACAO_COMPRAS
                {
                    ORG_COMPRAS_COD = x.ORG_COMPRAS_COD,
                    ORG_COMPRAS_DSC = x.ORG_COMPRAS_DSC
                });
            });

            //•	WFD_TIPO_DOCUMENTOS – Grupo de documentos que o contratante e o fornecedor irão usar para armazenar seus arquivos.
            //Inicialmente será populada com a tabela WFD_TIPO_DOCUMENTOS_CH Manualmente.
            var tipoDocumentos = _tipoDocumentoRepository.Listar(x => x.Valido(x) && x.CONTRATANTE_ID == 1, e => e.DESCRICAO).ToList();

            tipoDocumentos.ForEach(x =>
            {
                ancora.WFD_TIPO_DOCUMENTOS.Add(
                    new TIPO_DOCUMENTOS
                {
                    ATIVO                 = x.ATIVO,
                    DESCRICAO             = x.DESCRICAO,
                    TIPO_DOCUMENTOS_CH_ID = x.TIPO_DOCUMENTOS_CH_ID,
                });
            });

            //•	WFD_DESCRICAO_DOCUMENTOS – São os documentos do grupo de documentos que o contratante e o fornecedor usarão
            //para armazenar seus arquivos.Inicialmente será populada com a tabela WFD_DESCRICAO_DOCUMENTOS_CH Manualmente.
            var descricaoDocumentos = _descricaoDocumentoRepository.Listar(e => e.ATIVO && e.CONTRATANTE_ID == 1).ToList();

            descricaoDocumentos.ForEach(x =>
            {
                ancora.WFD_DESCRICAO_DOCUMENTOS.Add(
                    new WFD_DESCRICAO_DOCUMENTOS
                {
                    ATIVO     = x.ATIVO,
                    DESCRICAO = x.DESCRICAO,
                    DESCRICAO_DOCUMENTOS_CH_ID = x.DESCRICAO_DOCUMENTOS_CH_ID,
                    TIPO_DOCUMENTOS_ID         = x.TIPO_DOCUMENTOS_ID
                });
            });
            //•	WFD_GRUPO – Define o grupo de empresas que o contratante faz parte.
            //Se o contratante não tive grupo é necessário criar ao menos um grupo pra ele. (Manualmente)
            //•	WFD_GRUPO_CONTRATANTE – Associa os contratantes ao grupo de empresa.
            var grupos = _grupoRepository.BuscarPorId(1);

            ancora.WFD_GRUPO.Add(new GRUPO
            {
                GRUPO_NM = contratante.Grupo
            });


            //•	WFD_PJPF_CATEGORIA – Inicialmente serão as categorias armazenadas na tabela WFD_PJPF_CATEGORIA_CH (Manualmente).
            var categorias = _categoriaFornecedorRepository.ListarPorContratanteId(1);

            categorias.ForEach(x =>
            {
                ancora.WFD_PJPF_CATEGORIA.Add(new FORNECEDOR_CATEGORIA
                {
                    ATIVO                      = x.ATIVO,
                    CATEGORIA_PAI_ID           = x.CATEGORIA_PAI_ID,
                    CODIGO                     = x.CODIGO,
                    DESCRICAO                  = x.DESCRICAO,
                    ISENTO_CONTATOS            = x.ISENTO_CONTATOS,
                    ISENTO_DADOSBANCARIOS      = x.ISENTO_DADOSBANCARIOS,
                    ISENTO_DOCUMENTOS          = x.ISENTO_DOCUMENTOS,
                    PJPF_CATEGORIA_CH_ID       = x.PJPF_CATEGORIA_CH_ID,
                    QIC_QUESTIONARIO_CATEGORIA = x.QIC_QUESTIONARIO_CATEGORIA
                });
            });

            //•	WFD_USUARIO – Necessário criar um usuário Administrador Manualmente para o novo contratante.
            ancora.WFD_USUARIO.Add(new Domain.Models.USUARIO
            {
                ATIVO           = true,
                CONTA_TENTATIVA = 0,
                DAT_NASCIMENTO  = DateTime.Now,
                DT_CRIACAO      = DateTime.Now,
                EXPIRA_EM_DIAS  = 0,
                PRIMEIRO_ACESSO = true,
                CPF_CNPJ        = contratante.UsuarioAdministrador.Documento,
                PRINCIPAL       = contratante.UsuarioAdministrador.Administrador,
                CARGO           = contratante.UsuarioAdministrador.Cargo,
                EMAIL           = contratante.UsuarioAdministrador.Email,
                LOGIN           = contratante.UsuarioAdministrador.Login,
                SENHA           = "1000:GOVDjUgvS4PqbgHkr6Q3uRmFXy5EFPD5:V+GLrEZIIoGcY1h0gwFMVR+AiPdcSHy9",
                NOME            = contratante.UsuarioAdministrador.Nome,
            });

            //•	WFL_FLUXO – Define todos os fluxos que o contratante âncora terá no sistema.
            //Inicialmente copiar os fluxos do contratante CH manualmente.
            var fluxos = _fluxo.BuscarPorContratanteId(1);

            fluxos.ForEach(x =>
            {
                ancora.WFL_FLUXO.Add(new FLUXO
                {
                    FLUXO_NM        = x.FLUXO_NM,
                    CONTRATANTE_ID  = x.CONTRATANTE_ID,
                    APLICACAO_ID    = x.APLICACAO_ID,
                    PAPEL_INI_FLUXO = x.PAPEL_INI_FLUXO,
                    FLUXO_TP_ID     = x.FLUXO_TP_ID
                });
            });

            //•	WFL_FLUXO_SEQ_PRE_REQUIS – por enquanto não é usado.

            //•	WFL_USUARIO_PAPEL – Associar o usuário Administrador aos papeis necessários ou a todos.
            var papeis = _papelRepository.ListarPorContratanteId(1);

            papeis.ForEach(x =>
            {
                ancora.WFL_PAPEL.Add(new WFL_PAPEL
                {
                    PAPEL_NM    = x.PAPEL_NM,
                    PAPEL_SGL   = x.PAPEL_SGL,
                    PAPEL_TP_ID = 50
                });
            });

            //•	WAC_PERFIL - É preciso criar um perfil Administrador Inicial (Manualmente)
            var perfis = _perfilRepository.ListarPorContratanteId(1);

            perfis.ForEach(x =>
            {
                ancora.WAC_PERFIL.Add(new Perfil
                {
                    PERFIL_DSC = x.PERFIL_DSC,
                    PERFIL_NM  = x.PERFIL_NM
                });
            });
            //•	WFD_CONTRATANTE - Necessário Criar o Contratante(Manualmente)
            _contratante.Inserir(ancora);
            _unitOfWok.Finalizar();
            //•	WFL_FLUXO_SEQUENCIA – Define a sequência que cada Fluxo irá seguir no workflow.
            //Inicialmente copiar do contratante CH Manualmente.
            var fluxosContratantenovo = _fluxo.BuscarPorContratanteId(ancora.ID);

            fluxosContratantenovo.ForEach(y =>
            {
                var fluxoSequenciais = _fluxoSequencia.ListarPorContratanteIdEFluxoTipoId(1, y.FLUXO_TP_ID);
                fluxoSequenciais.ForEach(x =>
                {
                    ancora.WFL_FLUXO_SEQUENCIA.Add(new FLUXO_SEQUENCIA
                    {
                        CONTRATANTE_ID       = ancora.ID,
                        FLUXO_ID             = y.ID,
                        SEQUENCIA            = x.SEQUENCIA,
                        PAPEL_ID_INI         = x.PAPEL_ID_INI,
                        PAPEL_ID_FIM         = x.PAPEL_ID_FIM,
                        FLUXO_ETAPA_NM       = x.FLUXO_ETAPA_NM,
                        FLUXO_ETAPA_DSC      = x.FLUXO_ETAPA_DSC,
                        FLUXO_SEQ_ANTERIOR   = x.FLUXO_SEQ_ANTERIOR,
                        GRUPO_ORIGEM         = x.GRUPO_ORIGEM,
                        GRUPO_DESTINO        = x.GRUPO_DESTINO,
                        EXECUCAO_MANUAL      = x.EXECUCAO_MANUAL,
                        APROV_SEM_ROBO       = x.APROV_SEM_ROBO,
                        BLOQ_INATIVO_RECEITA = x.BLOQ_INATIVO_RECEITA,
                    });
                });
            });
            //contratanteAncora.WFL_FLUXO_SEQUENCIA = fluxoSequenciais;


            _contratante.Alterar(ancora);
            _unitOfWok.Finalizar();

            ancora.USUARIO_ID = ancora.WFD_USUARIO.FirstOrDefault().ID;
            _contratante.Alterar(ancora);
            _unitOfWok.Finalizar();
        }