public string geraNegociacao(string[] pParcelas, double pValor, DateTime pVencimento, tipoDebito pTipoDebito) { string iContrato; System.Data.SqlClient.SqlTransaction iTransacao = bancoDados.Conexoes.conexao.BeginTransaction(); try { if (pParcelas.Length == 0) { throw new Exception("Parcelas nao informadas"); } if (pVencimento < DateTime.Today) { throw new Exception("O vencimento nao pode ser anterior a data atual"); } if (pVencimento > DateTime.Today.AddDays(15)) { throw new Exception("O vencimento nao pode ser maior que 15 dias "); } iContrato = getContrato(Convert.ToInt64(pParcelas[0]), iTransacao); if (iContrato == "") { throw new Exception("Contrato nao autorizado"); } Int64 iCodigoNegociacao = setNegociacao(iContrato, iTransacao); foreach (string iParcela in pParcelas) { if (iContrato != getContrato(Convert.ToInt64(iParcela), iTransacao)) { throw new Exception("Apenas um contrato por negociacao"); } if (pTipoDebito != getTipoDebito(Convert.ToInt64(iParcela), iTransacao)) { throw new Exception("Apenas um tipo de documento por negociacao"); } if (!setParcelaNegociada(Convert.ToInt64(iParcela), iCodigoNegociacao, iTransacao)) { throw new Exception("Item nao gerado"); } } double iValorTotal = getValorNegociacao(iCodigoNegociacao, iTransacao); if (iValorTotal * 0.5 > pValor || pValor > iValorTotal * 1.5) { throw new Exception("valor da negociacao invalido"); } string iRetorno = setParcelaNegociacao(iContrato, pValor, pVencimento, iCodigoNegociacao, pTipoDebito, iTransacao); iTransacao.Commit(); return(iRetorno); } catch (Exception ex) { if (iTransacao.Connection != null) { iTransacao.Rollback(); } throw new Exception("class:" + this.GetType().Name + "\r\n Method:" + System.Reflection.MethodBase.GetCurrentMethod().Name + "\r\n" + ex.Message); } finally { bancoDados.Conexoes.close(); } }
private string setParcelaNegociacao(string pContrato, double pValor, DateTime pVencimento, Int64 pCodigoNegociacao, tipoDebito pTipoDebito, System.Data.SqlClient.SqlTransaction pTransacao) { try { System.Web.Script.Serialization.JavaScriptSerializer jsonSerialiser = new System.Web.Script.Serialization.JavaScriptSerializer(); bancoDados.Comandos.limpaParametros(); bancoDados.Comandos.textoComando = "SGB.Boleto.pro_criaBoleto"; bancoDados.Comandos.tipoComando = System.Data.CommandType.StoredProcedure; bancoDados.retornaDados = true; bancoDados.tempoLimite = 3000; bancoDados.Comandos.comando.Transaction = pTransacao; bancoDados.Comandos.adicionaParametro("@dataVencimento", System.Data.SqlDbType.DateTime, 8, pVencimento); bancoDados.Comandos.adicionaParametro("@valorBoleto", System.Data.SqlDbType.Money, 4, pValor); bancoDados.Comandos.adicionaParametro("@contrato", System.Data.SqlDbType.VarChar, 10, pContrato); bancoDados.Comandos.adicionaParametro("@documentoReferencia", System.Data.SqlDbType.VarChar, 12, ""); bancoDados.Comandos.adicionaParametro("@codigoDebito", System.Data.SqlDbType.Char, 3, pTipoDebito == tipoDebito.Boleto ? "CNB" : "VNC"); bancoDados.Comandos.adicionaParametro("@nomeCliente", System.Data.SqlDbType.VarChar, 160, ""); bancoDados.Comandos.adicionaParametro("@numeroInterno", System.Data.SqlDbType.VarChar, 12, ""); bancoDados.Comandos.adicionaParametro("@usuarioGerador", System.Data.SqlDbType.VarChar, 30, codigoCobradora); System.Data.DataTable iTabela = bancoDados.execute().Tables[0]; if (!setItemNegociacao(Convert.ToInt64(iTabela.Rows[0]["codigoParcela"]), 0, pCodigoNegociacao, pTransacao)) { throw new Exception("Parcela nao gravada"); } return(CarSystem.Utilidades.Rede.HTML.tableToJson(iTabela)); } catch (Exception ex) { throw new Exception("class:" + this.GetType().Name + "\r\n Method:" + System.Reflection.MethodBase.GetCurrentMethod().Name + "\r\n" + ex.Message); } }