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)); }
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)); }
/// <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); }
/// <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; } } }