//C /// <summary> /// Regista uma venda completa(ajusta estoque e cria os itens de venda) /// </summary> /// <param name="Carrinho"></param> /// <param name="IdCliente"></param> /// <param name="IdUsuario"></param> /// <param name="Pagamento"></param> /// <returns></returns> public bool CadastraVenda(List <ItensVendas> Carrinho, int IdCliente, int IdUsuario, string Pagamento) { try { using (PadariaBDEntities Padaria = new PadariaBDEntities()) { //gera a venda Vendas venda = new Vendas { Vendedor = IdUsuario, Cliente = IdCliente, DataVenda = DateTime.Now, Pagamento = Pagamento }; Padaria.Vendas.Add(venda); //gera os itens da venda e os abate no estoque foreach (ItensVendas item in Carrinho) { //gera o itemVenda Padaria.ItensVendas.Add(new ItensVendas { Venda = venda.Id, Produto = item.Produto, Quantidade = item.Quantidade, Subtotal = item.Subtotal, }); //abate no estoque var loteAtivo = Padaria.Lotes.Where(lotes => lotes.Produto == item.Produto && lotes.Ativo).SingleOrDefault(); loteAtivo.Quantidade = loteAtivo.Quantidade - item.Quantidade; } Padaria.SaveChanges(); } return(true); } catch { return(false); } }
private static List <Vendas> ObterCancelamentos(Redes rede) { string sql = @" SELECT pt.prod_trans_id FROM Transacoes t JOIN Prod_Trans pt ON pt.trans_id = t.trans_id WHERE t.confirmada = 'S' AND t.cancelado = 'S' AND (t.dtcancelado > @ultima_comunicacao)"; SqlParamsList ps = new SqlParamsList(); ps.Add(new Fields("ultima_comunicacao", rede.Ultima_comunicacao)); BD BD = new BD(rede.Tipobanco, rede.Host, rede.Database, rede.User, rede.Pass); try { DataTable table = BD.GetDataTable(sql, ps); List <Vendas> vendas = new List <Vendas>(); foreach (DataRow row in table.Rows) { Vendas venda = new Vendas(); venda.Id_vendaprod_rede = Convert.ToInt32(row["prod_trans_id"]); vendas.Add(venda); } return(vendas); } catch (Exception ex) { throw new Exception("Erro ao obter cancelamentos da rede " + rede.Nome + ": " + ex.Message); } }
private static List <Vendas> ObterVendas(Redes rede) { string sql = @" SELECT t.datahora, pt.prod_trans_id, pt.codbarras, pt.qtd_aprov, pt.prc_unit_env, pt.vlr_bru, pt.vlr_desc, pt.vale_utilizado, pt.vlr_liq, ppt.num_prescritor, ppt.uf_prescritor, ppt.tipo_prescritor, ppt.numreceita, ppt.datareceita, COALESCE(prod.nome,prod.descricao) AS prod_nome, prod.apres, prod.generico, prod.lista, prod.cod_guia, lab.nomefant, clas.classe, sclas.subclasse, fam.familia, pat.pativo, cred.cgc, cred.nome AS cred_nome, cred.cidade, cred.estado, cred.cred_id, conv.titular, conv.cpf, conv.conv_id FROM Transacoes t JOIN Prod_trans pt ON pt.trans_id = t.trans_id LEFT JOIN Pres_Prod_Trans ppt ON ppt.prod_trans_id = pt.prod_trans_id AND ppt.trans_id = t.trans_id JOIN Barras bar ON bar.barras = pt.codbarras JOIN Produtos prod ON prod.prod_id = bar.prod_id LEFT JOIN Laboratorios lab ON lab.lab_id = prod.lab_id LEFT JOIN Classe clas ON clas.clas_id = prod.clas_id LEFT JOIN Subclasse sclas ON sclas.sclas_id = prod.sclas_id LEFT JOIN Familias fam ON fam.fam_id = prod.fam_id LEFT JOIN Pativo pat ON pat.pat_id = prod.pat_id JOIN Credenciados cred ON cred.cred_id = t.cred_id JOIN Cartoes cart ON cart.cartao_id = t.cartao_id JOIN Conveniados conv ON conv.conv_id = cart.conv_id WHERE t.confirmada = 'S' AND t.cancelado <> 'S' AND (t.datahora > @ultima_comunicacao OR t.dtconfirmada > @ultima_comunicacao) ORDER BY t.datahora DESC"; SqlParamsList ps = new SqlParamsList(); ps.Add(new Fields("ultima_comunicacao", rede.Ultima_comunicacao)); BD BD = new BD(rede.Tipobanco, rede.Host, rede.Database, rede.User, rede.Pass); try { DataTable table = BD.GetDataTable(sql, ps); List <Vendas> vendas = new List <Vendas>(); foreach (DataRow row in table.Rows) { Vendas venda = new Vendas(); DateTime data = Convert.ToDateTime(row["datahora"]); venda.Tempo.Data = data; venda.Tempo.Ano = data.Year; venda.Tempo.Mes = data.Month; venda.Tempo.Dia = data.Day; venda.Tempo.Semestre = venda.Tempo.Mes < 7 ? "Primeiro" : "Segundo"; if (venda.Tempo.Mes <= 3) { venda.Tempo.Trimestre = "Primeiro"; } else if (venda.Tempo.Mes <= 6) { venda.Tempo.Trimestre = "Segundo"; } else if (venda.Tempo.Mes <= 9) { venda.Tempo.Trimestre = "Terceiro"; } else { venda.Tempo.Trimestre = "Quarto"; } switch (data.DayOfWeek) { case DayOfWeek.Friday: venda.Tempo.Dia_semana = "Sexta"; break; case DayOfWeek.Monday: venda.Tempo.Dia_semana = "Segunda"; break; case DayOfWeek.Saturday: venda.Tempo.Dia_semana = "Sabado"; break; case DayOfWeek.Sunday: venda.Tempo.Dia_semana = "Domingo"; break; case DayOfWeek.Thursday: venda.Tempo.Dia_semana = "Quinta"; break; case DayOfWeek.Tuesday: venda.Tempo.Dia_semana = "Terça"; break; case DayOfWeek.Wednesday: venda.Tempo.Dia_semana = "Quarta"; break; } venda.Estab.Cnpj = Misc.Utils.SoNumeros(row["cgc"].ToString()); if (!Misc.Utils.ValidarCNPJ(venda.Estab.Cnpj)) { venda.Estab.Cnpj = ""; } venda.Estab.Razao_social = row["cred_nome"].ToString(); venda.Estab.Cidade = row["cidade"].ToString(); venda.Estab.Uf = row["estado"].ToString(); venda.Estab.Id_estab_rede = Convert.ToInt32(row["cred_id"]); venda.Conv.Nome = row["titular"].ToString(); venda.Conv.Cpf = Misc.Utils.SoNumeros(row["cpf"].ToString()); if (!Misc.Utils.ValidarCPF(venda.Conv.Cpf)) { venda.Conv.Cpf = ""; } venda.Conv.Id_conv_rede = Convert.ToInt32(row["conv_id"]); venda.Produto.Barras = row["codbarras"].ToString(); venda.Produto.Nome = row["prod_nome"].ToString(); venda.Produto.Apresentacao = row["apres"].ToString(); venda.Produto.Laboratorio = row["nomefant"].ToString(); venda.Produto.Classe = row["classe"].ToString(); venda.Produto.Subclasse = row["subclasse"].ToString(); venda.Produto.Generico = row["generico"].ToString(); venda.Produto.Lista = row["lista"].ToString(); venda.Produto.Familia = row["familia"].ToString(); venda.Produto.Principio_ativo = row["pativo"].ToString(); if (!string.IsNullOrEmpty(row["cod_guia"].ToString())) { venda.Produto.Codigo_guia = Convert.ToInt32(row["cod_guia"]); } venda.Quantidade = Convert.ToInt32(row["qtd_aprov"]); venda.Valor_unitario = float.Parse(row["prc_unit_env"].ToString()); venda.Valor_bruto = float.Parse(row["vlr_bru"].ToString()); venda.Valor_desconto = float.Parse(row["vlr_desc"].ToString()); venda.Vale_desconto = float.Parse(row["vale_utilizado"].ToString()); venda.Valor_liquido = float.Parse(row["vlr_liq"].ToString()); venda.Num_prescritor = ""; venda.Uf_prescritor = ""; venda.Tipo_prescritor = ""; if (!string.IsNullOrEmpty(row["uf_prescritor"].ToString())) { venda.Num_prescritor = row["num_prescritor"].ToString(); venda.Uf_prescritor = row["uf_prescritor"].ToString(); venda.Tipo_prescritor = row["tipo_prescritor"].ToString(); if (!string.IsNullOrEmpty(row["numreceita"].ToString())) { venda.Num_receita = Convert.ToInt32(row["numreceita"]); } if (!string.IsNullOrEmpty(row["datareceita"].ToString())) { venda.Data_receita = Convert.ToDateTime(row["datareceita"]); } } venda.Id_vendaprod_rede = Convert.ToInt32(row["prod_trans_id"]); vendas.Add(venda); } return(vendas); } catch (Exception ex) { throw new Exception("Erro ao obter vendas da rede " + rede.Nome + ": " + ex.Message); } }