Example #1
0
        public Response IntregrarFichasChronos(int oportunidadeId, int fichaId)
        {
            try
            {
                var oportunidadeBusca = _oportunidadeDAO.ObterOportunidadePorId(oportunidadeId);

                if (oportunidadeBusca == null)
                {
                    return new Response
                           {
                               Sucesso  = false,
                               Mensagem = $"Oportunidade {oportunidadeId} não encontrada"
                           }
                }
                ;

                if (oportunidadeBusca.TabelaId == 0)
                {
                    return new Response
                           {
                               Sucesso  = false,
                               Mensagem = $"Oportunidade {oportunidadeId} não possui nenhuma Tabela vinculada"
                           }
                }
                ;

                var fichaBusca = _oportunidadeDAO.ObterFichaFaturamentoPorId(fichaId);

                if (fichaBusca == null)
                {
                    return new Response
                           {
                               Sucesso  = false,
                               Mensagem = $"Ficha {fichaId} não encontrada"
                           }
                }
                ;

                if (fichaBusca.StatusFichaFaturamento != StatusFichaFaturamento.APROVADO && fichaBusca.StatusFichaFaturamento != StatusFichaFaturamento.EM_APROVACAO)
                {
                    return new Response
                           {
                               Sucesso  = false,
                               Mensagem = $"O Status atual da Ficha não permite integrações com o Chronos"
                           }
                }
                ;

                if (!string.IsNullOrEmpty(fichaBusca.FaturadoContraDocumento))
                {
                    var faturadoContraChronos = _tabelasDAO.ConsultaParceiro(fichaBusca.FaturadoContraDocumento);

                    if (faturadoContraChronos == null)
                    {
                        var parceiro = new Parceiro
                        {
                            RazaoSocial  = fichaBusca.FaturadoContraDescricao,
                            NomeFantasia = fichaBusca.FaturadoContraFantasia,
                            CNPJ         = fichaBusca.FaturadoContraDocumento
                        };

                        fichaBusca.FaturadoContraId = _tabelasDAO.CadastrarParceiro(parceiro);
                    }
                    else
                    {
                        fichaBusca.FaturadoContraId = faturadoContraChronos.Id;
                    }
                }

                if (!string.IsNullOrEmpty(fichaBusca.FontePagadoraDocumento))
                {
                    var fontePagadoraChronos = _tabelasDAO.ConsultaParceiro(fichaBusca.FontePagadoraDocumento);

                    if (fontePagadoraChronos == null)
                    {
                        var parceiro = new Parceiro
                        {
                            RazaoSocial  = fichaBusca.FontePagadoraDescricao,
                            NomeFantasia = fichaBusca.FontePagadoraFantasia,
                            CNPJ         = fichaBusca.FontePagadoraDocumento
                        };

                        fichaBusca.FontePagadoraId = _tabelasDAO.CadastrarParceiro(parceiro);
                    }
                    else
                    {
                        fichaBusca.FontePagadoraId = fontePagadoraChronos.Id;
                    }
                }

                var ehFichaGeral = (oportunidadeBusca.ContaId == fichaBusca.ContaId);

                fichaBusca.FichaGeral = ehFichaGeral;

                var subClientes = _oportunidadeDAO.ObterSubClientesOportunidade(oportunidadeBusca.Id);

                fichaBusca.SubClientes.AddRange(subClientes);

                _oportunidadeDAO.IntegrarFontePagadora(fichaBusca);

                return(new Response
                {
                    Sucesso = true,
                    Mensagem = $"Ficha de Faturamento integrada com sucesso!"
                });
            }
            catch (Exception ex)
            {
                return(new Response
                {
                    Sucesso = true,
                    Mensagem = ex.Message
                });
            }
        }
