Example #1
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;
                    }
                }
            }
        }
Example #2
0
        public void IntegrarFontePagadora(OportunidadeFicha ficha)
        {
            using (OracleConnection con = new OracleConnection(Configuracoes.StringConexao()))
            {
                con.Open();

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

                    var sequencia = con.Query <int>("SELECT SGIPA.SEQ_DADOS_FATURAMENTO_IPA.NEXTVAL FROM DUAL").Single();

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

                    try
                    {
                        if (ficha.FichaGeral)
                        {
                            con.Execute("DELETE FROM SGIPA.TB_DADOS_FAT_IPA_DIAS WHERE AUTONUM_FONTE_PAGADORA IN (SELECT AUTONUM FROM SGIPA.TB_DADOS_FATURAMENTO_IPA WHERE OPORTUNIDADE_ID = :OportunidadeId)", parametros, transaction);
                            con.Execute("DELETE FROM SGIPA.TB_DADOS_FAT_IPA_COND_PG_DIAS WHERE AUTONUM_FONTE_PAGADORA IN (SELECT AUTONUM FROM SGIPA.TB_DADOS_FATURAMENTO_IPA WHERE OPORTUNIDADE_ID = :OportunidadeId)", parametros, transaction);
                            con.Execute("DELETE FROM SGIPA.TB_DADOS_FAT_IPA_DIAS_SEMANA WHERE AUTONUM_FONTE_PAGADORA IN (SELECT AUTONUM FROM SGIPA.TB_DADOS_FATURAMENTO_IPA WHERE OPORTUNIDADE_ID = :OportunidadeId)", parametros, transaction);
                            con.Execute("DELETE FROM SGIPA.TB_DADOS_FATURAMENTO_IPA WHERE OPORTUNIDADE_ID = :OportunidadeId", parametros, transaction);

                            con.Execute($@"
                                INSERT INTO SGIPA.TB_DADOS_FATURAMENTO_IPA 
                                    (
                                        AUTONUM,  
                                        AUTONUM_LISTA,  
                                        AUTONUM_CLIENTE_NOTA,  
                                        AUTONUM_CLIENTE_ENVIO_NOTA,  
                                        AUTONUM_CLIENTE_PAGAMENTO,
                                        CORTE,  
                                        EMAIL,
                                        AUTONUM_FORMA_PAGAMENTO,
                                        FLAG_ENTREGA_ELETRONICA,
                                        FLAG_ENTREGA_MANUAL,
                                        FLAG_ENVIO_CORREIO_COMUM,
                                        FLAG_ENVIO_CORREIO_SEDEX,
                                        FLAG_VENCIMENTO_DIA_UTIL,
                                        FLAG_ULTIMO_DIA_DO_MES_VCTO,
                                        OPORTUNIDADE_ID,
                                        FICHA_ID,
                                        DATA_INTEGRACAO
                                    )  
                                    SELECT  
                                        :Sequencia,  
                                        B.TabelaId,
                                        :FaturadoContraId,  
                                        :ContaId,
                                        :FontePagadoraId,
                                        A.DataCorte,
                                        A.EmailFaturamento,
                                        A.CondicaoPagamentoFaturamentoId,
                                        A.EntregaEletronica,
                                        A.EntregaManual,
                                        DECODE(A.CorreiosSedex, 0, 1, 0),
                                        A.CorreiosSedex,
                                        A.DiaUtil,
                                        A.UltimoDiaDoMes,
                                        :OportunidadeId,
                                        :FichaId,
                                        SYSDATE
                                    FROM  
                                        CRM.TB_CRM_OPORTUNIDADE_FICHA_FAT A
                                    INNER JOIN
                                        CRM.TB_CRM_OPORTUNIDADES B ON A.OportunidadeId = B.Id
                                    WHERE  
                                        A.Id = :FichaId", parametros, transaction);

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

                                    parametros.Add(name: "Sequencia", value: sequencia, direction: ParameterDirection.Input);
                                    parametros.Add(name: "Dia", value: ConverteDiaSemanaIPA.DiaSemana(diaSemana), direction: ParameterDirection.Input);

                                    con.Execute("INSERT INTO SGIPA.TB_DADOS_FAT_IPA_DIAS_SEMANA (AUTONUM, AUTONUM_FONTE_PAGADORA, DIA) VALUES (SGIPA.SEQ_DADOS_FAT_IPA_DIAS_SEMANA.NEXTVAL, :Sequencia, :Dia)", parametros, transaction);
                                }
                            }

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

                                    parametros.Add(name: "Sequencia", value: sequencia, direction: ParameterDirection.Input);
                                    parametros.Add(name: "Dia", value: diaFaturamento, direction: ParameterDirection.Input);

                                    con.Execute("INSERT INTO SGIPA.TB_DADOS_FAT_IPA_DIAS (AUTONUM, AUTONUM_FONTE_PAGADORA, DIA) VALUES (SGIPA.SEQ_DADOS_FAT_IPA_DIAS_FAT.NEXTVAL, :Sequencia, :Dia)", parametros, transaction);
                                }
                            }

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

                                    parametros.Add(name: "Sequencia", value: sequencia, direction: ParameterDirection.Input);
                                    parametros.Add(name: "Dia", value: ConverteDiaSemanaIPA.DiaSemana(diaFaturamento), direction: ParameterDirection.Input);

                                    con.Execute("INSERT INTO SGIPA.TB_DADOS_FAT_IPA_COND_PG_DIAS (AUTONUM, AUTONUM_FONTE_PAGADORA, DIA) VALUES (SGIPA.SEQ_DADOS_FAT_IPA_DIAS_FAT.NEXTVAL, :Sequencia, :Dia)", parametros, transaction);
                                }
                            }

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

                                    parametros.Add(name: "Sequencia", value: sequencia, direction: ParameterDirection.Input);
                                    parametros.Add(name: "Dia", value: ConverteDiaSemanaIPA.DiaSemana(diaFaturamento), direction: ParameterDirection.Input);

                                    con.Execute("INSERT INTO SGIPA.TB_DADOS_FAT_IPA_DIAS_PGTO (AUTONUM, AUTONUM_FONTE_PAGADORA, DIA) VALUES (SGIPA.SEQ_DADOS_FAT_IPA_DIAS_PGTO.NEXTVAL, :Sequencia, :Dia)", parametros, transaction);
                                }
                            }

                            transaction.Commit();
                        }
                        else
                        {
                            IntegrarGrupoFontePagadora(ficha);
                        }
                    }
                    catch
                    {
                        transaction.Rollback();

                        throw;
                    }
                }
            }
        }