private void ConfirmMovement()
        {
            OperationResult objOperationResult = new OperationResult();
            MovementBL      objMovementBL      = new MovementBL();
            movementDto     objmovementDto     = new movementDto();

            // Primero se debe guardar todo el movimiento
            if (!SaveMainEntity())
            {
                MessageBox.Show("Hubo errores al guardar el movimiento. No se puede procesar.", "ERROR!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            ;

            if (rbLocal.Checked)
            {
                objmovementDto.i_MotiveTypeId  = 19; //EGRESO POR TRANSFERENCIA DE ALMACENES INTERNOS
                objmovementDto.i_ProcessTypeId = (int)Common.ProcessType.LOCAL;
            }
            else if (rbRemote.Checked)
            {
                objmovementDto.i_MotiveTypeId  = 20; //EGRESO POR TRANSFERENCIA DE ALMACENES EXTERNOS
                objmovementDto.i_ProcessTypeId = (int)Common.ProcessType.REMOTO;
            }

            objmovementDto.v_SupplierId         = null;
            objmovementDto.d_Date               = dtpDate.Value;
            objmovementDto.v_WarehouseId        = ddlWarehouseDestinationId.SelectedValue.ToString();
            objmovementDto.v_RemoteWarehouseId  = ddlWarehouseDestinationId.SelectedValue.ToString();
            objmovementDto.v_ReferenceDocument  = txtDocReference.Text.Trim();;
            objmovementDto.i_IsLocallyProcessed = (int)Common.SiNo.SI;              //El movimiento inicia como no procesado
            objmovementDto.i_MovementTypeId     = (int)Common.MovementType.INGRESO; //(Ingreso, Egreso)

            objMovementBL.ProcessTransfer(ref objOperationResult, objmovementDto, _movementdetailListDto, Globals.ClientSession.i_CurrentExecutionNodeId, int.Parse(ddlNodeDestinationId.SelectedValue.ToString()), _MovementId, Globals.ClientSession.GetAsList());

            //// Analizar el resultado de la operación
            if (objOperationResult.Success == 1)  // Operación sin error
            {
                this.DialogResult = System.Windows.Forms.DialogResult.OK;

                if (objOperationResult.ErrorMessage != null)
                {
                    MessageBox.Show("Informacion :" + System.Environment.NewLine + objOperationResult.ErrorMessage, "INFORMACIÓN!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    MessageBox.Show("Se procesó el movimiento de ingreso satisfactoriamente. Los stocks del Almacén han sido actualizados.", "CORRECTO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                }
                this.Close();
            }
            else  // Operación con error
            {
                MessageBox.Show("Error en operación:" + System.Environment.NewLine + objOperationResult.ErrorMessage, "ERROR!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                // Se queda en el formulario.
            }
        }