Example #2
0
        public void IntegrarGrupoFontePagadora(OportunidadeFicha ficha)
        {
            using (OracleConnection con = new OracleConnection(Configuracoes.StringConexao()))
            {
                con.Open();

                using (var transaction = con.BeginTransaction())
                {
                    try
                    {
                        var parametrosGrupo = new DynamicParameters();

                        parametrosGrupo.Add(name: "FaturadoContraId", value: ficha.FaturadoContraId, direction: ParameterDirection.Input);
                        parametrosGrupo.Add(name: "FontePagadoraId", value: ficha.FontePagadoraId, direction: ParameterDirection.Input);
                        parametrosGrupo.Add(name: "ContaId", value: ficha.ContaId, direction: ParameterDirection.Input);
                        parametrosGrupo.Add(name: "FichaId", value: ficha.Id, direction: ParameterDirection.Input);
                        parametrosGrupo.Add(name: "TabelaId", value: ficha.TabelaId, direction: ParameterDirection.Input);
                        parametrosGrupo.Add(name: "DataCorte", value: ficha.DataCorte, direction: ParameterDirection.Input);
                        parametrosGrupo.Add(name: "EmailFaturamento", value: ficha.EmailFaturamento, direction: ParameterDirection.Input);
                        parametrosGrupo.Add(name: "CondicaoPagamentoFaturamentoId", value: ficha.CondicaoPagamentoFaturamentoId, direction: ParameterDirection.Input);
                        parametrosGrupo.Add(name: "EntregaEletronica", value: ficha.EntregaEletronica.ToInt(), direction: ParameterDirection.Input);
                        parametrosGrupo.Add(name: "EntregaManual", value: ficha.EntregaManual.ToInt(), direction: ParameterDirection.Input);
                        parametrosGrupo.Add(name: "CorreiosComum", value: ficha.CorrreiosComum.ToInt(), direction: ParameterDirection.Input);
                        parametrosGrupo.Add(name: "CorreiosSedex", value: ficha.CorreiosSedex.ToInt(), direction: ParameterDirection.Input);
                        parametrosGrupo.Add(name: "DiaUtil", value: ficha.DiaUtil.ToInt(), direction: ParameterDirection.Input);
                        parametrosGrupo.Add(name: "UltimoDiaDoMes", value: ficha.UltimoDiaDoMes.ToInt(), direction: ParameterDirection.Input);
                        parametrosGrupo.Add(name: "DiasFaturamento", value: ficha.DiasFaturamento, direction: ParameterDirection.Input);
                        parametrosGrupo.Add(name: "OportunidadeId", value: ficha.OportunidadeId, direction: ParameterDirection.Input);
                        parametrosGrupo.Add(name: "FichaId", value: ficha.Id, direction: ParameterDirection.Input);

                        if (!string.IsNullOrEmpty(ficha.ContaDocumento))
                        {
                            var subClienteChronos = _tabelasDAO.ConsultaParceiroFontePagadora(ficha.ContaDocumento, ficha.TabelaId, ficha.SegmentoSubCliente);

                            if (subClienteChronos == null)
                            {
                                var parceiro = new Parceiro
                                {
                                    RazaoSocial  = subClienteChronos.RazaoSocial,
                                    NomeFantasia = subClienteChronos.NomeFantasia,
                                    CNPJ         = subClienteChronos.CNPJ
                                };

                                ficha.ContaId = _tabelasDAO.CadastrarParceiro(parceiro);
                            }
                            else
                            {
                                ficha.ContaId = subClienteChronos.Id;
                            }
                        }

                        parametrosGrupo.Add(name: "SubClienteId", value: ficha.ContaId, direction: ParameterDirection.Input);

                        con.Execute("DELETE FROM SGIPA.TB_DADOS_FAT_GRU_DIAS WHERE AUTONUM_FONTE_PAGADORA IN (SELECT AUTONUM FROM SGIPA.TB_DADOS_FATURAMENTO_IPA_GRP WHERE OPORTUNIDADE_ID = :OportunidadeId AND AUTONUM_GRUPO_LISTA = :SubClienteId)", parametrosGrupo, transaction);
                        con.Execute("DELETE FROM SGIPA.TB_DADOS_FAT_GRU_DIAS_SEMANA WHERE AUTONUM_FONTE_PAGADORA IN (SELECT AUTONUM FROM SGIPA.TB_DADOS_FATURAMENTO_IPA_GRP WHERE OPORTUNIDADE_ID = :OportunidadeId AND AUTONUM_GRUPO_LISTA = :SubClienteId)", parametrosGrupo, transaction);
                        con.Execute("DELETE FROM SGIPA.TB_DADOS_FAT_GRU_COND_PG_DIAS WHERE AUTONUM_FONTE_PAGADORA IN (SELECT AUTONUM FROM SGIPA.TB_DADOS_FATURAMENTO_IPA_GRP WHERE OPORTUNIDADE_ID = :OportunidadeId AND AUTONUM_GRUPO_LISTA = :SubClienteId)", parametrosGrupo, transaction);
                        con.Execute("DELETE FROM SGIPA.TB_DADOS_FATURAMENTO_IPA_GRP WHERE OPORTUNIDADE_ID = :OportunidadeId AND AUTONUM_GRUPO_LISTA = :SubClienteId", parametrosGrupo, transaction);

                        parametrosGrupo.Add(name: "SequenciaGrupo", dbType: DbType.Int32, direction: ParameterDirection.Output);

                        con.Execute($@"
                                INSERT INTO SGIPA.TB_DADOS_FATURAMENTO_IPA_GRP 
                                    (
                                        AUTONUM,
                                        AUTONUM_LISTA,
                                        AUTONUM_CLIENTE_NOTA,
                                        AUTONUM_CLIENTE_ENVIO_NOTA,
                                        AUTONUM_CLIENTE_PAGAMENTO,
                                        AUTONUM_GRUPO_LISTA,
                                        CORTE,
                                        DIA,
                                        EMAIL,
                                        AUTONUM_FORMA_PAGAMENTO,
                                        FLAG_ENTREGA_ELETRONICA,
                                        FLAG_ENTREGA_MANUAL,
                                        FLAG_ENVIO_CORREIO_COMUM,
                                        FLAG_ENVIO_CORREIO_SEDEX,
                                        FLAG_ULTIMO_DIA_DO_MES_VCTO,
                                        FLAG_VENCIMENTO_DIA_UTIL,
                                        OPORTUNIDADE_ID,
                                        FICHA_ID,
                                        DATA_INTEGRACAO
                                    ) VALUES (
                                        SGIPA.SEQ_DADOS_FATURAMENTO_IPA_GRP.NEXTVAL,  
                                        :TabelaId,
                                        :FaturadoContraId,
                                        :ContaId,
                                        :FontePagadoraId,
                                        :SubClienteId,
                                        :DataCorte,
                                        :DiasFaturamento,
                                        :EmailFaturamento,
                                        :CondicaoPagamentoFaturamentoId,
                                        :EntregaEletronica,
                                        :EntregaManual,
                                        :CorreiosComum,
                                        :CorreiosSedex,
                                        :UltimoDiaDoMes,
                                        :DiaUtil,
                                        :OportunidadeId,
                                        :FichaId,
                                        SYSDATE
                                    ) RETURNING AUTONUM INTO :SequenciaGrupo", parametrosGrupo, transaction);

                        var sequenciaGrupo = parametrosGrupo.Get <int>("SequenciaGrupo");

                        if (ficha.DiasSemana != null)
                        {
                            foreach (var diaSemana in ficha.DiasSemana.Split(','))
                            {
                                var parametrosDiaSemana = new DynamicParameters();

                                parametrosDiaSemana.Add(name: "Dia", value: ConverteDiaSemanaIPA.DiaSemana(diaSemana), direction: ParameterDirection.Input);
                                parametrosDiaSemana.Add(name: "SequenciaFontePagadora", value: sequenciaGrupo, direction: ParameterDirection.Input);

                                con.Execute("INSERT INTO SGIPA.TB_DADOS_FAT_GRU_DIAS_SEMANA (AUTONUM, AUTONUM_FONTE_PAGADORA, DIA) VALUES (SGIPA.SEQ_DADOS_FAT_IPA_DIAS_SEMANA.NEXTVAL, :SequenciaFontePagadora, :Dia)", parametrosDiaSemana, transaction);
                            }
                        }

                        if (ficha.CondicaoPgtoDiaSemana != null)
                        {
                            foreach (var diaFaturamento in ficha.CondicaoPgtoDiaSemana.Split(','))
                            {
                                var parametrosDiaPgto = new DynamicParameters();

                                parametrosDiaPgto.Add(name: "Dia", value: ConverteDiaSemanaIPA.DiaSemana(diaFaturamento), direction: ParameterDirection.Input);
                                parametrosDiaPgto.Add(name: "SequenciaFontePagadora", value: sequenciaGrupo, direction: ParameterDirection.Input);

                                con.Execute("INSERT INTO SGIPA.TB_DADOS_FAT_GRU_COND_PG_DIAS (AUTONUM, AUTONUM_FONTE_PAGADORA, DIA) VALUES (SGIPA.SEQ_DADOS_FAT_IPA_DIAS_FAT.NEXTVAL, :SequenciaFontePagadora, :Dia)", parametrosDiaPgto, transaction);
                            }
                        }

                        if (ficha.DiasFaturamento != null)
                        {
                            foreach (var dia in ficha.DiasFaturamento.Split(','))
                            {
                                var parametrosDiaPgto = new DynamicParameters();

                                parametrosDiaPgto.Add(name: "Dia", value: dia, direction: ParameterDirection.Input);
                                parametrosDiaPgto.Add(name: "SequenciaFontePagadora", value: sequenciaGrupo, direction: ParameterDirection.Input);

                                con.Execute("INSERT INTO SGIPA.TB_DADOS_FAT_GRU_DIAS (AUTONUM, AUTONUM_FONTE_PAGADORA, DIA) VALUES (SGIPA.SEQ_DADOS_FAT_GRU_DIAS_FAT.NEXTVAL, :SequenciaFontePagadora, :Dia)", parametrosDiaPgto, transaction);
                            }
                        }

                        if (ficha.CondicaoPgtoDia != null)
                        {
                            foreach (var dia in ficha.CondicaoPgtoDia.Split(','))
                            {
                                var parametrosDiaPgto = new DynamicParameters();

                                parametrosDiaPgto.Add(name: "Dia", value: dia, direction: ParameterDirection.Input);
                                parametrosDiaPgto.Add(name: "SequenciaFontePagadora", value: sequenciaGrupo, direction: ParameterDirection.Input);

                                con.Execute("INSERT INTO SGIPA.TB_DADOS_FAT_GRU_DIAS_PGTO (AUTONUM, AUTONUM_FONTE_PAGADORA, DIA) VALUES (SGIPA.SEQ_DADOS_FAT_GRU_DIAS_PGTO.NEXTVAL, :SequenciaFontePagadora, :Dia)", parametrosDiaPgto, transaction);
                            }
                        }

                        transaction.Commit();
                    }
                    catch (System.Exception ex)
                    {
                        transaction.Rollback();

                        throw;
                    }
                }
            }
        }