protected void grdParcel_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        //find objects
        //Parcel parcel = DataSource[e.RowIndex];
        var accountManager = new AccountManager(this);

        var txtEffectedDate = (grdParcel.Rows[e.RowIndex].FindControl("txtEffectedDate") as Date);
        var txtDueDate = (grdParcel.Rows[e.RowIndex].FindControl("txtGrdDueDate") as Date);
        var ucCurrFieldEffectedAmount = (grdParcel.Rows[e.RowIndex].FindControl("txtEffectedAmount") as CurrencyField);
        var txtIdentificationNumber = (grdParcel.Rows[e.RowIndex].FindControl("txtIdentificationNumber") as TextBox);
        var ddlCboAccountName = (grdParcel.Rows[e.RowIndex].FindControl("cboAccountName") as DropDownList);
        var ddlcboPaymentMethod = (grdParcel.Rows[e.RowIndex].FindControl("cboPaymentMethod") as DropDownList);
        var lblAmount = (grdParcel.Rows[e.RowIndex].FindControl("lblAmount") as Label);

        if (DataSource[e.RowIndex].ParcelId != 0)
        {
            // Update Mode, there is an object attached

            DataSource[e.RowIndex].Account = null;
            DataSource[e.RowIndex].PaymentMethod = null;
            DataSource[e.RowIndex].FinancierOperation = null;

            if (!String.IsNullOrEmpty(ddlCboAccountName.SelectedValue))
                DataSource[e.RowIndex].Account = accountManager.GetAccount(Convert.ToInt32(ddlCboAccountName.SelectedValue), Page.Company.CompanyId);

            if (!String.IsNullOrEmpty(ddlcboPaymentMethod.SelectedValue))
            {
                DataSource[e.RowIndex].PaymentMethod = accountManager.GetPaymentMethod(Convert.ToInt32(ddlcboPaymentMethod.SelectedValue));

                if (Convert.ToInt32(ddlcboPaymentMethod.SelectedValue) == PaymentMethod.Boleto)
                {
                    var financierOperation = accountManager.GetFinancierOperationBoleto(Page.Company.CompanyId);

                    if (financierOperation != null)
                        DataSource[e.RowIndex].FinancierOperation = financierOperation;
                }
            }
        }
        else
        {
            // Insert mode, so there is no object Attached

            DataSource[e.RowIndex].AccountId = null;
            DataSource[e.RowIndex].PaymentMethodId = null;
            DataSource[e.RowIndex].IdentificationNumber = String.Empty;

            if (!String.IsNullOrEmpty(ddlCboAccountName.SelectedValue))
                DataSource[e.RowIndex].AccountId = accountManager.GetAccount(Convert.ToInt32(ddlCboAccountName.SelectedValue), Page.Company.CompanyId).AccountId;

            if (!String.IsNullOrEmpty(ddlcboPaymentMethod.SelectedValue))
            {
                DataSource[e.RowIndex].PaymentMethodId = Convert.ToInt32(ddlcboPaymentMethod.SelectedValue);

                if (Convert.ToInt32(ddlcboPaymentMethod.SelectedValue) == PaymentMethod.Boleto)
                {
                    var financierOperation = accountManager.GetFinancierOperationBoleto(Page.Company.CompanyId);

                    if (financierOperation != null)
                        DataSource[e.RowIndex].FinancierOperationId = financierOperation.FinancierOperationId;
                }
            }
        }

        if (!String.IsNullOrEmpty(txtIdentificationNumber.Text))
            DataSource[e.RowIndex].IdentificationNumber = txtIdentificationNumber.Text;

        DataSource[e.RowIndex].EffectedAmount = Convert.ToDecimal(ucCurrFieldEffectedAmount.CurrencyValue);
        DataSource[e.RowIndex].Amount = Convert.ToDecimal(lblAmount.Text.Remove(0, 3));
        DataSource[e.RowIndex].DueDate = txtDueDate.DateTime.Value;

        DataSource[e.RowIndex].EffectedDate = txtEffectedDate.DateTime;
        if (txtEffectedDate.DateTime.HasValue)
        {
            if (txtEffectedDate.DateTime.Value < DateTime.MinValue.Sql2005MinValue() || txtEffectedDate.DateTime.Value > DateTime.Now)
            {
                Page.ShowError(Exception.DateBiggerThanCurrentDate);
                e.Cancel = true;
                return;
            }
        }

        if (txtEffectedDate.DateTime.HasValue && ucCurrFieldEffectedAmount.CurrencyValue == 0)
        {
            Page.ShowError("Parcela não pode ser quitada com valor 0(zero)!");
            e.Cancel = true;
            return;
        }

        BindGrid(-1);
    }