public ContasPagar GetContaPagar(short nrParcela, string modelo, string serie, int numero, int codFornecedor) { try { var model = new Models.ContasPagar(); OpenConnection(); var sql = this.Search(null, modelo, serie, numero, codFornecedor, nrParcela); SqlQuery = new SqlCommand(sql, con); reader = SqlQuery.ExecuteReader(); while (reader.Read()) { model.Fornecedor = new Select.Fornecedores.Select { id = Convert.ToInt32(reader["ContaPagar_Fornecedor_ID"]), text = Convert.ToString(reader["ContaPagar_Fornecedor_Nome"]) }; model.FormaPagamento = new Select.FormaPagamento.Select { id = Convert.ToInt32(reader["ContaPagar_FormaPagamento_ID"]), text = Convert.ToString(reader["ContaPagar_FormaPagamento_Nome"]) }; model.nrParcela = Convert.ToInt16(reader["ContaPagar_NrParcela"]); model.vlParcela = Convert.ToDecimal(reader["ContaPagar_vlParcela"]); model.dtVencimento = Convert.ToDateTime(reader["ContaPagar_DataVencimento"]); model.dtPagamento = !string.IsNullOrEmpty(reader["ContaPagar_DataPagamento"].ToString()) ? Convert.ToDateTime(reader["ContaPagar_DataPagamento"]) : (DateTime?)null; model.situacao = Convert.ToString(reader["ContaPagar_Situacao"]) == "P" ? "PENDENTE" : "PAGA"; model.modelo = Convert.ToString(reader["ContaPagar_Modelo"]); model.serie = Convert.ToString(reader["ContaPagar_Serie"]); model.numero = Convert.ToInt32(reader["ContaPagar_Numero"]); model.ContaContabil = new Select.ContasContabeis.Select { id = !string.IsNullOrEmpty(reader["ContaContabil_ID"].ToString()) ? Convert.ToInt32(reader["ContaContabil_ID"]) : (int?)null, text = !string.IsNullOrEmpty(reader["ContaContabil_Nome"].ToString()) ? Convert.ToString(reader["ContaContabil_Nome"]) : string.Empty }; model.txJuros = Convert.ToDecimal(reader["ContaPagar_Juros"]); model.multa = Convert.ToDecimal(reader["ContaPagar_Multa"]); model.desconto = Convert.ToDecimal(reader["ContaPagar_Desconto"]); if (DateTime.Now.Date > model.dtVencimento.Date) { var dtBase = (DateTime.Now - model.dtVencimento).Days; decimal txJusto = decimal.Round((model.txJuros * model.vlParcela) / 100, 2); decimal multaDiaria = decimal.Round(((model.multa * model.vlParcela) / 100) * dtBase, 2); model.vlParcela = model.vlParcela + multaDiaria + txJusto; } else { var txDesconto = decimal.Round((model.desconto * model.vlParcela) / 100, 2); model.vlParcela = model.vlParcela - txDesconto; } } return(model); } catch (Exception error) { throw new Exception(error.Message); } finally { CloseConnection(); } }
public void Pagar(string modelo, string serie, int numero, int codfornecedor, short nrparcela, Models.ContasPagar model) { var swhere = " WHERE tbcontaspagar.modelo = '" + modelo + "' AND tbcontaspagar.serie = '" + serie + "' AND tbcontaspagar.numero = " + numero + " AND tbcontaspagar.codfornecedor = " + codfornecedor + " AND tbcontaspagar.nrparcela = " + nrparcela; var sql = "UPDATE tbcontaspagar set dtpagamento = " + this.FormatDate(DateTime.Now) + ", situacao = 'G', codconta = " + model.ContaContabil.id + swhere; string lancamento = "PAGAMENTO DO FORNECEDOR " + model.Fornecedor.id + " - " + this.FormatString(model.Fornecedor.text) + ", NOTA FISCAL Nº " + model.numero + ", PARCELA Nº " + model.nrParcela + "."; var sqlLancamento = string.Format("INSERT INTO tblancamentos (codconta, dtmovimento, vllancamento, tipo, descricao) VALUES ({0}, {1}, {2}, '{3}', '{4}')", model.ContaContabil.id, this.FormatDate(DateTime.Now), this.FormatDecimal(model.vlParcela), "D", this.FormatString(lancamento) ); var sqlSaldoConta = "UPDATE tbcontascontabeis set vlsaldo -= " + this.FormatDecimal(model.vlParcela) + " WHERE tbcontascontabeis.codconta = " + model.ContaContabil.id; using (con) { OpenConnection(); SqlTransaction trans = con.BeginTransaction(); SqlCommand command = con.CreateCommand(); try { command.Transaction = trans; command.CommandText = sql; command.ExecuteNonQuery(); command.CommandText = sqlLancamento; command.ExecuteNonQuery(); command.CommandText = sqlSaldoConta; command.ExecuteNonQuery(); trans.Commit(); } catch (Exception ex) { trans.Rollback(); throw new Exception(ex.Message); } finally { con.Close(); } } }