示例#1
0
 //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);
     }
 }
示例#2
0
        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);
            }
        }
示例#3
0
        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);
            }
        }