public static string Fornecedor_Delete(int id)
        {
            DadosFornecedor obj = new DadosFornecedor();

            obj.IDFornecedor = id;
            return(obj.Fornecedor_Delete(obj));
        }
        public static bool Fornecedor_Valida(string cnpj)
        {
            DadosFornecedor obj = new DadosFornecedor();

            obj.Cnpj = cnpj;
            return(obj.Fornecedor_Valida(obj));
        }
Esempio n. 3
0
            public override bool Equals(object obj)
            {
                if (!(obj is DadosFornecedor))
                {
                    return(false);
                }

                DadosFornecedor d = obj as DadosFornecedor;

                return(d.CodigoFornecedor == CodigoFornecedor && d.PrazoEntregaDias == PrazoEntregaDias &&
                       d.DatasParcelas.Length == DatasParcelas.Length && d.DatasParcelas.All(x => DatasParcelas.Contains(x)));
            }
        public static string Fornecedor_Update(int id, string cnpj, string nomeFantasia, string razaoSocial, string ie, string fone, string whatsApp,
                                               string pais, string uf, string cidade, string bairro, string rua, string numero, string complemento, string cep, string contato)
        {
            DadosFornecedor obj = new DadosFornecedor();

            obj.IDFornecedor = id;
            obj.Cnpj         = cnpj;
            obj.NomeFantasia = nomeFantasia;
            obj.RazaoSocial  = razaoSocial;
            obj.IE           = ie;
            obj.Fone         = fone;
            obj.WhatsApp     = whatsApp;
            obj.Pais         = pais;
            obj.UF           = uf;
            obj.Cidade       = cidade;
            obj.Bairro       = bairro;
            obj.Rua          = rua;
            obj.Numero       = numero;
            obj.Complemento  = complemento;
            obj.CEP          = cep;
            obj.Contato      = contato;
            return(obj.Fornecedor_Update(obj));
        }
Esempio n. 5
0
        /// <summary>
        /// Calcula uma cotação de compras, separando os melhores produtos por fornecedor
        /// de acordo com a prioridade de cálculo selecionada. Retorna os produtos por fornecedor.
        /// </summary>
        public Dictionary <DadosFornecedor, Entidade.CotacaoCompraCalculada[]> CalcularPorFornecedor(GDA.GDASession session,
                                                                                                     uint codigoCotacaoCompra, Glass.Data.Model.CotacaoCompra.TipoCalculoCotacao tipoCalculo)
        {
            // Dicionário que contém os dados de retorno
            Dictionary <DadosFornecedor, Entidade.CotacaoCompraCalculada[]> retorno =
                new Dictionary <DadosFornecedor, Entidade.CotacaoCompraCalculada[]>();

            // Recupera os dados calculados
            var calculados = Calcular(session, codigoCotacaoCompra, tipoCalculo, false);

            // Agrupa os itens por fornecedor e os adiciona ao dicionário
            foreach (uint f in calculados.Select(x => x.CodigoFornecedor).Distinct())
            {
                // Busca os itens do fornecedor
                var itensBase = (from c in calculados
                                 where c.CodigoFornecedor == f
                                 select c).ToArray();

                // Separa as formas de pagamento definidas para o fornecedor
                var formasPagto = (from i in itensBase
                                   select new {
                    i.CodigoParcela,
                    i.DatasParcelasConfiguradas
                }).Distinct();

                // Agrupa os itens por fornecedor e por forma de pagamento
                foreach (var fp in formasPagto)
                {
                    // Recupera os itens que possuem a forma de pagamento indicada
                    var itens = from i in itensBase
                                where i.CodigoParcela == fp.CodigoParcela &&
                                i.DatasParcelasConfiguradas.Length == fp.DatasParcelasConfiguradas.Length
                                select i;

                    // Recupera o prazo de entrega da compra
                    long prazoEntrega = itens.Max(x => x.PrazoEntregaDiasFornecedor);

                    // Busca as datas das parcelas
                    List <DateTime> datas = new List <DateTime>();

                    if (fp.CodigoParcela == -1)
                    {
                        datas.AddRange(fp.DatasParcelasConfiguradas);
                    }

                    else if (fp.CodigoParcela > 0)
                    {
                        DateTime dataBase = DateTime.Now;
                        var      p        = ParcelasDAO.Instance.GetElement(session, (uint)fp.CodigoParcela);

                        foreach (int dias in p.NumeroDias)
                        {
                            datas.Add(dataBase.AddDays(dias));
                        }
                    }
                    else
                    {
                        throw new Exception("Selecione a condição de pagamento do fornecedor para continuar.");
                    }

                    var dadosFornecedor = new DadosFornecedor(f, prazoEntrega, datas.ToArray());

                    /* Chamado 35091. */
                    // Adiciona o item ao dicionário
                    if (!retorno.ContainsKey(dadosFornecedor))
                    {
                        retorno.Add(dadosFornecedor, itens.ToArray());
                    }
                    else
                    {
                        retorno[dadosFornecedor].ToList().AddRange(itens.ToArray());
                    }
                }
            }

            // Retorna o dicionário
            return(retorno);
        }
