Пример #1
0
        private void btnSalvar_Click(object sender, EventArgs e)
        {
            Enum.TryParse <SituacaoPedido>(cboSituacao.SelectedValue.ToString(), out situacaoPedido);
            int valueSituacaoPedido = (int)situacaoPedido;

            errorProvider1.Clear();
            if (cboCliente.Text == string.Empty)
            {
                errorProvider1.SetError(cboCliente, "Selecione o cliente do pedido.");
                cboCliente.Focus();
                return;
            }
            if (cboFormaPagamento.Text == string.Empty)
            {
                errorProvider1.SetError(cboFormaPagamento, "Selecione a forma de pagamento do pedido.");
                cboFormaPagamento.Focus();
                return;
            }
            if (dtpPrevisaoPagamento.Text == string.Empty)
            {
                errorProvider1.SetError(dtpPrevisaoPagamento, "Informe a data de previsão de pagamento.");
                dtpPrevisaoPagamento.Focus();
                return;
            }
            if (cboSituacao.Text == string.Empty)
            {
                errorProvider1.SetError(cboSituacao, "Informe a situação do pedido.");
                cboSituacao.Focus();
                return;
            }
            if (cboSituacao.Text == "PAGO" && dtpDataPagamento.Text == string.Empty)
            {
                errorProvider1.SetError(dtpDataPagamento, "Informe a data de pagamento do pedido.");
                dtpDataPagamento.Focus();
                return;
            }
            if (dgvPedidoItem.Rows.Count == 0)
            {
                errorProvider1.SetError(cboProduto, "Inclua pelo menos um produto ao pedido.");
                cboProduto.Focus();
                return;
            }
            if (valueSituacaoPedido == 3 && txtMotivo.Text == string.Empty)
            {
                errorProvider1.SetError(txtMotivo, "Informe o motivo do cancelamento do pedido.");
                txtMotivo.Focus();
                return;
            }


            PedidoRepositorio <Pedido> pedidoRepo = new PedidoRepositorio <Pedido>();

            try
            {
                Pedido             pedido     = new Pedido();
                IList <PedidoItem> pedidoItem = new List <PedidoItem>();
                Cliente            cliente    = new Cliente();

                //Recupera as informações do cliente selecionado no combo Clientes.
                //Atualiza a classe cliente instanciada na classe pedido
                if (clienteInserido > 0)
                {
                    pedido.Cliente = consultaClienteSelecionado(clienteInserido);
                }
                else
                {
                    pedido.Cliente = consultaClienteSelecionado(Convert.ToInt32(this.cboCliente.SelectedValue.ToString()));
                }

                //Recupera as informações do cliente selecionado no combo Clientes.
                //Atualiza a classe cliente instanciada na classe pedido
                pedido.FormaPagamento = consultaFormaPagamentoSelecionada(Convert.ToInt32(this.cboFormaPagamento.SelectedValue.ToString()));


                pedido.Id                      = idPedido;
                pedido.Usuario.Id              = Global.idUsuario;
                pedido.Data_Inclusao           = DateTime.Now;
                pedido.Data_Previsao_Pagamento = Convert.ToDateTime(dtpPrevisaoPagamento.Text);
                pedido.Valor_Total             = Convert.ToDecimal(txtValorPedido.Text);
                pedido.Status                  = situacaoPedido;

                //pedido.Data_Pagamento = Convert.ToDateTime(dtpDataPagamento.Text);
                //pedido.Data_Registro_Pagamento = DateTime.Now;


                //Enum.TryParse<SituacaoPedido>(cboSituacao.SelectedValue.ToString(), out situacaoPedido);
                //int value = (int)situacaoPedido;
                //pedido.Status =Convert.ToString(value);
                //pedido.Status = situacaoPedido;

                //Preencher somente quando a situação do pedido for Pago
                if (valueSituacaoPedido == 2)
                {
                    //pedido.UsuarioPagamento.Id = Global.idUsuario;
                    pedido.Status                  = situacaoPedido;
                    pedido.Data_Pagamento          = Convert.ToDateTime(dtpDataPagamento.Text);
                    pedido.Data_Registro_Pagamento = DateTime.Now;
                }
                else if (valueSituacaoPedido == 3)
                {
                    pedido.Status = situacaoPedido;
                    pedido.Motivo_Cancelamento = txtMotivo.Text.Trim();
                    pedido.Data_Cancelamento   = Convert.ToDateTime(DateTime.Now);
                }



                // Processo de inclusão
                if (pedido.Id == 0)
                {
                    //Percorre o datagridview se o processo for de inclusão
                    foreach (DataGridViewRow dr in dgvPedidoItem.Rows)
                    {
                        var lstPedidoItem = new PedidoItem();
                        //lstPedidoItem.Id = Convert.ToInt32(dr.Cells[0].Value.ToString());
                        lstPedidoItem.Produto.Id     = Convert.ToInt32(dr.Cells[1].Value.ToString());
                        lstPedidoItem.Quantidade     = Convert.ToInt32(dr.Cells[3].Value.ToString());
                        lstPedidoItem.Valor_Unitario = Convert.ToDecimal(dr.Cells[4].Value.ToString());
                        lstPedidoItem.Valor_Total    = Convert.ToDecimal(dr.Cells[5].Value.ToString());

                        pedidoItem.Add(lstPedidoItem);

                        //MessageBox.Show("Produto " + lstPedidoItem.Produto.Id + " valor unitário" + lstPedidoItem.Valor_Unitario);
                    }


                    pedidoRepo.InserirPedidoItem(pedido, pedidoItem);
                    MessageBox.Show("Cadastro realizado com sucesso!", "Sucesso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    clienteInserido = 0;
                    this.Close();
                }
                else
                {
                    //Cenário que ocorre no processo de edição

                    // Valida a opção selecionada no combo situação do pedido
                    if (valueSituacaoPedido == 2) // Pago
                    {
                        pedidoUpdate.Data_Pagamento          = Convert.ToDateTime(dtpDataPagamento.Text);
                        pedidoUpdate.Data_Registro_Pagamento = DateTime.Now;
                        pedidoUpdate.Status = situacaoPedido;
                    }
                    else if (valueSituacaoPedido == 3) //Cancelado
                    {
                        pedidoUpdate.Status = situacaoPedido;
                        pedidoUpdate.Motivo_Cancelamento = txtMotivo.Text.Trim();
                        pedidoUpdate.Data_Cancelamento   = DateTime.Now;
                    }

                    pedidoRepo.Alterar(pedidoUpdate);
                    MessageBox.Show("Alteração realizada com sucesso", "Sucesso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    clienteInserido = 0;
                    this.Close();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Erro na operação " + ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }