public async Task AtualizarStatus(long idPedido, PedidoVendaStatusEnum status) { try { var pedido = _uow.PedidoRepository.GetById(idPedido); pedido.IdPedidoVendaStatus = status; _uow.PedidoRepository.Update(pedido); await _uow.SaveChangesAsync(); } catch (Exception ex) { _log.Error(String.Format("Erro ao atualizar o status do pedido {0}.", idPedido), ex); } }
public IActionResult VendasPorProdutoImprimir(int idEmpresa, int idVendedor, PedidoVendaStatusEnum idStatus, DateTime dataInicial, DateTime dataFinal) { var caminhoTemplate = _configuration.GetSection("Environment:CaminhoTemplate").Value; var documento = _templateBU.VendasPorProdutoImprimir(caminhoTemplate, idEmpresa, idVendedor, idStatus, dataInicial, dataFinal); var nomeArquivo = $"VendasPorProduto.pdf"; var contentDispositionHeader = new System.Net.Mime.ContentDisposition { Inline = true, FileName = nomeArquivo }; Response.Headers.Add("Content-Disposition", contentDispositionHeader.ToString()); byte[] byteArray = Convert.FromBase64String(documento); return(File(byteArray, System.Net.Mime.MediaTypeNames.Application.Pdf)); }
public async Task AtualizarStatus(long idPedidoVenda, PedidoVendaStatusEnum status) { try { var pedidoVenda = _uow.PedidoVendaRepository.GetById(idPedidoVenda); if (pedidoVenda != null) { pedidoVenda.IdPedidoVendaStatus = status; } _uow.PedidoVendaRepository.Update(pedidoVenda); await _uow.SaveChangesAsync(); } catch (Exception ex) { _log.Error(String.Format("Erro ao atualizar o status do pedido de venda {0}.", idPedidoVenda), ex); } }
public async Task AtualizarStatusPedido(Pedido pedido, PedidoVendaStatusEnum statusPedidoVenda) { if (!Convert.ToBoolean(ConfigurationManager.AppSettings["IntegracaoSankhya_Habilitar"])) { return; } try { Dictionary <string, string> campoChave = new Dictionary <string, string> { { "NUNOTA", pedido.CodigoIntegracao.ToString() } }; await IntegracaoSankhya.Instance.AtualizarInformacaoIntegracao("CabecalhoNota", campoChave, "AD_STATUSSEP", statusPedidoVenda.GetHashCode()); } catch (Exception ex) { var errorMessage = string.Format("Erro na atualização do pedido de venda: {0}.", pedido.CodigoIntegracao); _log.Error(errorMessage, ex); throw new BusinessException(errorMessage); } }
private void ValidateAndSetProperties(int IDCompany, int IDUser, DateTime DataVenda, PedidoVendaStatusEnum Status, int IDUsuario, int IDVendedor, int IDEmpresa, TipoPagamentoEnum TipoPagamento, QtdeParcelasEnum QtdeParcelas, string Observacao, bool VendaExpress) { DomainException.When(IDCompany == 0, "Compania não informada."); DomainException.When(IDUser == 0, "Usuário não informado."); DomainException.When(DataVenda == DateTime.MinValue, "Data da Venda Inválida."); DomainException.When(Status == 0, "Status não informado."); DomainException.When(IDVendedor == 0, "Vendedor não informado."); DomainException.When(IDEmpresa == 0, "Cliente não informado."); DomainException.When(QtdeParcelas == 0, "Qtde de Parcelas Inválida."); this.IDCompany = IDCompany; this.IDUser = IDUser; this.DataVenda = DataVenda; this.Status = Status; this.IDUsuario = IDUsuario; this.IDVendedor = IDVendedor; this.IDEmpresa = IDEmpresa; this.TipoPagamento = TipoPagamento; this.QtdeParcelas = QtdeParcelas; this.Observacao = Observacao; this.VendaExpress = VendaExpress; }
public void UpdateProperties(int IDCompany, int IDUser, DateTime DataVenda, PedidoVendaStatusEnum Status, int IDUsuario, int IDVendedor, int IDEmpresa, TipoPagamentoEnum TipoPagamento, QtdeParcelasEnum QtdeParcelas, string Observacao, bool VendaExpress) { ValidateAndSetProperties(IDCompany, IDUser, DataVenda, Status, IDUsuario, IDVendedor, IDEmpresa, TipoPagamento, QtdeParcelas, Observacao, VendaExpress); }
public IActionResult PedidoVendaAlterarStatus(int id, PedidoVendaStatusEnum Status) { _fluxoBU.FluxoPedido(id, Status); return(Ok()); }
public int Save(int IDPedidoVenda, int IDCompany, int IDUser, DateTime DataVenda, PedidoVendaStatusEnum Status, int IDUsuario, int IDVendedor, int IDEmpresa, TipoPagamentoEnum TipoPagamento, QtdeParcelasEnum QtdeParcelas, string Observacao, List <PedidoVendaItemEN> ListPedidoVendaItens, bool VendaExpress) { int idPedido = 0; _unitOfWork.BeginTransaction(); try { PedidoVendaEN pedidoVendaEN = _repositoryPedidoVenda.GetByID(IDPedidoVenda); if (pedidoVendaEN != null) { if (pedidoVendaEN.Status != PedidoVendaStatusEnum.Aberto) { pedidoVendaEN.UpdateProperties ( IDCompany, IDUser, pedidoVendaEN.DataVenda, pedidoVendaEN.Status, pedidoVendaEN.IDUsuario, pedidoVendaEN.IDVendedor, pedidoVendaEN.IDEmpresa, pedidoVendaEN.TipoPagamento, pedidoVendaEN.QtdeParcelas, Observacao, VendaExpress ); } else { pedidoVendaEN.UpdateProperties ( IDCompany, IDUser, DataVenda, Status, IDUsuario, IDVendedor, IDEmpresa, TipoPagamento, QtdeParcelas, Observacao, VendaExpress ); } _repositoryPedidoVenda.Edit(pedidoVendaEN); } else { pedidoVendaEN = new PedidoVendaEN ( IDCompany, IDUser, DataVenda, Status, IDUsuario, IDVendedor, IDEmpresa, TipoPagamento, QtdeParcelas, Observacao, VendaExpress ); pedidoVendaEN.DataCadastro = DateTime.Now.ToLocalTime(); _repositoryPedidoVenda.Save(pedidoVendaEN); } _unitOfWork.Commit(); if (pedidoVendaEN.Status == PedidoVendaStatusEnum.Aberto) { idPedido = pedidoVendaEN.IDPedido; List <PedidoVendaItemEN> listPedidoVendaItem = _repositoryPedidoVendaItem.Where(obj => obj.IDPedido == idPedido).ToList(); //VERIFICA SE ALGUM ITEM FOI EXCLUÍDO foreach (var itemPedidoBD in listPedidoVendaItem) { var itemPedido = ListPedidoVendaItens.Where(obj => obj.IDProduto == itemPedidoBD.IDProduto).FirstOrDefault(); if (itemPedido == null) { _pedidoVendaItemBU.RemoveItem(itemPedidoBD); } } listPedidoVendaItem = _repositoryPedidoVendaItem.Where(obj => obj.IDPedido == idPedido).ToList(); int item = 0; foreach (var itemPedido in ListPedidoVendaItens) { var itemPedidoBD = listPedidoVendaItem.Where(obj => obj.IDProduto == itemPedido.IDProduto).FirstOrDefault(); int pedidoItem = 0; if (itemPedidoBD != null) { pedidoItem = itemPedidoBD.IDPedidoItem; item = itemPedidoBD.Item; } else { pedidoItem = itemPedido.IDPedidoItem; item++; } _pedidoVendaItemBU.Save(pedidoItem, idPedido, item, itemPedido.IDProduto, itemPedido.Qtde, itemPedido.Valor); if (pedidoItem != 0) { item = listPedidoVendaItem.Count(); } } } _unitOfWork.CommitTransaction(); } catch (DomainException ex) { Console.Write(ex); _unitOfWork.RollbackTransaction(); throw new DomainException(ex.Message); } catch (Exception ex) { Console.Write(ex); _unitOfWork.RollbackTransaction(); throw new DomainException("Erro ao salvar pedido. Tente novamente mais tarde"); } return(idPedido); }
public void FluxoPedido(int IDPedidoVenda, PedidoVendaStatusEnum Status, bool inTransaction = false) { PedidoVendaEN pedidoVendaEN = _repositoryPedidoVenda.GetByID(IDPedidoVenda); bool atualizaEstoque = true; if (pedidoVendaEN.Status == PedidoVendaStatusEnum.Aberto) { atualizaEstoque = false; } pedidoVendaEN.Status = Status; if (inTransaction == false) { _unitOfWork.BeginTransaction(); } try { _repositoryPedidoVenda.Edit(pedidoVendaEN); _unitOfWork.Commit(); if (atualizaEstoque && Status == PedidoVendaStatusEnum.Cancelado) { List <PedidoVendaItemEN> listPedidoVendaItem = _repositoryPedidoVendaItem.Where(obj => obj.IDPedido == pedidoVendaEN.IDPedido).ToList(); foreach (var itemPedido in listPedidoVendaItem) { _movimentoEstoqueBU.Save ( pedidoVendaEN.IDCompany, pedidoVendaEN.IDUser, OrigemMovimentoEstoqueEnum.PedidoVenda, itemPedido.IDPedido, itemPedido.IDProduto, TipoMovimentoEstoqueEnum.Entrada, itemPedido.Qtde, "Pedido de Venda [CANCELAMENTO]" ); } List <ContasReceberEN> listContasReceber = _repositoryContasReceber.Where(obj => obj.Chave == pedidoVendaEN.IDPedido && obj.Origem == OrigemContasReceberEnum.PedidoVenda).ToList(); var qtdeTitulosPagos = listContasReceber.Where(obj => obj.Status == ContasReceberStatusEnum.Baixado).Count(); if (qtdeTitulosPagos > 0) { throw new DomainException("Existem títulos pagos desse pedido. Cancelamento não permitido!"); } foreach (var itemContasReceber in listContasReceber) { itemContasReceber.Status = ContasReceberStatusEnum.Cancelado; _repositoryContasReceber.Edit(itemContasReceber); _unitOfWork.Commit(); } } else if (Status == PedidoVendaStatusEnum.AguardandoPagamento) { var listPedidoVendaItem = _repositoryPedidoVendaItem.Where(obj => obj.IDPedido == IDPedidoVenda).ToList(); var empresaEN = _repositoryEmpresa.GetByID(pedidoVendaEN.IDEmpresa); foreach (var itemPedido in listPedidoVendaItem) { //Criação Movimentação e Atualiza Estoque _movimentoEstoqueBU.Save ( pedidoVendaEN.IDCompany, pedidoVendaEN.IDUser, OrigemMovimentoEstoqueEnum.PedidoVenda, IDPedidoVenda, itemPedido.IDProduto, TipoMovimentoEstoqueEnum.Saida, itemPedido.Qtde, empresaEN.RazaoSocial ); } decimal valorTotalPedido = listPedidoVendaItem.Sum(obj => obj.ValorTotal); decimal valorTitulo = valorTotalPedido / (int)pedidoVendaEN.QtdeParcelas; decimal somaDosValorTitulo = 0; DateTime dataVencimento = pedidoVendaEN.DataCadastro.AddDays(10); int seq = 1; for (int iQtdeParcelas = 1; iQtdeParcelas <= (int)pedidoVendaEN.QtdeParcelas; iQtdeParcelas++) { somaDosValorTitulo += valorTitulo; //VERIFICA SE NA ÚLTIMA PARCELA EXISTE DIFERENÇA DE CENTAVOS if (iQtdeParcelas == (int)pedidoVendaEN.QtdeParcelas) { if (valorTotalPedido != somaDosValorTitulo) { decimal valorDiferenca = valorTotalPedido - somaDosValorTitulo; if (valorDiferenca < 0) { valorDiferenca = valorDiferenca * -1; } valorTitulo += valorDiferenca; } } //GRAVA O TÍTULO NO CONTAS A RECEBER _contasReceberBU.Save ( 0, pedidoVendaEN.IDCompany, pedidoVendaEN.IDUser, pedidoVendaEN.IDEmpresa, $"PED{pedidoVendaEN.IDPedido.ToString("00000")}_{iQtdeParcelas.ToString()}", seq, dataVencimento, valorTitulo, 0, OrigemContasReceberEnum.PedidoVenda, string.Empty, pedidoVendaEN.IDPedido, "Título gravado pelo fluxo de pedido." ); dataVencimento = dataVencimento.AddDays(30); seq += 1; } } if (inTransaction == false) { _unitOfWork.CommitTransaction(); } } catch (DomainException ex) { if (inTransaction == false) { _unitOfWork.RollbackTransaction(); } throw new DomainException(ex.Message); } catch { if (inTransaction == false) { _unitOfWork.RollbackTransaction(); } throw new DomainException("Erro ao atualizar status do pedido. Tente novamente mais tarde"); } }