/// <summary>
 /// Busca atribui o idmaximo de ordem de compras
 /// </summary>
 /// <param name="model">model com os dados sem o id</param>
 private void PegaIdMaximoOrdemCompra(mOrdemCompra model)
 {
     rOrdemCompra regraOrdemCompra = new rOrdemCompra();
     try
     {
         model.Id_ordem_compra = regraOrdemCompra.BuscaIdMaximo();
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
 private void btnAdicionaItem_Click(object sender, EventArgs e)
 {
     rOrdemCompra regraOrdemCompra = new rOrdemCompra();
     mOrdemCompra modelOrdemCompra = null;
     try
     {
         this.ValidaAdicaoOrdemCompra();
         modelOrdemCompra = this.PegaDadosTelaOrdemCompra();
         if (this._listaOrdemCompra == null)
         {
             this._listaOrdemCompra = new List<mOrdemCompra>();
         }
         this._listaOrdemCompra.Add(modelOrdemCompra);
         this.PopulaDataTableModelOrdemCompra(modelOrdemCompra);
         this.dgItems.DataSource = this._dtSource;
         this.LimpaGrupoOrdemCompra();
     }
     catch (BUSINESS.Exceptions.Compra.BuscaMotorException)
     {
         MessageBox.Show("É necessário busca um motor para compra", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
     }
     catch (BUSINESS.Exceptions.Compra.BuscaPecaException)
     {
         MessageBox.Show("É necessário buscar uma peça para compra", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
     }
     catch (BUSINESS.Exceptions.Compra.CompraQuantidadeVaziaException)
     {
         MessageBox.Show("Quantidade não pode ser vazia", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
         this.txtQtdItem.Focus();
     }
     catch (BUSINESS.Exceptions.Compra.CompraQuantidadeMenorQueUmException)
     {
         MessageBox.Show("Quantidade não pode ser 0(zero)", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
         this.txtQtdItem.Focus();
     }
     catch (Exception ex)
     {
         throw ex;
     }
     finally
     {
         regraOrdemCompra = null;
         modelOrdemCompra = null;
     }
 }
        /// <summary>
        /// Pega os dados da tela e popula o model de Ordem de Compra
        /// </summary>
        /// <returns>model de ordem de compra com dados</returns>
        private mOrdemCompra PegaDadosTelaOrdemCompra()
        {
            mOrdemCompra modelOrdemCompra = new mOrdemCompra();
            rOrdemCompra regraOrdemCompra = new rOrdemCompra();
            try
            {
                modelOrdemCompra.Dat_alt = DateTime.Now;
                modelOrdemCompra.Flg_ativo = true;
                modelOrdemCompra.Id_forn = Convert.ToInt32(this._modelFornecedor.IdFornecedor);
                modelOrdemCompra.Nota_fisc = null;
                modelOrdemCompra.Ultim_preco = null;
                modelOrdemCompra.Qtd = Convert.ToInt32(this.txtQtdItem.Text);
                //Verifica se é uma compra de motor ou peça
                //-----------------------------------------
                if (this.rdbMotor.Checked == true)
                {
                    modelOrdemCompra.Id_motor = Convert.ToInt32(this._modelMotor.IdMotor);
                    modelOrdemCompra.Id_peca = null;
                }
                else
                {
                    modelOrdemCompra.Id_peca = Convert.ToInt32(this._modelPeca.IdPeca);
                    modelOrdemCompra.Id_motor = null;
                }

                return modelOrdemCompra;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                modelOrdemCompra = null;
                regraOrdemCompra = null;
            }
        }
        private void btnAceitar_Click(object sender, EventArgs e)
        {
            rCompra regraCompra = new rCompra();
            mCompra modelCompra = null;
            rOrdemCompra regraOrdemCompra = new rOrdemCompra();
            rCompraOrdemCompra regraCompraOrdemCompra = new rCompraOrdemCompra();
            mCompraOrdemCompra modelCompraOrdemCompra = null;
            try
            {
                this.ValidaDadosNulos();
                //Insere compra
                //-------------
                modelCompra = this.PegaDadosTelaCompra();
                regraCompra.ValidarInsere(modelCompra);

                //Insere ordem Compra
                //-------------------
                foreach (mOrdemCompra modelOrdemCompra in this._listaOrdemCompra)
                {
                    this.PegaIdMaximoOrdemCompra(modelOrdemCompra);
                    regraOrdemCompra.ValidarInsere(modelOrdemCompra);
                    modelCompraOrdemCompra = this.PegaDadosTelaCompraOrdemCompra(Convert.ToInt32(modelCompra.IdCompra), Convert.ToInt32(modelOrdemCompra.Id_ordem_compra));
                    regraCompraOrdemCompra.ValidarInsere(modelCompraOrdemCompra);
                }
                this.btnLimpar_Click(null, null);
            }
            catch (BUSINESS.Exceptions.Compra.OrdemCompraSemDadosException)
            {
                MessageBox.Show("É necessário adicionar itens para a compra", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
            }
            catch (BUSINESS.Exceptions.Compra.CompraValorVazioException)
            {
                MessageBox.Show("É Necessário ter um valor de compra", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
                this.txtValor.Focus();
            }
            catch (BUSINESS.Exceptions.Compra.DataCompraVaziaException)
            {
                MessageBox.Show("É Necessário ter a data de Compra", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
                this.txtDataCompra.Focus();
            }
            catch (BUSINESS.Exceptions.Validacoes.DataInvalidaException ex)
            {
                MessageBox.Show("Erro no " + ex.TipoErro.ToString() + " da Data: " + ex.DataErrada, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
                this.txtDataCompra.Focus();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
            }
            finally
            {
                regraCompra = null;
                modelCompra = null;
                regraOrdemCompra = null;
                regraCompraOrdemCompra = null;
                modelCompraOrdemCompra = null;
            }
        }