public async Task <List <ParcelasCompra> > GetParcelasOrdemServicoResultSet(NpgsqlCommand command) { List <ParcelasCompra> list = new List <ParcelasCompra>(); command.ExecuteNonQuery(); using var reader = await command.ExecuteReaderAsync(); while (await reader.ReadAsync()) { DataTable schemaTable = reader.GetSchemaTable(); JTokenWriter writer = new JTokenWriter(); writer.WriteStartObject(); foreach (DataRow row in schemaTable.Rows) { writer.WritePropertyName(row[0].ToString()); writer.WriteValue(reader[row[0].ToString()]); } writer.WriteEndObject(); JObject o = (JObject)writer.Token; var stringJson = o.ToString(); ParcelasCompra p = JsonConvert.DeserializeObject <ParcelasCompra>(stringJson); list.Add(p); } return(list); }
public async Task <List <ParcelasCompra> > gerarParcelas(ParcelasDTO parcela) { CondicoesPagamentoDAO condicaoDao = new CondicoesPagamentoDAO(); CondicoesPagamento condicao = await condicaoDao.BuscarPorID(parcela.codigoCondicaoPagamento); List <ParcelasCompra> listParcelas = new List <ParcelasCompra>(); foreach (var p in condicao.parcelas) { var itemParcela = new ParcelasCompra { numeroParcela = p.numeroParcela, dtEmissao = DateTime.Now, dtVencimento = parcela.dtEmissao.AddDays((double)p.numeroDias), codigoFormaPagamento = p.codigoFormaPagamento, descricaoForma = p.formaPagamento.descricao, valorParcela = decimal.Round(((p.porcentagem / 100) * parcela.valorTotal), 2) }; listParcelas.Add(itemParcela); } var totalParcelas = listParcelas.Sum(k => k.valorParcela); if (totalParcelas != parcela.valorTotal) { if (totalParcelas < parcela.valorTotal) { var dif = parcela.valorTotal - totalParcelas; var list = listParcelas.OrderBy(u => u.numeroParcela); list.Last().valorParcela = list.Last().valorParcela + dif; listParcelas = list.ToList(); } if (totalParcelas > parcela.valorTotal) { var dif = totalParcelas - parcela.valorTotal; var list = listParcelas.OrderBy(u => u.numeroParcela); list.Last().valorParcela = list.Last().valorParcela - dif; listParcelas = list.ToList(); } } return(listParcelas); }
public override async Task <OrdensServico> Inserir(OrdensServico ordemServico) { using (var conexao = GetCurrentConnection()) { conexao.Open(); NpgsqlTransaction transaction = conexao.BeginTransaction(); try { string sql = @"INSERT INTO ordensservico(codigofornecedor, dtinicial, dtfinal, valorservicos, valorprodutos, valortotal, codigocondicaopagamento, dtcadastro, dtalteracao, status) VALUES (@codigoFornecedor, @dtInicial, @dtFinal, @valorServicos, @valorProdutos, @valorTotal, @codigoCondicaoPagamento, @dtCadastro, @dtAlteracao, @status) returning codigo;"; NpgsqlCommand command = new NpgsqlCommand(sql, conexao); command.Parameters.AddWithValue("@codigoFornecedor", ordemServico.codigoFornecedor); command.Parameters.AddWithValue("@dtInicial", ordemServico.dtInicial); command.Parameters.AddWithValue("@dtFinal", ordemServico.dtFinal); command.Parameters.AddWithValue("@valorServicos", ordemServico.valorServicos); command.Parameters.AddWithValue("@valorProdutos", ordemServico.valorProdutos); command.Parameters.AddWithValue("@valorTotal", ordemServico.valorTotal); command.Parameters.AddWithValue("@codigoCondicaoPagamento", ordemServico.codigoCondicaoPagamento); command.Parameters.AddWithValue("@dtCadastro", ordemServico.dtCadastro); command.Parameters.AddWithValue("@dtAlteracao", ordemServico.dtAlteracao); command.Parameters.AddWithValue("@status", ordemServico.status); Object idInserido = await command.ExecuteScalarAsync(); ordemServico.codigo = (int)idInserido; int qtdServicos = ordemServico.servicos.Count; if (qtdServicos > 0) { for (int i = 0; i < qtdServicos; i++) { ServicosOS servicoOrdemServico = ordemServico.servicos[i]; ordemServico.servicos[i] = await InserirServicosOrdemServico(conexao, servicoOrdemServico, ordemServico.codigo); } } int qtdItens = ordemServico.itens.Count; if (qtdItens > 0) { for (int i = 0; i < qtdItens; i++) { ItensCompra itemOrdemServico = ordemServico.itens[i]; ordemServico.itens[i] = await InserirItensOrdemServico(conexao, itemOrdemServico, ordemServico.codigo); } } int qtdParcelas = ordemServico.parcelas.Count; if (qtdParcelas > 0) { for (int i = 0; i < qtdParcelas; i++) { ParcelasCompra parcelaordemServico = ordemServico.parcelas[i]; parcelaordemServico.dtEmissao = (DateTime)ordemServico.dtCadastro; parcelaordemServico.pendente(); ordemServico.parcelas[i] = await InserirParcelasOrdemServico(conexao, parcelaordemServico, ordemServico); } } transaction.Commit(); return(ordemServico); } catch { transaction.Rollback(); throw; } finally { conexao.Close(); } } }
public async Task <ParcelasCompra> InserirParcelasOrdemServico(NpgsqlConnection conexao, ParcelasCompra parcela, OrdensServico ordemServico) { string modelo = "99"; string serie = "99"; string sql = @"INSERT INTO contaspagar(modelo, serie, numeronf, codigofornecedor, numeroparcela, valorparcela, codigoformapagamento, dtemissao, dtvencimento, dtpagamento, status) VALUES (@modelo, @serie, @numeroNF, @codigoFornecedor, @numeroParcela, @valorParcela, @codigoFormaPagamento, @dtEmissao, @dtVencimento, @dtPagamento, @status);"; NpgsqlCommand command = new NpgsqlCommand(sql, conexao); command.Parameters.AddWithValue("@modelo", modelo); command.Parameters.AddWithValue("@serie", serie); command.Parameters.AddWithValue("@numeroNF", ordemServico.codigo); command.Parameters.AddWithValue("@codigoFornecedor", ordemServico.codigoFornecedor); command.Parameters.AddWithValue("@numeroParcela", parcela.numeroParcela); command.Parameters.AddWithValue("@valorParcela", parcela.valorParcela); command.Parameters.AddWithValue("@codigoFormaPagamento", parcela.codigoFormaPagamento); command.Parameters.AddWithValue("@dtEmissao", parcela.dtEmissao); command.Parameters.AddWithValue("@dtVencimento", parcela.dtVencimento); command.Parameters.AddWithValue("@dtPagamento", parcela.dtPagamento ?? (Object)DBNull.Value); command.Parameters.AddWithValue("@status", parcela.status); await command.ExecuteScalarAsync(); return(parcela); }
public override async Task <Compras> Inserir(Compras compra) { using (var conexao = GetCurrentConnection()) { conexao.Open(); NpgsqlTransaction transaction = conexao.BeginTransaction(); try { string sql = @"INSERT INTO compras(modelo, serie, numeronf, codigofornecedor, dtemissao, dtentrega, valorprodutos, frete, seguro, despesas, valortotal, codigocondicaopagamento, dtcadastro, dtalteracao, status) VALUES (@modelo, @serie, @numeroNF, @codigoFornecedor, @dtEmissao, @dtEntrega, @valorProdutos, @frete, @seguro, @despesas, @valorTotal, @codigoCondicaoPagamento, @dtCadastro, @dtAlteracao, @status);"; NpgsqlCommand command = new NpgsqlCommand(sql, conexao); command.Parameters.AddWithValue("@modelo", compra.modelo); command.Parameters.AddWithValue("@serie", compra.serie); command.Parameters.AddWithValue("@numeroNF", compra.numeroNF); command.Parameters.AddWithValue("@codigoFornecedor", compra.codigoFornecedor); command.Parameters.AddWithValue("@dtEmissao", compra.dtEmissao); command.Parameters.AddWithValue("@dtEntrega", compra.dtEntrega); command.Parameters.AddWithValue("@valorProdutos", compra.valorProdutos); command.Parameters.AddWithValue("@frete", compra.frete); command.Parameters.AddWithValue("@seguro", compra.seguro); command.Parameters.AddWithValue("@despesas", compra.despesas); command.Parameters.AddWithValue("@valorTotal", compra.valorTotal); command.Parameters.AddWithValue("@codigoCondicaoPagamento", compra.codigoCondicaoPagamento); command.Parameters.AddWithValue("@dtCadastro", compra.dtCadastro); command.Parameters.AddWithValue("@dtAlteracao", compra.dtAlteracao); command.Parameters.AddWithValue("@status", compra.status); await command.ExecuteScalarAsync(); int qtdItens = compra.itens.Count; if (qtdItens > 0) { for (int i = 0; i < qtdItens; i++) { ItensCompra itemCompra = compra.itens[i]; itemCompra.modelo = compra.modelo; itemCompra.serie = compra.serie; itemCompra.numeroNF = compra.numeroNF; itemCompra.codigoFornecedor = compra.codigoFornecedor; compra.itens[i] = await InserirItensCompra(conexao, itemCompra); await AtualizarProdutos(conexao, compra, itemCompra); } } int qtdParcelas = compra.parcelas.Count; if (qtdParcelas > 0) { for (int i = 0; i < qtdParcelas; i++) { ParcelasCompra parcelaCompra = compra.parcelas[i]; parcelaCompra.dtEmissao = compra.dtEmissao; parcelaCompra.pendente(); compra.parcelas[i] = await InserirParcelasCompra(conexao, parcelaCompra, compra); } } transaction.Commit(); return(compra); } catch { transaction.Rollback(); throw; } finally { conexao.Close(); } } }