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; } } } }