Esempio n. 6
0
        /// <summary>
        /// Finaliza uma cotação de compra, gerando compras (uma por fornecedor).
        /// </summary>
        public void Finalizar(uint codigoCotacaoCompra, Glass.Data.Model.CotacaoCompra.TipoCalculoCotacao tipoCalculo)
        {
            using (var transaction = new GDATransaction())
            {
                try
                {
                    transaction.BeginTransaction();

                    var calculados = CalcularCotacao.Instance.CalcularPorFornecedor(transaction, codigoCotacaoCompra, tipoCalculo);

                    // Recupera as informações dos fornecedores, validando-as
                    Dictionary <uint, DadosFornecedor> fornecedores = new Dictionary <uint, DadosFornecedor>();

                    foreach (uint codigoFornecedor in calculados.Keys.Select(x => x.CodigoFornecedor).Distinct())
                    {
                        DadosFornecedor f = new DadosFornecedor()
                        {
                            Nome       = FornecedorDAO.Instance.GetNome(transaction, codigoFornecedor),
                            FormaPagto = FornecedorDAO.Instance.ObtemTipoPagto(transaction, codigoFornecedor),
                            PlanoConta = FornecedorDAO.Instance.ObtemIdConta(transaction, codigoFornecedor)
                        };

                        if (f.FormaPagto == null)
                        {
                            throw new Exception("Configure a forma de pagamento padrão do fornecedor " + f.Nome);
                        }

                        if (f.PlanoConta == null)
                        {
                            throw new Exception("Configure o plano de conta padrão do fornecedor " + f.Nome);
                        }

                        fornecedores.Add(codigoFornecedor, f);
                    }

                    Glass.Data.Model.Compra         compra;
                    Glass.Data.Model.ProdutosCompra produtoCompra;
                    uint idCompra;

                    foreach (var dadosFornec in calculados.Keys)
                    {
                        // Insere a compra
                        compra = new Glass.Data.Model.Compra()
                        {
                            IdFornec     = dadosFornec.CodigoFornecedor,
                            IdLoja       = UserInfo.GetUserInfo.IdLoja,
                            IdConta      = fornecedores[dadosFornec.CodigoFornecedor].PlanoConta.Value,
                            IdFormaPagto = fornecedores[dadosFornec.CodigoFornecedor].FormaPagto.Value,
                            TipoCompra   = dadosFornec.DatasParcelas.Length == 0 ? (int)Glass.Data.Model.Compra.TipoCompraEnum.AVista :
                                           (int)Glass.Data.Model.Compra.TipoCompraEnum.APrazo,
                            Situacao    = Glass.Data.Model.Compra.SituacaoEnum.Ativa,
                            DataFabrica = DateTime.Now.ObtemDataDiasUteis((int)dadosFornec.PrazoEntregaDias),
                        };

                        idCompra = CompraDAO.Instance.InsertFromCotacao(transaction, compra, codigoCotacaoCompra);

                        // Insere os produtos da compra
                        foreach (var produto in calculados[dadosFornec])
                        {
                            produtoCompra = new Glass.Data.Model.ProdutosCompra()
                            {
                                IdCompra  = idCompra,
                                IdProd    = produto.CodigoProduto,
                                Qtde      = produto.QuantidadeProduto,
                                Valor     = produto.CustoUnitarioProdutoFornecedor,
                                Total     = produto.CustoTotalProdutoFornecedor,
                                Altura    = produto.AlturaProduto,
                                Largura   = produto.LarguraProduto,
                                TotM      = produto.TotalM2Produto,
                                Espessura = ProdutoDAO.Instance.ObtemEspessura(transaction, (int)produto.CodigoProduto)
                            };

                            ProdutosCompraDAO.Instance.Insert(transaction, produtoCompra);
                        }

                        // Salva as parcelas da compra
                        if (dadosFornec.DatasParcelas.Length > 0)
                        {
                            CompraDAO.Instance.AlteraParcelas(transaction, idCompra, dadosFornec.DatasParcelas.Length, dadosFornec.DatasParcelas);
                        }
                    }

                    // Finaliza a cotação de compra
                    CotacaoCompraDAO.Instance.Finalizar(transaction, codigoCotacaoCompra, tipoCalculo);

                    transaction.Commit();
                    transaction.Close();
                }
                catch
                {
                    transaction.Rollback();
                    transaction.Close();
                    throw;
                }
            }
        }