Ejemplo n.º 1
0
        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(); }
        }
Ejemplo n.º 2
0
        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);
            }
        }